Cocoa 将GPU核心图像过滤器应用于AVPlayerLayer是否总是导致高CPU使用率?

Cocoa 将GPU核心图像过滤器应用于AVPlayerLayer是否总是导致高CPU使用率?,cocoa,core-graphics,core-image,Cocoa,Core Graphics,Core Image,OSX桌面应用程序是用Obj-C编写的 我有一个视频播放器应用程序,我想对播放的视频应用一个CIFilter(特别是CIColorMap)。我已经创建了一个自定义层视图,其中包含一个层的“堆栈”,这样我就可以直观地对多个视频进行分层。视频被添加为AVPlayerLayer,然后我将CIfilter应用于整个堆栈的父层,这将过滤所有内容 这是可行的,但是如果没有应用过滤器,我的CPU使用率是1-5%,应用过滤器后,CPU使用率会跃升到25% CIFilter *colorMapFilter = [

OSX桌面应用程序是用Obj-C编写的

我有一个视频播放器应用程序,我想对播放的视频应用一个CIFilter(特别是CIColorMap)。我已经创建了一个自定义层视图,其中包含一个层的“堆栈”,这样我就可以直观地对多个视频进行分层。视频被添加为AVPlayerLayer,然后我将CIfilter应用于整个堆栈的父层,这将过滤所有内容

这是可行的,但是如果没有应用过滤器,我的CPU使用率是1-5%,应用过滤器后,CPU使用率会跃升到25%

CIFilter *colorMapFilter = [CIFilter filterWithName:@"CIColorMap"];
[colorMapFilter setValue:colormapImage forKey:@"inputGradientImage"];
[baseLayer setFilters:[[NSMutableArray alloc] initWithArray:@[colorMapFilter]]];
我已使用CI_PRINT_TREE验证过滤器是否应用于GPU:

我还分析了代码,可以看出问题出在core image的内部:


但现在我的知识已经达到了极限。CPU使用率增加25-30%对我来说似乎相当高,特别是当我认为过滤器是在GPU上运行的时候。我是做错了还是这是正常的行为

不是特别科学,但我认为答案是肯定的,因为苹果自己的Photobooth应用程序使用了类似的CPU,有没有“红外”过滤器,我假设是彩色地图过滤器。我仍然不确定这是从哪里来的。我会继续调查的。