내가 지금 여기의 CGImage에서 CVPixelBufferRef를 만들기 위해 노력하고는 방법 :CGContextDrawImage 충돌
- (CVPixelBufferRef) pixelBufferFromCGImage: (CGImageRef) image
{
CGImageRetain(image);
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey,
[NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,
nil];
CVPixelBufferRef pxbuffer = NULL;
CVPixelBufferCreate(kCFAllocatorDefault, CGImageGetWidth(image),
CGImageGetHeight(image), kCVPixelFormatType_32ARGB, (CFDictionaryRef) options,
&pxbuffer);
CVPixelBufferLockBaseAddress(pxbuffer, 0);
void *pxdata = CVPixelBufferGetBaseAddress(pxbuffer);
CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(pxdata, CGImageGetWidth(image),
CGImageGetHeight(image), 8, 4*CGImageGetWidth(image), rgbColorSpace,
kCGImageAlphaNoneSkipFirst);
CGContextRetain(context);
CGContextConcatCTM(context, CGAffineTransformMakeRotation(0));
CGContextDrawImage(context, CGRectMake(0, 0, CGImageGetWidth(image),
CGImageGetHeight(image)), image);
CGColorSpaceRelease(rgbColorSpace);
CGContextRelease(context);
CVPixelBufferUnlockBaseAddress(pxbuffer, 0);
CGContextRelease(context);
CGImageRelease(image);
return pxbuffer;
}
나는 자주이 메소드를 호출, 그것은 비디오 프레임, 초당 25을 생성하는 것입니다. 이 대부분의 시간을 잘 작동하지만 어떤 점에서 그것은 코드의이 라인에 충돌 : I`ve 메모리 사용 및 메모리 누수를 테스트하고 모든 것이 잘 솔기하지만, 호감이 STIL 발생
CGContextDrawImage(context, CGRectMake(0, 0, CGImageGetWidth(image),
CGImageGetHeight(image)), image);
.
충돌 스택 : 스레드 (6) 추락 :
0 ImageIO 0x39270806 CGImageReadGetBytesAtOffset + 34
1 ImageIO 0x392707d6 CGImageReadSessionGetBytes + 22
2 ImageIO 0x39280c3c fill_input_buffer + 148
3 ImageIO 0x3928003a read_markers + 154
4 ImageIO 0x3927fd82 consume_markers + 34
5 ImageIO 0x3927fbd2 _cg_jpeg_consume_input + 66
6 ImageIO 0x3927fb62 _cg_jpeg_read_header + 38
7 ImageIO 0x39292782 copyImageBlockSetJPEG + 2346
8 ImageIO 0x3928953e ImageProviderCopyImageBlockSetCallback + 510
9 CoreGraphics 0x38e0b9d6 CGImageProviderCopyImageBlockSetWithOptions + 158
10 CoreGraphics 0x38e0b66a img_blocks_create + 370
11 CoreGraphics 0x38e07a98 img_data_lock + 1488
12 CoreGraphics 0x38e06d2a CGSImageDataLock + 126
[http://stackoverflow.com/questions/10774392/cgcontextdrawimage-crashes] [1] 가 pxdata을 유지하려고 [1] : http://stackoverflow.com/questions 귀하의 조언에 따라/10774392/cgcontextdrawimage-충돌 – zengcity