スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« マトモな人も一人いた | トップページ | さらに軽くなったが »

15FPS分の性能は確保

今は、Android版のAGMPlayerを開発中なのだが、とりあえずは、先週書いたように、性能が全然足りなかったので、基本性能を上げてみている段階だ。今日は、DCT逆変換ルーチンに、これも先週書いていた、アグレッシブな変更をしてみたのだが、性能は結構上がった。

アグレッシブな変更というのは何なのか、というと、DCT/DCT+モードのデータをデコードする場合、多くの要素では値が0になるにも関わらず、現行版では、その特徴を利用していなかったので、利用するように変更した、という事になる。具体的には、DCT逆変換用のコードに存在する多重ループの処理順を変えた。

当然の事ながら、それだけでは性能は上がらないのだが、処理順を変えると、前述の値が0になる要素についての演算時には、以降のループ処理を省く、という記述が出来るようになるため、通常は、かなりの数の積和演算が省略されるようになる。

元々のコードでは、DCT逆変換ではSSE2命令を使い、8つの要素を同時に計算していたため、こういう手法は使えなかったのだが、Android版ではSSE2命令は使えないので、各要素用の計算は個別に行っていた。なので、上記のような条件分岐も可能になった訳だ。

と、いう事で、先週書いていた320x240-15FPSの1分の動画の全フレームを表示するのに要する時間は、1分15秒から、今日の時点で、50秒にまで短縮された。

なので、真面目に再生用のルーチンを組めば、15FPSでの再生は問題なく行えるようになった筈なのだが、これも先週書いていたのだが、DCT逆変換が重いのは、まだ理解できるのだが、その他の処理にも意外と時間がかかっていた。

このため、今日は、その他の処理の何処で時間がかかっているのかも見てみたのだが、ファイルの読み込み処理に15秒も要していた。

このブログを真面目に見ている人なら、それは変だ、と、言うかもしれない。何故なら、ファイルアクセスでは大した負荷はかかっていない、と、作者自身がこのブログに書いていたからだ。

それでは、元々書いていた事が間違いだったのか、というと、そういう訳でもなくて、ファイルアクセスに大した負荷はかかっていない、と書いていたのは、PC上で性能を見ていた時の話だった訳だ。そして、15秒も時間がかかっている、と書いているのは、作者のAndroidスマートフォンである所のPHOTONで動作させた場合の話な訳なのだ。

上記に関係する話なのだが、どうも、PHOTONで動作させた場合には、メモリのアロケーションが非常に遅い事が判った。

で、上記のファイルアクセス時には、ストレージから読み込んだバイナリデータを扱いやすくするために、クラスデータに変換しているのだが、そこで、メモリアロケーションを色々とやっている。

と、いう事なので、多分、その辺のルーチンを汚くすれば、ファイルアクセスにかかっている15秒というのも、大幅に短縮できるかもしれない。結果は明日のお楽しみだ。

ちなみに、先週の記事では、DCT逆変換のオーバーヘッドは30秒くらいかなあ、と、書いていたのだが、今日、再度真面目に見てみると、DCT逆変換のオーバーヘッドは40秒程度だったようだ。そこから、25秒程度の性能向上が行えた事になるので、多分、現状のオーバーヘッドは15秒程度かもしれない。

画面表示、YV12逆変換のオーバーヘッドはそれぞれ5秒、ハフマン展開処理もやはり5秒程度必要で、動き補償用の処理でも3秒程度必要になっている。

なので、ファイルアクセス時間が0になっても、このままでは、30FPS再生は無理なのだが、バイナリデータをクラスデータに変換している処理は随所にあるため、これらを全て原始的なコードにして行けば、ひょっとすると、30FPS再生も可能になるかもしれない。コードの読解性はコメント頼りになる事になるのだが。

= この記事に関連する公開中ソフト =

AmuseGraphics

AmuseGraphics

(2013/12/08追加)

« マトモな人も一人いた | トップページ | さらに軽くなったが »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/56151029

この記事へのトラックバック一覧です: 15FPS分の性能は確保:

« マトモな人も一人いた | トップページ | さらに軽くなったが »

2018年1月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google