2012-01-03 25 views
3

誰もこの機能を説明することができますか?CVOpenGLESTextureCacheCreateTextureFromImageレポート「IOSurfaceイメージ(テクスチャ)の作成に失敗しました」

iPad 2、iOS 5.0.0、Xcode 4.2、ARCプロジェクト。

私のプロジェクトは、カメラからの入力を受け取り、さまざまな画像と混合して最終的にすべてを画面に表示します。

メモリの警告が表示されない限り、メモリリークのない無期限に動作します。

didReceiveMemoryWarningの後、この関数の最初の5回は "IOSurfaceイメージ(テクスチャ)を作成できませんでした"というメッセージが表示されません。その後、画面が黒くなり、プログラムが応答しなくなります。私はホームキーを押して、アプリを殺すことができます。

私の呼び出しは次のようになります。

err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, 
                _videoTextureCache, 
                pixelBuffer, 
                NULL, 
                GL_TEXTURE_2D, 
                GL_RED_EXT, 
                _textureWidth, 
                _textureHeight, 
                GL_RED_EXT, 
                GL_UNSIGNED_BYTE, 
                0, 
                &_lumaTexture); 

_videoTextureCacheはもともとこれで作成されます。

//-- Create CVOpenGLESTextureCacheRef for optimal CVImageBufferRef to GLES texture conversion. 
    CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, (__bridge void *)_context, NULL, &_videoTextureCache); 
    if (err) 
    { 
     NSLog(@"Error at CVOpenGLESTextureCacheCreate %d", err); 
     return; 
    } 

_videoTextureCacheは次のように定義されています。

CVOpenGLESTextureCacheRef _videoTextureCache;  

は、私が何かを呼び出す必要がありますか私はメモリの警告を取得したときに割り当てられたメモリを解放する? nil_videoTextureCacheすることができます(したがって、ARCはメモリをクリーンアップできます)。

私が今までに見つけた文書は、.hのコメントであり、実際には関数が宣言されていて、実際には役に立たないようです。

他のドキュメントは誰かが知っていますか?

-Ken

+0

これが関連している(ちょうど色が適切に反転)として

ピクセルフォーマットは幸せでしたか? https:// github。com/BradLarson/GPUImage/issues/220 – Abhinit

答えて

3

あなたは、もはやそれを必要としないとき、あなたはあなたのCVOpenGLESTextureCacheRefCVOpenGLESTextureRefCFRelease()を呼び出していますか?

アップルソースコード:

1

が古い質問を復活させることを望んでいないが、私はちょうど上のたとえ(同じ問題を把握しようと日々を過ごしてきましたios 8.4)、グーグルでこの問題に遭遇し続けます。

私は最後にinternalFormatGL_RGBAであることがわかった。私はGL_BGRAを使用していましたが、これはIOSで使用されている内部形式なので、私はBGRAとしてビデオをデコードしていましたが、 "これはGL_BGRAをデコードする方法です"と言われましたが、GL_RGBAをドキュメント/ GL_RGBAまたはGL_BGRA

+0

ありがとうございました。あなたのご協力は非常に便利です。 –

関連する問題