3

ビデオのデコード (C で記述) を実行し、デコードされたフレームを表示する (NDK を使用している) アプリケーションに関連する質問があります。

1- Android (1 GHz Cortex A-8 プロセッサで実行) では、アプリケーションは Windows (3 GHz プロセッサで実行) よりも約 10 倍遅く実行されます。3 ~ 4 倍遅くなると予想していますが、9 ~ 10 倍遅くはありません。(基本的に、フレームの速度は非常に遅いです)

2- 正しいターゲット (Cortex A 8) 用にコンパイルしていないのではないかと考えました。そこで、Application.mk ファイルを編集しました。

   APP_ABI := armeabi armeabi-v7a mips

他に編集しなければならない .mk ファイルはありますか?
この包含は、正しいターゲット用にコンパイルしていると信じるのに十分ですか?
(これを含めても目に見える改善が得られないため、これを尋ねます。正しいターゲット(Cortex A8)用にコンパイルしていることを二重に確認できる方法はありますか。

Android はリアルタイム OS であり、Cortex はデュアル イシュー プロセッサであり、Neon をサポートしているにもかかわらず、Android と Windows のパフォーマンスにこれほど大きな違いがある理由として考えられるのはどれでしょう。

追加情報と私の分析:

1-UI の更新 ( Ondraw() の呼び出し) にはメイン スレッドを使用し、デコードには別のスレッドを使用していることにも言及する必要があります。

2-デバッグ コードを挿入した後、新しいフレームがデコードされる前に表示関数が数回呼び出されていることがわかります。これがフレームレートが悪い理由かもしれないと考えています。表示がすべての CPU リソースを盗んでいるため、デコードが遅くなり、表示機能が同じデータを何度も表示しているため、品質が低下しているように見えます。ウィンドウでは、デコードと表示を行う単一のスレッドを使用していますが、メインスレッドはありません。(これは私の推測にすぎませんが、結論についてはわかりません。)

4

0 に答える 0