スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« デコードの方が苦しい不思議 | トップページ | AGM4形式の開発はなし »

マルチスレッド化と少々

今は、Windows用AmuseGraphicsの開発フェーズで、既に、AGM形式用エンコーダーは改良したのだが、次に、デコーダー側にも手を入れてる。ただし、デコーダーについては構造改革は行わず、マルチスレッド化と、少々の改良に留める。

昨日書いた様に、エンコーダーにはなく、デコーダーにはある大きな問題として、リアルタイム再生用に使える様にする必要がある、というモノがある。

つまり、エンコーダーというのは、入力されたデータをスキップさせなければ、エンコード結果を出力するまでの遅延は大して問題にされないのだが、デコーダーの場合、リアルタイム再生を鑑みれば、基本的には、遅延時間は表示周期以内に収める必要がある訳だ。

もっとも、昨日書いた様に、少なくともAGM-RGB/YV12形式動画の場合、キーフレームのデータサイズは大きくなりがちなので、非キーフレームと比べてデコード時間が長くかかる傾向がある。

このため、理想的には、デコーダーの性能としては、キーフレームのデコード時間を前述の表示周期以内に収める様にしたい所なのだが、それが無理な場合、非キーフレームのデコード時間との平均を表示周期以内に収める、という方針も採れる。

つまり、デコード処理を実際の表示タイミングよりも前に開始し、複数フレームのデコードが終わった時点で再生を開始すれば、表示用データのデコード時間は、実質的には平均化されるので、キーフレームのデコード時間が長くても、非キーフレームのデコード時間が短ければ、表示遅延が発生する可能性をおさえられる訳だ。

なので、今回、AGMPlayerの再生用デコード処理を上記の様な形式に変更しようか、とも思ったのだが、エンコーダーと違って、デコーダーの場合、シーク動作に対応させたりする必要があって、改造はエンコーダーの構造改革よりも面倒そうな訳だ。

そして、上記の様な改造を行ったとしても、動きが激しい場面なんかでは、非キーフレームのデータサイズも大きくなるし、AGM3-RGB/YV12の場合、そういうフレームは自動的にキーフレームとして出力されている。

つまり、上記の様な対策で救われるのは、あまり動きがない映像に限られるので、そこまでの苦労をして改良する必要もないか、という事にした訳だ。

と、言う事なので、今回、デコーダーについては構造改革は行なっていないのだが、現行版では、AGM形式動画の再生としては、AGM3-DCT+のフルHD60fps程度を最高レベルの負荷として想定していた。

で、この程度の再生なら、今時のPCなら、シングルスレッド動作のデコーダーでも性能的に問題はなかったので、現行版では、再生時には、デコーダーとしては、シングルスレッド動作するモノを使っている。

しかし、次バージョンでは、4k60fpsをターゲットとして考慮する格好にするので、AGM3-DCT+の再生時にも、デコーダーをマルチスレッド動作させるし、従来はシングルスレッド版しかなかったAGM-RGB/YV12についても、マルチスレッド動作版を追加し、これを動作させる様にした。

その結果としては、それでも、4k60fpsのAGM-RGBの再生は、すこしギクシャクするのだが、FHD60fpsのAGM-RGBについては、MacBook Pro 15インチ 2016モデルでは、スムーズに再生可能になった。

また、AGM-DCT+なんかについても、従来は、再生は問題なくても、解像度が高い場合、シークが少し重くなったりする事があったのだが、今回のマルチスレッド化により、そういう問題も軽減されている。

と、言う事で、次バージョンでは、デコーダーの基本性能も向上するので、AGM形式動画を扱う場合、より快適感が増す筈なのだが、そういうのとは少し違う改良も、少々、行うつもりだ。

« デコードの方が苦しい不思議 | トップページ | AGM4形式の開発はなし »

トラックバック

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

この記事へのトラックバック一覧です: マルチスレッド化と少々:

« デコードの方が苦しい不思議 | トップページ | AGM4形式の開発はなし »

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