2014-09-06 182 views
1

我正在使用GPUImage库开发iOS相机应用程序。iOS应用程序崩溃与[GPUImageContext presentBufferForDisplay]

我发现GPUImageContext有时会崩溃。 我注意到它通过Crashlytics Crash报告, 和应用程序崩溃在GPUImageContext.m行196,方法。

- (void)presentBufferForDisplay; 
{ 
    [self.context presentRenderbuffer:GL_RENDERBUFFER]; 
} 

我确认下面的问题,但我支持下面的情况。
Mysterious app crash with OpenGL

有没有人提出这次事故的原因? 我收到崩溃报告,大多数崩溃(90%)出现在iPod中。

+0

解决这个问题?我有同样的问题。 – 2015-08-10 09:47:12

+0

我无法解决这个问题,所以我使用AVFoundation API来避免崩溃。 – 2015-08-10 09:52:01

+1

我得到了答案,我们必须停止应用程序在后台进行电影处理。 – 2015-08-10 13:29:40

回答

3

当您的应用程序在后台运行(暂停)时,您根本无法访问OpenGL ES。 GPUImage使用OpenGL ES处理它所做的一切。您必须确保应用程序完成向后台转换之前所做的所有GPUImage工作(过滤视频,处理图像)。

您需要侦听UIApplicationWillResignActiveNotification或填写相关代表回调以转换到背景,并在那里暂停任何相机捕捉(通过相机输入上的-pauseCameraCapture方法)或等待任何处理完成(我相信一个到GPUImage串行调度队列的同步调度将解决这个问题)。

有关此问题的相关讨论可以在此处的GitHub问题页面上找到:https://github.com/BradLarson/GPUImage/issues/197以及几个相关问题。