4

我正在将我的代码从静止图像应用程序转移到生成电影文件的应用程序。但是,以下代码存在问题,其中最终输出是使用 GPUImageLookupFilter 过滤器的黑色电影屏幕。谁能发现我做错了什么或我可能错过了什么。

Header File Sample
GPUImagePicture *lookupImageSource;
GPUImageOutput<GPUImageInput> *filter;
GPUImageMovie *movieFile;
GPUImageMovieWriter *movieWriter;
@property(nonatomic,strong) GPUImagePicture *lookupImageSource;



Main File
filter = [[GPUImageFilterGroup alloc] init];

            self.lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"ExtremeVintage1.png"]];

            GPUImageLookupFilter * filterLookup = [[GPUImageLookupFilter alloc] init];

            [self.lookupImageSource addTarget:filterLookup];

            [self.lookupImageSource processImage];

            [(GPUImageFilterGroup *)filter addFilter:filterLookup];



            [(GPUImageFilterGroup *)filter setInitialFilters:[NSArray arrayWithObject:filterLookup]];
            [(GPUImageFilterGroup *)filter setTerminalFilter:filterLookup];


            [movieFile addTarget:filter];

谢谢

**** 更新 *****

新代码

self.lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage    imageNamed:@"ExtremeVintage1.png"]];
            [self.lookupImageSource processImage];

            filter = [[GPUImageLookupFilter alloc] init];
            [lookupImageSource addTarget:filter];

            [movieFile addTarget:filter];

在此处输入图像描述

4

1 回答 1

5

这是一个启用 ARC 的项目吗?如果是这样,您不会在您设置上述方法的方法之后对您的 lookupImageSource GPUImagePicture 实例进行强引用。退出该方法后,提供查找的 GPUImagePicture 将被释放,因此您将丢失查找纹理。

尝试使 lookupImageSource 成为您的类的强持有的实例变量,以便它在上面的设置代码之外持续存在。

于 2013-08-06T15:50:33.590 回答