スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Windows版も更新した | トップページ | 出る杭は打たれる »

DCT+以外は実装

今日は、Windows版AG-ムービーカッターで追加したAGM形式のデコード機能をJava版に追加していたのだが、同時に性能向上用に変更した処理ルーチンも適用していたので、DCT+の実装までは進まなかった。高圧縮オプション付きデータは再生できるようになった。

C++からJavaへの移植はMirror-DTCの開発時に結構やったので、それなりに慣れてはいるのだが、やはり、C++からJavaにコードを変更する場合には、少し考えなければならない部分が出てくるため、同じC++で記述できているWindows版からUbuntu版への移植よりは、Java版への移植の方がよっぽど疲れる。

何故疲れるのか、というと、上手く動かなかった場合に、データが勝手に負数になっているんじゃなかろうか、と、考えてしまうからだ。

Mirror-DTCのJava版開発時に嫌というほど書いたのだが、Javaではunsigned型が使えないため、unsignedという修飾子だけを外して、C++のコードをJavaに持ってくると、コンパイルエラーが出ずに誤動作するケースがある。

そういう場合にはどうする必要があるのかというと、それはケースバイケースになるのだが、普通はunsigned int型はlong型に、unsigned char型はint型に変更する事になる場合が多いかもしれない。

しかし、機械的にそんな事をしていると、例えば、画像フレーム用のバッファメモリは唯でさえ大きすぎるのに、その4倍のサイズが消費されてしまう事になる。

と、いう事で、C++からJavaに移植する場合には、色々と考えなければならない部分も出て来る訳だ。それ以前に、作者はC++では、ポインタやキャストを多用する人なので、そのコードをJavaに移植するのは大変だったりする。

ちなみに、手元のJava版ではDirect3Dでの描画は行っていないため、画像の拡大縮小まで含めた画面表示もJavaで行っているのだが、640x480程度の動画なら、CPU使用率5%程度で再生できている。

もっとも、この5%といのは8スレッドのCorei7環境での話なので、5%程度、というのは、3GHzのシングルコアCPUで50%の負荷がかかっているのに等しい。

さらに、上記で再生しているのは高圧縮オプション付きのDCTモード動画になるので、DCT+モード動画だと、もう少し負荷は高くなる筈だ。

なので、Android版プレイヤーが快適に使えるかどうかは危うい状況ではあるのだが、唯一の救いは、Androidでは、画面描画用のAPIが拡大縮小もしてくれて、その負荷は非常に軽い、という事だ。

と、いう事なので、とりあえず、明日は残っているDCT+モードを実装してから性能向上施策もやってみるのだが、多分、大した効果は期待できないので、明後日くらいには、Androidで動作するバージョンを作って、Android上での性能を見れるようにする事になる筈だ。

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

AmuseGraphics

AmuseGraphics

(2013/12/08追加)

« Windows版も更新した | トップページ | 出る杭は打たれる »

トラックバック

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

この記事へのトラックバック一覧です: DCT+以外は実装:

« Windows版も更新した | トップページ | 出る杭は打たれる »

2018年4月
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          

広告

プライバシーポリシー

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

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

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

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