2011-10-06 4 views
3

UIImage 대신 샘플 버퍼를 배열로 저장하여 나중에 변환하려고합니다. 이것은 이미지 캡처 속도를 높이고 메모리 경고를 얻지 못할 수도 있습니다. 배열에 저장하고 [self imageFromSampleBuffer : sampleBuffer]를 호출하기 위해 다시 사용하는 방법을 알아낼 수 없습니다. 이런 식으로 시도했지만 어떻게 데이터를 다시 CMSampleBufferRef 개체로 변환합니까?array (AVFoundation)에 sampleBuffer 저장

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
    didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
    fromConnection:(AVCaptureConnection *)connection { 
// Create a UIImage from the sample buffer data 
//  UIImage *image = [self imageFromSampleBuffer:sampleBuffer]; 
//  [arrCaptures addObject:image]; 

[arrImageBuffer addObject:[NSData dataWithBytes:sampleBuffer length:sizeof(sampleBuffer)] ];} 

답변

5

왜 CFArray를 사용하고 거기에 CMSampleBufferRef 개체를 직접 두는 것이 좋을까요?

+0

고마워, 글쎄, 난 정말 그걸 어떻게 알아낼 수 없습니다. NSValue 객체에 넣으려고했는데 ALMOST가 제대로 작동하도록했습니다. 나는 할 숙제가 있다고 생각한다. – Snilleblixten

+0

CFMutableArray를 만든 다음 CFArrayAppendValue (arr, sampleBuffer)를 실행 해보십시오. http://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFMutableArrayRef/Reference/reference.html#//apple_ref/c/func/CFArrayAppendValue – Icydog

+0

\t와 함께 작동하는 것 같습니다. \t CFArrayAppendValue (arrCFImageBuffer , sampleBuffer); 그러나 나는 그것을 되 찾을 방법을 찾지 못했습니다. 이 작동하지 않습니다 : \t \t CMSampleBufferRef imageBuffer = CFArrayGetValueAtIndex (arrCFImageBuffer, currImageIdx); – Snilleblixten

4

CFArray를 사용할 수 있지만 CMSampleBufferRef가 유지되지 않고 "captureOutput : didOutputSampleBuffer : fromConnection :"이 메모리 풀을 사용하고 메모리를 해제하지 않으면 새 샘플을 보내지 않는다는 것을 기억해야합니다. 그래서 당신이 읽을 수있는대로 단지 13 개의 샘플을 얻습니다 : captureOutput:didOutputSampleBuffer:fromConnection: