スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 評価が高すぎてちょっと怖い | トップページ | 今週のリリースはない »

もう一日はかかる

今は、Mirror-DTCの次バージョンを開発中で、その最後としてAndroid版の作成中なのだが、今となっては、Android版のみが特殊構造になっているので、どういう作りになっているのかを把握するのにも苦労している状況だ。なので、作業にはもう一日くらいはかかりそうだ。

Android版は他OS版とは異なり、開発言語はJavaになっているのだが、それだけではなく、JNIを使ってC++のコードも使用している。

で、問題は、このC++のコードが他OS版とは微妙に異なる事なのだが、その理由は、Android版は普通にコーディングしていると性能が出なかったので、デコード処理の最終段の処理をGPUに任せている、という事になる。

具体的には、Mirror-DTCの内部データは映像圧縮使用時には、YV12形式になっていたり、YUV形式になっていて、他OS版では、これらのデータはRGB形式に変換してから描画ルーチンに渡しているのだが、Android版では、そのままの形式でGPUに渡している。

まあ、それだけなら、大した事でも無いのだが、Android版では使用メモリ量もケチっているし、マルチスレッド動作についてもGPUでの描画処理と並行動作出来る様に考慮してあるので、他OS版では処理毎に独立して持たせているワークメモリなんかについても独特なシロモノになっている訳だ。

と、いう事なので、全体像を把握せずに弄ると動作しなくなる可能性が高いので、作者的にも、まずは、コードを眺めたりテストしたりしつつ、何処にストリーミング圧縮用の処理コードを潜り込ませるか、なんて事を考えたりしている状況だ。

つまり、まだ、ストリーミング圧縮系の処理は全然入れられていないので、まだまだ完成はしないのだが、とりあえず、JNI用の処理コードのテストビルドなんかは出来ているので、まだ、救いはあるかもしれない。

ちなみに、JNI用の処理コードにも二種類ある。

その一つはベタなC++コードで、もう一つはARMのNEONでSIMD処理を行わせる為のIntrinsicsを使ったコードだ。

で、JNIのコードはIntelCPU用にもビルドしてあるので、IntelCPUが搭載されたタブレットなんかでも動作はする筈なのだが、SSE2命令は使っていないので、IntelCPUが搭載された機器では、上記のベタなC++コードで動作する事になる。

このため、Android版については、ひょっとすると、IntelCPUが搭載された機器よりもARMが搭載された機器の方が高速に動作するかもしれない。

もっとも、作者のAndroid2.3スマホである所のPHTONに搭載されているTegra2はARMなのだが、NEONは使えない。

にも関わらず、それなりに実用的な速度で動作はしているので、とりあえず、テスト環境がないので、現状、SIMD命令を使っていないIntelCPUでも、それなりの速度で動作はする筈ではある。

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

Mirror-DTC

Mirror-DTC

(2016/05/04追記)

« 評価が高すぎてちょっと怖い | トップページ | 今週のリリースはない »

トラックバック

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

この記事へのトラックバック一覧です: もう一日はかかる:

« 評価が高すぎてちょっと怖い | トップページ | 今週のリリースはない »

2017年12月
          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