iOS项目上的GPUImage:CVPixelBufferCreate错误。

时间:2014-05-27 21:03:11

标签: ios objective-c gpuimage

我试图使用这个很棒的库,但我遇到了问题我无法修复它。我花了最近5个小时尝试,但我完全没有想法。

我使用CocoaPods添加了库,它给了我一个错误,所以我把它添加为一个静态库(想到这个问题与库集成相关的东西)并且我也无法使它工作,我有同样的错误。我正在尝试应用自定义过滤器。这是我的应用自定义过滤方法:

- (id) applyLookupImage:(NSString*) filename
{
    UIImage *filteredimage = [self duplicate];

    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:filteredimage];
    GPUImagePicture *lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:filename]];
    GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init];
    [stillImageSource addTarget:lookupFilter];
    [lookupImageSource addTarget:lookupFilter];

    [stillImageSource processImage];
    [lookupImageSource processImage];
    [lookupFilter imageFromCurrentFramebuffer];
    filteredimage = [lookupFilter imageFromCurrentFramebuffer];

    return filteredimage;
}

执行此方法后,我收到以下错误:

  

FBO大小:0.000000,0.000000 2014-05-27 17:51:33.507 * 断言   失败 - [GPUImageFramebuffer generateFramebuffer]   /GPUImage/framework/Source/GPUImageFramebuffer.m:156

这是异常引发的行:

CVReturn err = CVPixelBufferCreate(kCFAllocatorDefault, (int)_size.width, (int)_size.height, kCVPixelFormatType_32BGRA, attrs, &renderTarget);
if (err)
{
    NSLog(@"FBO size: %f, %f", _size.width, _size.height);
    NSAssert(NO, @"Error at CVPixelBufferCreate %d", err);
}

我在xCode5.1上

任何想法?!?!

谢谢!

1 个答案:

答案 0 :(得分:2)

如果你使用的是最新版本的框架,那么你就错过了

[lookupFilter useNextFrameForImageCapture];

后面

[lookupImageSource addTarget:lookupFilter];

-imageFromCurrentFramebuffer需要返回非零值。该调用会在图像捕获期间触发为该过滤器保留后备帧缓冲区,否则该过滤器的帧缓冲区将立即返回到缓存中。

另外,请确保您的输入UIImages都不是nil且尺寸非零。