2012-11-05 85 views
3

我創建了一組GPUImageToneCurveFilter並存儲在一個數組中。重新使用濾鏡在GPUImage中導致黑屏

首先,我在創建預覽視頻視圖後,使用GPUImageVideoCamera篩選器,我想要添加濾鏡細節視圖(GPUImageStillCamera)。但我爲此得到了黑屏。

如果我重新創建新的過濾器,而不是重新使用,然後添加到GPUImageStillCamera它工作正常。 任何解決方案。

預覽視圖中創建代碼:

-(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]; 
    } 
+0

即使我在這裏創建了問題https://github.com/BradLarson/GPUImage/issues/598但仍然如此回答。 – ShivaPrasad

回答

0

如果我重新創建而不是重用新的過濾器,然後添加到GPUImageStillCamera它做工精細。

我討厭陳述明顯的問題,但解決方案是在需要時重新創建過濾器,而不是嘗試重用過濾器。

你想從該數組中得到什麼是「獲取給定索引的過濾器對象的一種方法」。獲取該過濾器對象有很多種方法。其中之一是預先分配數組和索引到數組中。另一種方法是編寫一個函數,該函數在給定索引的情況下返回與您從數組中檢索到的類型相同的新創建的對象。而不是有一個過濾器數組,使用過濾器工廠數組。

+0

我重新創建和使用,但我關心的是關於重複使用可以節省內存和不需要的娛樂代碼..感謝您的建議 – ShivaPrasad

+0

我不認爲着色器會使用太多的內存相比,說輸入/輸出紋理,所以你應該罰款。至於不想要的娛樂,我在滑塊移動中重新創建着色器,速度很慢。我目前也正在獲取這個黑色圖像問題。 –

相關問題