スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 今日の進捗は少し | トップページ | Windows版よりも速い »

MP4 to AGMも可能に

今は、Mac用AGMPlayerの開発フェーズで、今週は、AVFoundationを使ったmp4/agm変換ツールを作っていたのだが、今日、AGMtoMP4に続いて、MP4toAGM変換も可能になった。なので、基本的にはOkなのだが、処理性能はまだ上げられる筈なので、もう少し続ける。

今日の時点まで、画像データはRGBA形式で扱っていたのだが、AVFoundationでは、YUV形式も使える事になっている。

Windows版のAGMPlayerでは、現行版で、既に、Media Foundationを使ったMP4/AGMの変換時には、RGBA形式ではなく、YUV形式も使える様になっている。

も、と、書いているのは、AGM形式にはAGM-RGB形式があるので、この形式の場合には、RGBA形式でデータを扱ったりもしているからなのだが、それ以外の形式、つまり、AGM-YV12/DCT/DCT+では、画像データは内部的にはYUV形式になっている。

と、いう事なので、MP4形式についても、内部データはYUVになっている筈なので、お互いにRGBAを使うよりは、YUVを使った方が変換処理は高速化できる筈なのだが、何故、それが判っていながら、今日の時点までRGBA形式を使っていたのか、というと、その方が、人間的には扱いやすいからだ。

具体的には、RGBA形式だと、映像の1ピクセルが1ワード、つまり、4バイトのunsigned intになるので、デバッグ時に値を確認するのも楽だし、何か細工しようとした時にも、扱いやすい。

これに対して、YUV形式は、通常は、単純に輝度と色情報に分かれているだけではなく、YUV420形式、つまり、色情報が削られる格好になっているし、輝度と色の格納されたメモリ領域が別々だったりする。

と、いう事なので、処理性能を気にする必要がない場合には、YUV形式なんて使う気にはならない訳なのだが、動画のエンコードを行おうとする場合には、処理性能が結構変わるので、YUV形式を無視する訳にもいかない訳だ。

もっとも、今日の時点では、AVFoundationからのデコード結果はRGBA形式で受け取り、AGMエンコーダーへは受け取ったRGBA形式データを渡しているのだが、AGM-DCT+の高圧縮モードでエンコードした場合にも、フルHDの15分のMP4動画は、Mac mini Late2014で、8分30秒くらいでエンコードできている。

ソースにしているMP4動画は、AGMtoMP4機能でエンコードしたモノで、MP4へのエンコード時間は4分だったので、AGMへのエンコードは、MP4へのエンコードの2倍くらいかかっているのだが、確か、Windows版でもこんな感じだった筈だ。

AGM形式は重いじゃないか、という声も聞こえてきそうなのだが、Windows版にしろ、Mac版にしろ、MP4へのエンコードではQSVが使われている訳だ。

そして、AGM動画のエンコードはCPUで行っているので、2コアのCorei5マシンである所のMac mini Late2014では、前述の通りなのだが、4コアのCorei7マシンでは、エンコード時間は2倍以上は短縮化されている。

もっとも、Mac mini Late2014のCorei5はHaswell世代で、Broadwell世代のCPUなら、QSVは2倍高速化されているらしい。

なので、Broadwell世代のCPU環境では、4コアあっても、AGM形式動画へのエンコードよりは、QSVを使ったMP4へのエンコードの方が軽いかもしれない。

と、いう事で、作者的には、現時点では、そういうマシン環境を持っていないので、確かめられないのだが、iMac 4kというのは、そんな感じの環境になる訳なので、欲しいかなあ、と、思っている訳だ。

もっとも、MP4と比較しているAGM形式は、エンコード負荷が最も高いDCT+の高圧縮モードで、AGM形式には、より軽いDCTモードもあるし、YV12/RGBモードなら、エンコード時のCPU負荷はより少ないので、圧縮率が低いのでストレージネックになる可能性もあるのだが、SSD環境でなら、QSVよりも低負荷でエンコードできる場合も多いかもしれない。

ただし、MP4と同じ視聴用としては、AGM-DCT+の高圧縮モードが対応する事になるので、作者的には、このモードを使った場合の処理負荷を減らしておきたい訳だ。

ちなみに、MP4toAGMでのエンコード時にAGM形式へのエンコード処理をコメントアウトした場合にも、処理は2分かかった。

つまり、AVFoundationでは、15分のフルHD動画のデコードに2分かかった事になるのだが、まあ、これは十分に高速かもしれない。

そして、今日の時点では、AVFoundationのデコードとAGMのエンコードは並列動作させていないので、並列動作させるだけで、もう少しは高速化できる筈だ。

もっとも、AVFoundationのデコード処理もマルチスレッド化されている感じなので、2コアのMac mini Late2014では、並列動作させても、エンコード時間が2分短縮される、という事にはならない感じだ。

« 今日の進捗は少し | トップページ | Windows版よりも速い »

トラックバック

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

この記事へのトラックバック一覧です: MP4 to AGMも可能に:

« 今日の進捗は少し | トップページ | Windows版よりも速い »

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