スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« インテントに対応 | トップページ | JITよりもJNIが優秀 »

JNIも試してみる

今日は、開発中のAndroid版AGMPlayerにファイル選択機能を実装した。なので、一応、大物機能は全て入った事になり、まだ、細かい部分の手直しは必要なものの、機能的には、普通に使えるようになった。しかし、再生性能は極力上げたいので、JNIも試してみる事にした。

AndroidではJNIを使ってネイティブコードも使える事になっている。しかし、Android2.2からは、Java言語で記述したルーチンも、JITコンパイラでコンパイルされてから実行される形になったため、多分、普通のコードをJNIでネイティブ化してみても、大して高速化されないだろう、と、作者は思っていた。

ただ、AGMPlayerの場合、DCT逆変換だとか、YV12逆変換だとかでは、データは全て配列に入っていて、そのデータに対して単純な演算を行い、その結果を別の配列に書き出す格好になっている。

で、Javaでは、作者が望まなくても、プログラムの実行時に、配列へのアクセス時にはアクセスする要素のインデックスチェックが行われる筈だ。

なので、普通に考えて、ネイティブコードでは、配列要素へのアクセス時に、ワザワザ、インデックスチェックなんて事は行わないので、その分、ネイティブコードで記述した方が性能は良くなるんじゃなかろうか、と、思えてきた訳だ。

まあ、動作するCPUがX86の場合には、同時命令実行数が3つくらいは普通にあって、さらに、メモリ読み込みや書き込み待ちに隠れてインデックスチェックルーチンが同時実行される可能性もあるので、あまり期待は出来ないのだが、ターゲットにしているのは、ARMなので、ひょっとすると、それなりに高速化できるかもしれない。

と、いう事で、今日はMirror-DTCの開発終盤で少しだけ試したNDK環境をもう一度使えるようにして、サンプルプロジェクトのHello-JNIをもう一度ビルドしてみて、出来上がったJNI付きのapkファイルがPHOTONでも動作する事を確認した。

なので、JNI化は明日からの作業になるのだが、AGMPlayerをJNI化するのは少し面倒なので、明日はHello-JNIを変更していって、配列に対する演算がJNIを使うと高速化できるのかどうかを確かめてみる事にする。

ちなみに、JNI化すれば、VLCプレイヤーでも使われているNEONも使えるようになる筈なのだが、作者の手持ちスマートフォンである所のPHOTONのCPUはTegra2なので、NEON命令は使えない。

また、ネットで調べてみると、NDK付属のgccではNEON命令を上手くコンパイルできない、なんて話もあったので、とりあえず、NEON命令は使わないつもりだ。

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

AmuseGraphics

AmuseGraphics

(2013/12/08追加)

« インテントに対応 | トップページ | JITよりもJNIが優秀 »

トラックバック

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

この記事へのトラックバック一覧です: JNIも試してみる:

« インテントに対応 | トップページ | JITよりもJNIが優秀 »

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