スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« DCT+は画質を向上させる | トップページ | 基本、デコーダーは無変更 »

Mac版AGMPlayerに適用

今は、Windows用AmuseGraphicsの開発フェーズで、次バージョンに実装するAGM形式用の各種処理について検討しているのだが、現行版エンコーダーの改良は終わった。しかし、TiExtenderで確認していたので、AGMPlayerにも適用した。

現行版エンコーダーに対する改良点は、主に、コード化部を分離して並列化する事で、マルチコアCPU環境下での処理速度を向上させた事にある。

もっとも、この処理速度の向上というのは、処理可能なFPSの向上を意味しているに過ぎない。

つまり、10年以上前、Pentium4というCPUでは、総合性能を向上させる方法として、CPUのクロック周波数を上げる方法を取っていたのだが、半導体の処理速度にも限界はあるので、クロック周波数を上げる為にはそれなりの工夫も必要だった。

にも関わらず、Pentium4は動作周波数をどんどん上げていったのだが、それを可能としたのは、パイプライン段数を増やす、という工夫だった訳だ。

つまり、各処理を単純な処理に分割し、それらの処理を並行して動作させる事により、動作クロックを上げられる様にしたのだが、その弊害として、Jump命令が行われた時、増やしたパイプライン段数分、従来のCPUよりも並列動作できない期間が増加し、その結果として、従来CPUよりも処理速度が低下する危険性が増した訳だ。

このため、Pentium4で高速なソフト動作を期待する場合には、極力、Jump命令は使わない様にする必要があったのだが、今回、AGMエンコーダーに施した高速化手法というのは、Pentum4がパインプライン段数を増やした手法と同様な訳だ。

つまり、コード化部を分離して並列動作させる、というのは、Pentium4で各パインプライン処理を単純化した事に相当するので、その結果として、AGMエンコーダーでは、Pentium4のクロック周波数に相当するFPSを上げる事は可能になった。

しかし、その結果として、Pentium4と似た様な問題も出てくる事になったのだが、それは、応答時間の低下だ。

つまり、入力データが入ってから、そのデータの加工が終了して結果が出てくるまでの時間は低下する訳だ。

まあ、コンピュータに詳しく無い人の場合、入力されたデータが出力されるまでの時間が余計にかかるのであれば、処理性能は低下している事になる筈だ、と、思うかもしれないのだが、コンピュータの世界では、性能指標としては、応答時間とスループットというモノがある訳だ。

つまり、今回のAGMエンコーダーの改良では、スループットは改善されたのだが、応答時間は低下する場合も出てくる。

もっとも、通常のエンコードでは、この応答時間の低下というのは、高々数フレーム分の処理時間しかないので、全く、問題にはならない筈だ。

しかし、AGMPlayerの場合、一般動画をAGM形式にエンコードしてネットワークに伝送する処理もあるのだが、この処理の場合、応答時間の遅延は、それなりに問題になる。

なので、AGMPlayerでは、ネットワーク視聴用のエンコードでは従来タイプの処理を継続し、動画ファイルの変換時に行うエンコードのみ、新方式を使える様にした。

このため、TiExtenderからの移植処理は少し手間取ったのだが、今日の時点で、何とか、AGMPlayerでも、前述の様な新旧エンコードが同時に使える様になった。

ちなみに、TiExtenderの画面キャプチャー用に使った場合、新エンコード方式は4コア8スレッドのMacBook Pro 15インチ 2016モデルでは、キャプチャー性能を2倍近く向上させている。

具体的には、現行エンコーダーを使ったTiExtender Ver1.2.0では、1920x1080 (HiDPI)、つまり、4k解像度画面をキャプチャーしてAGM2-DCT出力しようとした場合、30fps程度が限界になるのだが、新エンコーダーを使っているVer 1.2.1では、ギリギリ、60fpsキャプチャーが可能になっている。

更に、AGM-YV12/RGBについては、どの道、ストレージネックが発生する筈、という事で、現行版では映像部の並列化も行なっていなかったので、それを行った新版の性能向上比率はより高く、Ver1.2.0だと40fps程度が限界だったのだが、Ver1.2.1では、60fpsキャプチャー時にCPUのビジー率は50%程度だ。

つまり、4k60fpsキャプチャー時にも、TiExtenderはCPUを50%程度しか使用していないので、残りの50%を通常アプリケーションが利用可能な事から、実用的なキャプチャーも可能になる訳だ。

しかし、今日の時点では、AGMPlayerに移植した新エンコーダーは、その実力を発揮できていない。その理由は、AGMPlayerの場合、エンコーダーへの入力はデコーダー出力になるからだ。

つまり、現時点では、新AGMエンコーダーよりも、既存AGM/一般デコーダーの方がFPSが低いので、いくらエンコーダー側の性能が上がっても、変換可能なFPS数は増加しない訳だ。

と、言う事なので、次は、デコーダー側の性能向上を目指すのだが、一般デコーダーの処理性能はAV Foundation次第なので、作者的には向上させようがない。

なので、処理性能の向上を目指すのは、AGMデコーダーのみになる。

それでは、将来的にも、一般動画からAGM形式への再エンコードは高速化できないのか、というと、そんな事はなくて、既に、何年も前から、AG-ムービーカッターにその方法を実装している。

つまり、並列分割エンコードを使えば、デコーダーが遅くても、そのデコーダーを何個も同時に動作させつつエンコードが行えるので、処理速度の向上は可能だ。

しかし、並列分割エンコードでは、エンコード中に処理を停止すると結果が得られなかったり、ワークファイルを作成したりする必要があるというネックもある。

そして、TiExtenderやAG-デスクトップレコーダーでの画面キャプチャー時には、並列分割エンコードの手法は使えないので、今回、よりストレートな形で、エンコーダーの処理性能を向上させたのだが、この性能向上を動画変換時に有用にするためには、デコーダーの処理性能も、向上させる必要がある訳だ。

« DCT+は画質を向上させる | トップページ | 基本、デコーダーは無変更 »

トラックバック

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

この記事へのトラックバック一覧です: Mac版AGMPlayerに適用:

« DCT+は画質を向上させる | トップページ | 基本、デコーダーは無変更 »

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