大幅に速くなる
今日は、OpenGL ES2.0を使ったYV12逆変換をAndroid版AGMPlayerに組み込んだ。今の所、仮適用の段階なのだが、性能的にはYV12逆変換をCPUで行っていた時と比べて1.5倍くらい速くなった。現行版の性能と比べると、次バージョンは5倍高速化される事になる。
« 2013年3月 | トップページ | 2013年5月 »
今日は、OpenGL ES2.0を使ったYV12逆変換をAndroid版AGMPlayerに組み込んだ。今の所、仮適用の段階なのだが、性能的にはYV12逆変換をCPUで行っていた時と比べて1.5倍くらい速くなった。現行版の性能と比べると、次バージョンは5倍高速化される事になる。
今は、Android版AGMPlayerでOpenGL ES2.0を使ってYV12逆変換をGPUで行わせるために、OpenGL ES2.0でテクスチャを扱う方法を調べたりしているのだが、大体は使い方が判り、今日の時点で、3個のテクスチャを作成し、GPU側で値を読み込んで表示出来る様にはなった。
ここの所、次バージョンのAndroid版AGMPlayerを開発しているのだが、MXPlayerなんかと比べると、出来が良すぎるかもしれない。まあ、AGMPlayerの場合、今の所は一般的なコーデックはサポートしていないので、問題は無いのだが、広告は入れておくかもしれない。
今日はAndroid版AGMPlayerでプログラマブルピクセルシェーダを使う準備段階として、NDKにあるGL2のサンプルプログラムの動作確認なんかをしていた。それと並行して、YouTubeにある動画をAG-デスクトップレコーダーで録画して再生確認なんかもしていた。
今日は開発中の次バージョンのAndroid版AGMPlayerのテクスチャ形式を元々のRGBAからRGBに変更し、YV12逆変換とテクスチャ転送のデータサイズを少し減らした。この変更で、性能は更に少し向上したのだが、YV12逆変換をGPU側に持っていくとどうなるのかは気になる。
今日も、次バージョンのAndroid版AGMPlayerの開発を継続していたのだが、昨日書いた内容は先送りにしてコード整理と性能測定をしていた。これは、OpenGL/NEON対応をバタバタとやってきたため必要と判断したからなのだが、Nexus7の性能はPC-6001みたいだ。
今日は更に細かい改良を色々とやり、Tegra3搭載のNexus7でフルHDのAGM形式DCT+モード動画の再生を大体は滑らかに行える様にしたのだが、同じ動画をこの前購入したCorei3の安物ノートPCである所のASUS X202Eで再生すると、省電力モードでも余裕で再生された。
ここの所、Android版AGMPlayerの再生性能を上げていて、Nexus7で動作させるとフルHD動画の再生も非現実的な感じでもない。ただ、完全にOkかというとそういう訳でもない。なので、色々と改良してきているのだが、今日もまた少し性能が上がった。なので、もう少し続ける。
今日は先週書いていた新マルチスレッド方式で、色々とテストしてみていた。その結果を見ていると、新方式は従来方式よりも高性能なのだが、まだ微妙に足りない感じだ。YV12逆変換は、半分にしても大差ないので、プログラマブルシェーダの出番は無いかもしれない。
次バージョンのAndroid版AGMPlayerではOpenGL描画を行っているのだが、ES1.0ベースになっている。これはES2.0ベースにすると面倒になるからなのだが、ES2.0を使うとプログラマブルシェーダが使えるので、YV12逆変換くらいはGPUにやらせる事が出来るかもしれない。
今日は、少し足りないAndroid版AGMPlayerの再生性能をどうやって上げようか、と、考えていたのだが、個別ルーチンについては、度重なるバージョンアップで最適化して来ているので、最早、弄りようがない気もする。なので、マルチスレッド方式を抜本的に変えるかもしれない。
今日はNEONコードを最適化したり、デコード用のスレッド数を4つに拡張してみたりしつつ、Nexus7上で次バージョンのAGMPlayerのフルHD動画再生性能を確認していたのだが、まだ微妙に足りない。しかし、MXPlayerでフルHDのWMVを再生するよりは、よっぽどマシだ。
今日もAndroid版AGMPlayerの改良開発を続けていたのだが、形になってきた。Android版はPC版とは違って、ライブラリビューを主体にしてあるのだが、その形態で使用した場合にも、しっくりと来る様になった訳だ。その為に、ファイル読み込み機能だとかは削除したのだが。
今日は、中途半端になっていたAndroid版AGMPlayerのUI機能なんかの微修正を始めたのだが、いきなりトラぶってしまった。Android版ではPC版とは少し変えて、ライブラリビューをメインに据えようとしているのだが、ライブラリビューでの変更がPC側に反映されなかった。
今日は、昨日書いていた問題を解決し、PHOTONでも、OpenGL対応ルーチンが使える様になった。性能については、まだ正確には測定していないのだが、720p動画を再生してみても、殆どの場面で滑らかなので、OpenGL描画にする事で、性能は間違いなく向上する。
今日はAndroid版AGMPlayerにOpenGLを使った描画ルーチンを適用して確認していたのだが、Nexus7では、NEON対応もあるので、720pのAGM動画再生もスムーズで、フルHD動画も、カクカクなのだが、一応は動画っぽく見えるようになった。PHOTONは少し変なのだが。
今日はAGMPlayerのNEON化を大体終了したのだが、次にはOpenGL化が控えている。これらの変更が終了すれば、720pのAGM形式動画もNexus7では快適に再生できるようになる筈で、ライブラリビュー機能と合わせて、Nexus7もAGM形式動画プレイヤーになる筈なのだが。
昨日書いた様に、今日からAndroid版AGMPlayerの変更を再開した。Mirror-DTCの変更を始める前の時点で、既にライブラリビュー機能は一応は入っていたので、今日から数日は、NEON対応とOpenGL対応を行い、その後、改めて、細々した部分の調整に入る予定だ。
今日は、VectorのMirror-DTC Ver1.2.3も無事公開されたので、テスト的にMirror-DTCのAndroid版に実装してみたNEONルーチンの動作確認なんかをやっていたのだが、やはり、SIMD命令でコードを記述すると十分に軽くなり、現行版とは雲泥の差になったかもしれない。
昨日、Mirror-DTCのVer1.2.3をVectorにも登録しておいたのだが、今日見てみると、説明文だけ変わっていて、ダウンロードバイナリはVer1.2.2のままだった。なので、説明文に注意文言を付け足しておいたのだが、反映されるのは明日だろうから行き違いになるかもしれない。
今日は、Androidアプリ用にARMでSIMD命令を使う方法を調査した。昔のARMにもSIMD命令はあったのだが、今時のARMではNEONがSIMD命令になる。なので、それを使おうとしているのだが、ネットの情報は古くて混乱させられた。結局は、使えそうではあるのだが。
昨日は、OpenGLは微妙と書いたのだが、今日、更に確認してみると、使えそうな感触が得られた。昨日書いた画面生成が遅くなる件は、テスト環境が不完全だったためで、OpenGLの問題では無かった。そして、JNIを使えば、OpenGLでフルHDの30FPS表示は可能な感じだ。
今日は、Android用にOpenGLを使って画像の拡大/縮小処理を行うルーチンを色々とテストしてみていたのだが、Mirror-DTCのAndroid版に適用すると、現行版よりも遅くなった。OpenGLの描画自体はフルHD時にも20FPS程度では出来ているのだが、画面生成が遅くなる。
今日は特に何もしていなかったのだが、この前購入したWindows8搭載のASUS X202EにVisual Studio 2012のExpress版をインストールしてみた。当然の事ながら、インストールしたのは、モダンUIアプリ開発用なのだが、どう見ても、モダンUIアプリは商品用な感じだ。
今日は土曜日なので、普通ならブラブラと外に出ているのだが、春の嵐なので外出は避ける様に、と、ネットやTVで注意していたので、外出はやめて家にいた。で、ここの所疲れているので、久しぶりに真面目にDVDを見てみたのだが、当然、Mirror-DTC経由で視聴した。
今日は、Androidアプリ用にOpenGLの使い方を調べたりしていたのだが、面白い話でもない。なので、今日は、Mirror-DTCの新しい使い方を色々と試してみていたので、その中の二つを紹介する。そんな使い方ならもうやっている、という人もいるかもしれないのだが。
今日からAndroid機器でOpenGLを使う方法の調査を始めたのだが、使う事自体は簡単で、ネットを探せばサンプルも簡単に見つかる。問題は、作者がOpenGLを使いたい理由はMirror-DTCとAGMPlayerで性能を上げたいからなので、その辺についての調査が必要な訳だ。
今日は、何だか疲れていたので、ボウッとしていたのだが、ブログのアクセス解析を見ていると、昨日の記事にTwitterからリンクが張られたみたいだった。しかし、アクセス解析ではTwitterの書き込み内容は判らないので気になった。なので、昨日の記事を再検証してみた。
今日は、予定通りMirror-DTCのVer1.2.3をリリースした。なので、その後は先週末に購入したばかりのタッチパネル液晶搭載のWindows8ノートPCである所のASUS X202Eで色々とやってみていたのだが、ゲームを除いて、モダンUIアプリで使えそうなモノが見つからない。
Ver1.2.3はVer1.2.2との互換性を維持しつつ、対応OSへの最適化を行ったバージョンになります。Windows環境用には64Bit版バイナリの追加とWindows8対応を行い、Mac/Ubuntu環境用にはネイティブコードによる大幅な性能向上とインストーラ追加等を行っています。
今日は、次バージョンのMirror-DTCの配布パッケージを作り直し、Windows用のみ再確認したのだが、問題は無かった。なので、後半は土曜日に購入したASUS X202Eに搭載されているタッチパネルを使って、Mirror-DTCでは何が出来るのかを見てみた。