首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复使用过滤器会导致GPUImage中的黑屏

重复使用过滤器会导致GPUImage中的黑屏
EN

Stack Overflow用户
提问于 2012-11-05 09:49:47
回答 1查看 1.3K关注 0票数 3

我创建了一组GPUImageToneCurveFilter并将其存储在一个数组中。

首先,我正在使用GPUImageVideoCamera为所有过滤器创建预览视频视图,在选择任何筛选器之后,我将尝试添加该筛选器详细视图(GPUImageStillCamera )。但我会有黑屏的。

如果我重新创建新的过滤器,而不是重用,然后添加到GPUImageStillCamera,它可以很好地工作。任何解决办法。

预览视图创建代码:

代码语言:javascript
复制
    -(void)setUpUI{

    self.videoView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill;
    }




-(void)addFilter:(id)filter
        {
        // For thumbnails smaller than the input video size, we currently need to make them render at a smaller size.
        // This is to avoid wasting processing time on larger frames than will be displayed.
        // You'll need to use -forceProcessingAtSize: with a zero size to re-enable full frame processing of video.
        self.filter = filter;
        [filter forceProcessingAtSize:self.videoView.sizeInPixels];
        [[CameraProvider sharedProvider] addTarget:filter];
        [filter addTarget:self.videoView];

        [[CameraProvider sharedProvider] startCameraCapture];
        self.titleLabel.text = [filter fliterName];
        }



 -(void)stopCamera
        {
        [self.filter removeAllTargets];
        [[CameraProvider sharedProvider] removeTarget:self.filter];
        [[CameraProvider sharedProvider] stopCameraCapture];

        }



-(IBAction)selectionDone:(id)sender { 

            [[CameraProvider sharedProvider] removeInputsAndOutputs]; 
             self.selectedFilter(self.filter);

     }


 // Adding to detail view (GPUImageStillCamera0:





  - (void)didSelectFilter:(id)newfilter;
        {
        NSLog(@"fliter");
        // newfilter = [[GPUImageToneCurveFilter alloc] initWithACV:@"california-gold-rush.acv"];
        [newfilter prepareForImageCapture];
        [stillCamera addTarget:newfilter];
        [newfilter addTarget:self.imageView];

        [stillCamera startCameraCapture];
    }
EN

回答 1

Stack Overflow用户

发布于 2012-11-21 14:47:13

如果我重新创建新的过滤器,而不是重用,然后添加到GPUImageStillCamera,它可以很好地工作。

我不想说显而易见的话,但解决方案是在需要时重新创建过滤器,而不是尝试重用它。

从该数组中需要的是“获取给定索引的筛选器对象的方法”。获取过滤器对象的方法有很多种。其中之一是预先分配数组和索引到数组中。另一种方法是编写一个函数,给定一个索引,返回一个新创建的对象,该对象的类型与从数组中检索的对象相同。与其拥有一个过滤器数组,不如使用一个工厂数组作为过滤器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13229544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档