世界中のビデオコーデックが登録されているcodecs.comから可逆圧縮コーデックをピックアップし、ベンチマークテストを行いました。今回はほとんどのコーデックに更新が無いため特筆すべき点がAMV4ビデオコーデック以外ありません。テストは公平に行いますが、記事はAMV4ビデオコーデック中心となることをご了承ください。集約命令(Gather命令)が実用化されることで他のコーデックの性能も上がってくると思うので、それまではこんな状態が続くと思います。1.テスト内容と条件ベンチマークはHD(1280*720)のビデオキャプチャおよびPC画面のキャプチャを想定しています。Testを使って処理速度と、圧縮効果を測定します。次のPCを使い、3つのサンプル動画それぞれのテストと、マルチスレッドによる処理速度のテストを行います。CPUは4コア、8スレッド、HTT対応、AVX2対応。BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。0.9.114によるものです。AviUtlを使ってYUY2未圧縮に変換。動きが激しくて、画質も悪いため圧縮しにくい不利な条件のそろった動画によるテスト。いつものベンチマークで使っている動画と同じものです。動きが少なく、画質もいいため圧縮しやすい有利な条件のテスト。上下に黒帯が付いているので、黒帯部分で高い圧縮効果が得られるコーデックに有利となります。ゲームのベンチマークソフトを1280x720、60fpsに設定して実行。アマレコTVのウインドウキャプチャを使ってAMV2MT:R2の可逆圧縮で録画。Dubを使ってRGB32未圧縮に変換。PC画面を録画することを想定したRGB可逆圧縮のテストです。median(best)RGB32のテストではアルファチャネルが含まれます。bitはvctest-x86でテストしたものを「32」、vctest-x64でテストしたものを「64」としています。両方用意されているコーデックでは64bit版を優先してテストします。規定の手順でWindows8にインストールできないコーデックを除外しました(Huffyuvだけは手動でインストールしてテストしています)。fpsは1秒間に何フレーム処理できるかを示し、数値が高いほど優れています。ratio(圧縮効果)は未圧縮のデータに対し何分の1に圧縮できるかを示し。数値が大きいほど優れています。圧縮効果の面でMLCが4.3と非常に優れています。AMVビデオコーデックにとってはあからさまに不利な条件でのテストなので、圧縮効果の面で最下位。処理は速いけど圧縮効果が低いコーデックと言った位置づけになります。AMV4のDY3は不利な条件でもそこそこの圧縮効果を発揮しています。AMV4のデコード処理は大幅に高速化されていて、AMV2MT:Y2の527fpsに対しAMV4:DY2(AVX版)のデコード速度は1802fps(3.4倍)です。Video速度優先のエンコード処理がHuffyuvに肉薄しています。この部分は過去のベンチマークをみると徐々に差を詰めてきています。処理速度を見ると、大半のコーデックにおいてサンプル動画1のテストよりエンコード処理が早くなっている事が解ります。多くのコーデックにおいて圧縮し易い映像では処理が早くなる傾向があるようです。それに対しAMVビデオコーデックはサンプル1とサンプル2を比較してもエンコード処理の差はわずかとなっています。AMVのエンコードには条件分岐処理が存在しないため映像の内容による処理時間の変動が起きにくい特徴があります。次に圧縮効果の面をみると、MSUが18.1と突出しています。そのほかは圧縮効果が5.0前後の集団と、10.0前後の集団(MLC、Lagarith、AMV4DY3)の2つに分かれます。5.0前後の集団は映像の内容によらず5.0辺りから圧縮効果が伸び悩み、好条件であってもなかなか高い圧縮効果が得られません。10.0前後の集団は映像の内容によってはもっと高い圧縮効果が狙えます。AMV4のDY3は二次圧縮を適用したことで、動きが少なかったり、単調な画像(グラデーションやべた塗りなど)、黒帯があるなどの条件において高い圧縮効果が狙えます。黒帯あり2.3.ノイズが一切ないゲーム画面のキャプチャHuffyuvはアルファチャネルも処理しているため不利な結果となっています。MSUはRGB24でないと使えないようです。2.4.マルチスレッドによるテスト最後に各コーデックをマルチスレッドに設定した場合の処理速度を観察します。AMV4はSSE4.1版とAVX2.0版をテストしています。カッコ内の数値はスレッド数(フレーム分割数)で、1となっているのはシングルスレッドで処理しています。mは「マルチスレッドを使う」と言う項目が用意されているだけでスレッド数が不明のコーデックです。テストにはサンプル動画1を使います。Lagarithはマルチスレッドオプションを有効にすることで1.5倍程度fpsが向上しています。MLCはマルチスレッドを有効にすることで約2倍fpsが向上。60fpsの録画は処理が間に合わず無理ですがマルチスレッドに設定することで可能性が出てきます。Videoは分割数を増やす毎にfpsが上がっていくのがわかります。4コア8スレッドのCPUによるテストなので、4分割あたりで頭打ちされるかと思いましたが、ハイパースレッドテクノロジーも有効に働くようです。fpsが最も高くなるのはAMV2MTを8スレッドに設定した場合で2000fpsを超えます。AMV4のAVX2版はSSE4版に対しエンコードで約1.4倍、デコードで約1.8倍の性能。128bitのSSEレジスタから256bitのAVXレジスタへ対応した効果が得られています。»あまラボへようこそこのブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。