ちょこっとだけベンチマークをとった結果を書いときます。エンコードするソースの選定は間違ってるかも知れない(笑)。こういうソースにしろよ、という意見はコメントあたりでお願いします。

まず計測条件。マシン環境は以下の通り。

CPU
Intel Core 2 Quad Q6600 @2.4GHz G0ステッピング 定格動作
マザー
ASUS P5K (Intel P35 + ICH9DH)
メモリ
DDR2-800 1GBx4 (CL 5-5-5-15)
OS
Microsoft Windows XP SP3

他のパーツはベンチマークには影響しないはずなので省略。

エンコードする映像ですが、「なぜか」アーマードコア4のOPムービーです。いや、単にリストの先頭にあっただけなんで…

あ、これは私がうpった動画ではないです。
この映像は「基本セピア調」「演出として全体的に強くノイズを乗せている」という特徴があります。後者は上の動画では分かりませんが。

これを Intensity を使って 720p でキャプチャします。ムービー自体は 30fps で作られているようなので AviUtl で 30fps に落として YUY2 で吐きだしたものをソースにします。それ以外の処理(ノイズリダクションとか)は一切やっていません。全部で 5178 フレームになりました。

そしてコーデック一覧

コーデック バージョン
Ut Video Codec Suite 4.0.2
Huffyuv 2.1.1
Huffyuv_mt >>712
YUY2 Lossless Codec (YLC) 0.25
Lagarith 1.3.16
FastCodec 1.0beta
Arithyuv 1.1.1
MSU Lossless Video Codec 0.6.0

注釈

  • CorePNG、Luna、LCL も入れようと思ったのですが、テスト中にクラッシュしてしまうので除外しています。Luna と LCL は AviUtl では正常に使えているんですが…
  • Lagarith は可逆圧縮スレ私家版がありますが、公式版と速度に違いが見られなかったので公式版の方を使います。
  • Toponoky は公式サイトがアクセスできないので除外しています。FastCodec も同じサイトにありますが、以前からインストールしてあるので含めています。
  • ソースがプログレッシブかインターレースかを指定できるコーデックに関しては、プログレッシブを指定しています。Huffyuv_mt の場合は、インターレース閾値を 9999 ラインにすることでプログレッシブと判断させています。
  • 全てのコーデックに関して、内部保持形式は YUV422 8bit になるように設定します。

で、結果。エンコード/デコード時間に関しては、計測誤差は1%程度あるものと考えてください。(なので小数点以下6桁書いてあるのはまったく意味がない)

コーデック 設定 圧縮比 エンコード時間
(ms/frame)
デコード時間
(ms/frame)
Ut Video
(ULY2)
left div1 2.79 8.426669 15.275708
left div2 2.79 4.576193 7.836144
left div4 2.79 2.689822 4.074336
left div8 2.79 2.697791 4.065961
median div1 3.05 8.551017 24.033356
median div2 3.05 4.632559 12.272849
median div4 3.05 2.702032 6.321357
median div8 3.05 2.707380 6.285017
Huffyuv left 2.41 5.260615 19.999358
gradient 2.12 6.199076 20.304600
median 2.40 6.458842 31.768252
Huffyuv_mt left 1t 2.41 5.272316 19.999824
left 2t 2.41 3.458569 10.667671
left 4t 2.41 2.570711 6.007526
left 8t 2.41 3.043179 6.682861
gradient 1t 2.38 6.011497 20.304099
gradient 2t 2.38 4.145986 10.831200
gradient 4t 2.38 3.029422 6.077456
gradient 8t 2.38 3.518943 6.775207
median 1t 2.67 6.295332 31.784898
median 2t 2.67 4.024939 16.609804
median 4t 2.67 2.882188 8.920323
median 8t 2.67 3.398716 9.796471
YLC (設定なし) 2.99 9.867101 21.708314
Lagarith st 3.40 33.823276 52.389496
mt 3.40 18.900243 35.259493
FastCodec (設定なし) 3.11 18.433964 43.036491
Arithyuv (設定なし) 3.06 30.782699 68.995802
MSU Max speed 3.89 190.081009 169.448806

結果から読み取れることは、

  • 圧縮比を見ると、MSU > Lagarith > FastCodec > Arithyuv > Ut Video > YLC > Huffyuv_mt > Huffyuv の順番。Huffyuv_mt が Huffyuv より成績が良いのは、mt ではプログレッシブとして圧縮することができているからである。Huffyuv 2.2.0 では同じことができるらしいので、その場合は Huffyuv_mt = Huffyuv となるだろう。
  • Ut Video と Huffyuv_mt のエンコードを比較すると、シングルスレッドでは Huffyuv_mt の方が速い。しかし、Ut Video の方がマルチスレッド時の処理効率が良いらしく、2、4 と増えると逆転して、4 では Ut Video の方が速い。
  • さらに、8 (論理プロセッサ数より多くした場合)では、Ut Video では 4 の場合と比べて計測誤差程度の変化しかないが、Huffyuv_mt では有意に遅くなっている。Ut Video ではあくまでも分割数を指定しているのであり、スレッドは最大でも論理プロセッサ数までしか起動しないが、Huffyuv_mt では指定した数だけスレッドを起動するため、無意味なコンテキストスイッチのオーバーヘッドが無視できないためだと思われる。
  • デコード速度だけを見ると、Ut Video の left div4 がテストしたコーデックの中では最も速い。2 スレッドまでに制限しても、やはり Ut Video の left div2 が最も速い。
  • Lagarith はマルチスレッド時の処理効率が悪いのか、2倍未満の高速化にとどまっている。2スレッドでしか動かないのか、純粋に処理効率が悪いのかは分からないが、いずれにせよ残念である。
  • MSU は非常に遅いが、圧縮比に関して一線を画す性能を見せている。

もちろん、上記の結果(特に圧縮比)は、このソースに関してのものなので、当然ながらソースが変われば結果が変わります、念のため。

Trackback

only 1 comment untill now

  1. コーデックベンチマーク(HD実写編)

    AC4 の OP もないだろうということで、HD ハンディカムで実写風景を撮ってきました。手ぶれすごいですが。
    計測条件は前回とほぼ同じです。HD ハンディカムから HDMI 経由でキャプチャした…

Add your comment now