AVAssetWriterInputPixelBufferAdaptor управление памятью - PullRequest
6 голосов
/ 23 декабря 2011

Я записываю некоторые кадры в видео с помощью AVAssetWriterInputPixelBufferAdaptor, и когда я пишу много кадров, мое приложение вылетает из-за выделения памяти. Как я могу предотвратить это? Вот код:

AVAssetWriterInput *writerInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings];  

NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                                       [NSNumber numberWithInt:kCVPixelFormatType_32ARGB], kCVPixelBufferPixelFormatTypeKey, nil];

 AVAssetWriterInputPixelBufferAdaptor *adaptor = [AVAssetWriterInputPixelBufferAdaptor           
 assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput  
 sourcePixelBufferAttributes:sourcePixelBufferAttributesDictionary]; 


CVPixelBufferRef buffer = NULL;
                buffer = (CVPixelBufferRef)[self pixelBufferFromCGImage:[tmpImg CGImage] size:size];
                if (buffer)
                {
                    if(![adaptor appendPixelBuffer:buffer withPresentationTime:presentTime])
                        NSLog(@"FAIL");
                    else
                        NSLog(@"Success:%d",i);
                        CFRelease(buffer);

                }

При использовании Xcode Instruments утечка возникает в

if(![adaptor appendPixelBuffer:buffer withPresentationTime:presentTime])

(AVAssetWriterInputPixelBufferAdaptor)

Может действительно использовать некоторую помощь или указатель на рабочий пример. Спасибо!

...