スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Windows版よりも速い | トップページ | まずはデータ読み込み »

MP4変換も高速化されたが

今は、Mac用AGMPlayerの開発フェーズで、とりあえず、AVFoundationを使ったmp4/agm変換ツールを作成中なのだが、今日は、AGMデコーダーからYUV形式で画像データを取得してAVFoundationを動作させる格好にしてみた。その結果、こちらも少し高速化されたのだが。

今日は、昨日とは逆に、AGM形式動画をMP4動画に変換する処理についても、YUV形式を導入したのだが、その結果、RGB形式を使っていると3分50秒かかる処理が3分5秒で終わる様になった。

なので、こちらについても、少し高速化されているのだが、色々と見てみた所、ボトルネックになっているのは、AVFoundationではなく、AGMデコーダーの方である事が判った。

つまり、AVFoundation的には、もっと高速にMP4エンコードが可能かもしれないのだが、入力データがやって来ないので、結果的に、前述の様な性能になっている訳だ。

YUV形式を使った場合、AGMデコーダーの処理も軽くなるので、RGB形式を使った場合よりも高速化されているのだが、それでも、まだ、AVFoundationのエンコード速度にAGMデコーダーのデコード速度が追いついていない。

開発に使っているのはMac mini Late2014で、ストレージは外付けの2.5インチHDDなので、それが低速である影響もある筈なのだが、エンコード速度とAGMファイルのコピー速度を比べると、コピー速度の方が何倍も速い。

と、いう事で、AGMtoMP4の変換速度は、実際の所、現状でも十分に実用的なので、別段、高速化は必須でもないのだが、AGMPlayer本体の開発を始めると、そのUI作成作業に殆どの時間を取られ、性能向上作業なんかはやっている暇が無くなる筈だ。

なので、今週は、AGMtoMP4変換ツールの処理性能を上げる作業を続ける事にする。

ちなみに、Mac mini Late2014は2コア4スレッドCPUなのだが、AGMtoMP4変換中のCPU使用率を見ていると、2/3程度しか使っていない。

作者的には、AGMデコーダーは十分に高速で、AVFoundationがGPUを使ってエンコードしているので、その期間、CPUが遊んでいるのか、と、思っていたのだが、AGMデコーダーの中のある処理を端折ってみたら、エンコード速度が向上した訳だ。

更に細かく見ていくと、AGMデコーダーはエンコーダーとは別スレッドで動作していて、エンコーダーの処理とは非同期に、最速動作でデコード結果をキューに積む格好にしてあるのだが、AVFoundationがReady状態になっているタイミングで、そのキューを見に行って、まだデータが無いのでWait状態になっている、という事が頻繁にあった。

と、いう事なので、MP4エンコードについては、AGMデコーダーネックである事は明らかなので、高速化しないと格好が付かないかなあ、という感じな訳だ。

高速化の方法としては、かなり前に書いていた様に、パイプライン方式を採用する。

つまり、AGMデコーダーでは、ハフマン圧縮のデコード処理等、簡単にはマルチスレッド動作に出来ない処理が存在するので、それらの処理を行う間、シングルスレッド動作になってしまっている。

このため、前述の様に、エンコード中にもCPU負荷が少ないのだが、複数フレームのデコード処理を同時に走らせれば、シングルスレッドでしか動作できない処理も複数同時に動作する格好になるので、マルチコアをフル活用出来る様になる訳だ。

まあ、言うのは簡単なのだが、やるのは大変なので、今までは、そういう事はやって来なかったのだが、QSVを使ったエンコーダーは、従来のソフトエンコーダーよりも高速なので、その入力とするデコーダーも高速化が必要になってきている訳だ。

と、いう事で、今週は、新しい高速なAGMデコーダーを開発するのだが、それなりの結果で出る様なら、AmuseGraphics系ソフトの更新は大変なので、暫くはやらないと思うのだが、高速なAGMデコーダーを搭載したAGMtoMP4変換ツールについては、Windows版も提供する事にするかもしれない。

« Windows版よりも速い | トップページ | まずはデータ読み込み »

トラックバック

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

この記事へのトラックバック一覧です: MP4変換も高速化されたが:

« Windows版よりも速い | トップページ | まずはデータ読み込み »

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

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google