gpt4 book ai didi

iphone - "Could not load the kernel"启动相机 session 并尝试进行一些实时图像过滤

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:12 25 4
gpt4 key购买 nike

我正在尝试像 Instagram 和 Path 那样做一些实时图像过滤。我大量实现了这种方法:

-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {

我使用了相机 session 和 CoreImage 框架(我没有直接使用 OpenGL)。大多数时候,我的应用程序运行得非常愉快,没有崩溃或打嗝。

但是,当我的应用程序在屏幕上播放一些 UIView 动画时,我尝试启动实时过滤相机 session 。我会在实时过滤区域看到黑屏。此外,控制台会重复打印类似这样的内容:

Invalid shader program, probably due to exceeding hardware resources

和:

Could not load the kernel!

当发生此类错误时,我观察到我可以通过简单地重新初始化并重新启动我的相机 session 来修复它。因此,只要我的代码在运行时得到通知,我就可以通过让代码进行运行时检查来轻松解决问题,如果发生这种情况,则重新启动相机 session 。

但是有一个很大的问题,当出现这样的错误时,我的代码不会得到通知。没有回调,没有崩溃,没有异常,没有奇怪的 nil 指针。

有人可以帮忙吗?

最佳答案

有问题的“内核”不是 iOS 内核,而是 OpenCL 内核。它出现在 OpenCL.framework 中(在 OS X 中是公共(public)的,但在 iOS 中是私有(private)的,从 iOS 5 开始可用)。因为它是私有(private)的,你很可能被困在这里。初始化 OpenCL 确实占用了大量的系统资源。一个好的方法是在 UIView 动画中通过按住它来相互排除(互斥)对屏幕的访问。

希望对您有所帮助,

TG

关于iphone - "Could not load the kernel"启动相机 session 并尝试进行一些实时图像过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8602421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com