У меня возникла проблема с использованием CGBitmapContextCreateImage в приложении для iPhone.
Я использую AV Foundation Framework для захвата кадров камеры с помощью этого метода:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
    CVPixelBufferLockBaseAddress(imageBuffer,0);
    uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer);
    size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
    size_t width = CVPixelBufferGetWidth(imageBuffer);
    size_t height = CVPixelBufferGetHeight(imageBuffer);
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef newContext = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
    CGImageRef newImage = CGBitmapContextCreateImage(newContext);
    CVPixelBufferUnlockBaseAddress(imageBuffer,0);
    CGContextRelease(newContext);
    CGColorSpaceRelease(colorSpace);
    UIImage *image= [UIImage imageWithCGImage:newImage scale:1.0 orientation:UIImageOrientationRight];
    self.imageView.image = image;
    CGImageRelease(newImage);
} 
Тем не менее, я вижу ошибку в консоли отладки в качестве ее прогонов:
<Error>: CGDataProviderCreateWithCopyOfData: vm_copy failed: status 2.
Кто-нибудь когда-нибудь видел это? Прокомментировав строки, я сузил строку проблемы:
CGImageRef newImage = CGBitmapContextCreateImage(newContext);
но я не уверен, как избавиться от него. Функционально, он отлично работает. Таким образом, создается CGImage, но мне нужно знать, что вызывает ошибку, поэтому оно не влияет на другие части.
Большое спасибо. Любая помощь/советы были бы замечательными! Бретт