ここの多くの投稿にあるコードを基本的に使用して、ビデオをテクスチャにレンダリングするアプリケーションを作成しました。オリジナルは、ここにあるいくつかの nVidia サンプル (VideoSurfaceView) から来ていると思います: Using SurfaceTexture in Android
この例は、モバイル デバイスとタブレット (両方とも Tegra ベース) で完全に正常に動作します。その後、MALI 400 ベースの Android システム (Minix Neo5) で同じコードを試してみましたが、ビデオが再生されていることがわかりますが、主に黒い画面にゴミが表示されます (わずか 3 または 4 行)。
OpenGL ES トレーサーを使用して、SurfaceTexture からテクスチャ自体にコピーされたものを確認しようとしましたが、トレーサーはそれを正しく表示できないようです (tegra システムでも tegra デバイスでも)。 OpenGL エラーも警告も表示されず、すべて正常に動作しているようです。
何かが TEXTURE_EXTERNAL にコピーされた場合にどうなるかを示すことができる他のツールはありますか? すべての TEXTURE_2D がトレーサーで利用できます。
MALI システムで気付いた奇妙な点の 1 つは、高解像度ビデオをまったく再生できないことです。そして、私のビデオ 1280x720 は、SoftwareRenderer を使用していることをデバッガーで報告しています。おそらくそれが、フレームがテクスチャとして使用される OGL_IMAGE に正しくコピーされない理由です。
内部で何が起こっているのかをもう少し理解する必要があると思いますが、パフォーマンスが悪くても、システムがそれを実行できないか、単に機能するはずであるというエラーが予想されました。おそらく、これは Android の修正版であり、メディアプレーヤーのコードが壊れているだけです...