android.view.Surface
Android ネイティブ C++ コードで、デコードされたビデオ フレームをオブジェクトに描画する必要があります。
これを行う一般的な方法は、インターフェイスを実装しGLSurfaceView.Renderer
、からネイティブ メソッドを呼び出すことだと理解していますonDrawFrame()
。しかし、それを使用することはできません。Surface オブジェクトをネイティブ メソッドに渡して、そこから処理する必要があります。
クロスプラットフォームであるため、OpenGL ES API を使用してすべてのレンダリング ジョブを実行する予定です。しかし、Surface オブジェクトがどこにあるのかわかりません。
が使用されている例をいくつか見てきましたANativeWindow_fromSurface()
。OpenGL を使用せざるを得ない場合は、そのようにすることもできたと思います。
では、Surface オブジェクトをネイティブ コード内のどこに「設定」すれば、シーン フレームをレンダリングできるのでしょうか?
編集:わかりました、私はEGL standardを認識していなかったと思います。これは、提示されたケースで必要なもののようです。
ただし、 Android 固有の API にアクセスする必要なく、android.view.Surface
オブジェクトを EGL コンテキストによって処理される構造に「マップ」または「変換」する方法をまだ探しています。EGLNativeWindowType
前もって感謝します。