У меня есть фрагмент кода моего приложения, в котором я получаю сообщение об ошибке, из-за которого я понятия не имею, в чем проблема, и эта ошибка возникает, когда я открываю камеру устройства и начинаю получать кадры захвата. Странная вещь здесь, это работает, но получает ошибку ниже в короткое или долгое время захвата началось.
Ошибка: «Поток 1: EXC_BAD_ACCESS (код = 1, адрес = 0xN)», где «N» - гипотетический шестнадцатеричный адрес памяти.
Код:
- (void)imageToBuffer:(CMSampleBufferRef)source
{
NSData *data;
CVImageBufferRef buffer = CMSampleBufferGetImageBuffer(source);
CVPixelBufferLockBaseAddress(buffer, 0);
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(buffer);
size_t height = CVPixelBufferGetHeight(buffer);
void *bufferSrc = CVPixelBufferGetBaseAddress(buffer);
data = [NSData dataWithBytes:bufferSrc length:bytesPerRow * height];
CVPixelBufferUnlockBaseAddress(buffer, 0);
[self.delegate didReceivedFrame:data];
}
@end
#pragma mark - AVCaptureVideoDataOutputSampleBufferDelegate implementation
@implementation AVCaptureManager (AVCaptureVideoDataOutputSampleBufferDelegate)
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
dispatch_async(dispatch_get_main_queue(), ^{
[self imageToBuffer:sampleBuffer];
});
}
Эта ошибка обычно возникает в строке:
CVPixelBufferLockBaseAddress(buffer, 0);
Есть идеи? Спасибо!