

GPUImageで、画像（縦960x横1280）10枚に連続でセピアフィルターをかけています。  
実行する約40MBぐらいメモリを消費し、確保された状態が続きメモリリークします。

以下の関数で実装しているんですが、戻り値を画面のUIImageView.imageに代入は行っていません。  
ただ、以下の関数を10回実行するだけで、メモリリークします。

フィルタ処理が終わると、直ぐにメモリを開放したいのですが、やり方がわかりません。  
アドバイスをお願い致します。

[code]

    - (UIImage *)applyFilter:(UIImage *)target {
      GPUImagePicture *imagePicture = [[GPUImagePicture alloc] initWithImage:target];
      GPUImageSepiaFilter *sepiaFilter = [[GPUImageSepiaFilter alloc] init];
      [imagePicture addTarget:sepiaFilter];
      [imagePicture processImage];
      UIImage *result = [sepiaFilter imageFromCurrentlyProcessedOutputWithOrientation:target.imageOrientation];
      [imagePicture removeAllTargets];
      [sepiaFilter removeAllTargets];
      return result;
    }
    
[/code]


CC BY-SA 3.0
2015-02-23T00:35:13.890
6935
2016-05-26T12:55:29.487
2015-02-23T02:29:48.310
7214
7212
question
objective-c
GPUImageでフィルターをかけるとメモリリークします


下記の環境で動作をチェックしましたが、自分の環境では、メモリリークが発生しませんでした。  
forで回して、Arrayに格納して、全てがセピア加工されているのを確認しました。

環境  
Xcode6.1.1  
iPhone6  
iOS8.1  
GPUImage (0.1.6)

[code]

    GPUImagePicture *imagePicture = [[GPUImagePicture alloc] initWithImage:target];
    GPUImageSepiaFilter *sepiaFilter = [[GPUImageSepiaFilter alloc] init];
    [imagePicture addTarget:sepiaFilter];
    
    //下記を追加する必要があるようです。
    [sepiaFilter useNextFrameForImageCapture];
    [imagePicture processImage];
    
    //最新では、imageFromCurrentFramebufferへ変更されているようです。
    UIImage *result = [sepiaFilter imageFromCurrentFramebuffer];
    [imagePicture removeAllTargets];
    [sepiaFilter removeAllTargets];
    
[/code]


CC BY-SA 3.0
2015-02-23T01:29:33.953
6937
2015-04-24T15:31:21.590
2015-04-24T15:31:21.590
49
4551
6935
answer