有时在iOS应用中未调用示例缓冲区委托

时间:2019-02-27 10:37:47

标签: ios cmsamplebuffer

我制作了一个示例项目,该项目在每个项目中都使用示例缓冲区。但后来我将这些文件添加到现有项目中。

然后,我介绍了videoController。开头captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer被调用,但此后不被调用。

我不知道这是否与内存使用量有关,但这是215MB。
我还通过重写didReceiveMemoryWarning方法检查了内存警告,但是没有调用它。

- (void)captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
dispatch_async( dispatch_get_main_queue(), ^{
   CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
   CGFloat frame_height = CVPixelBufferGetWidth(pixelBuffer);

   CGRect vRect = CGRectMake(self.v.frame.origin.y * frame_height,
                            self.v.frame.origin.x ,
                            self.v.frame.size.height ,
                            self.v.frame.size.width);
});

}

dispatch_async中创建vRect会导致以下情况:

  

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xeba6d0dd0)

当我不使用dispatch_async编写此代码时,几秒钟后不会调用captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer

0 个答案:

没有答案