fc2ブログ
 

AMV4ビデオコーデック YUV 12bit圧縮モード(DS3)追加 ベータ版

既存のDR2、DR3、DY2、DY3に加え、新たにDS3 (YUV 12bit での圧縮)を追加しました。
あと、RyzenでSSE命令を優先的に使うようになります。
現在はベータ版です。少々のことは自力でやりくりできる方が対象となります。

amv410.png 

■インストール
初めてAMV4ビデオコーデックをインストールする場合は amv4_setup_64bit.msi を実行して新規インストールしてください。
既にAMV4ビデオコーデックを利用している場合は amv4_update_64bit.bat を実行することで上書きインストールできます。


■性能
PC2 Kabylake 7700K
OS  Microsoft Windows 10 Home 64-bit
CPU  Intel(R) Core(TM) i7-7700K
 定格4.20GHz TB時4.5GHz
MB  ASUS PRIME Z270-K
Memory  DDR4 16GB (8GB x 2 Dual channel) 2133MHz
Software・AMV4 Video Codec Ver4.10
・CodecBench64.exe Ver1.05 自作のベンチマークソフト(非公開)
備考  CPUは4コア、8スレッド、AVX2対応。動作クロックは自動設定。


Kabylake 7700K  4.2GHz - 4.5GHz  HD画質(1280x720) シングルスレッド処理
CodecMode ModuleEncode
FPS
 Decode
FPS
圧縮効果ファイルサイズ
MByte
AMV4DY3AVX2.01427 1473 3.09 1,241 MB 
AMV4DS3AVX2.01754 1855 3.46 1,108 MB 

DY3と比べDS3は処理速度が約20%早くなります。
また、ファイルサイズも10%から15%程度すくなくなります。



■その他
・AMV4 Ver4.02と上位互換、ライセンスキーもそのまま使えます。
・RyzenでCPU設定を「自動」とした場合は(RyzenではAVX命令が使えるけど 処理が遅くなる場合があるため)SSE版のモジュールを使います。AVX命令は使いません。
・CPU設定にRyzen用の「ZEN」を追加しましたが、現状「SSE4.1」と同じ内容となります。
CPU設定

・DR2、DR3、DY2、DY3はVer4.02と同じ内容となります。
・入出力フォーマットにNV12が追加されました。
・DR2、DR3、DY2、DY3を選択した場合でも、入力された動画のフォーマットがNV12の場合はDS3で動作します。
・対応OSにWindows10 64bit版を追加。
・対応OSからWindows7を削除。Windows7での動作確認は行っておりません。


■ダウンロード
AMV4 ビデオコーデック Ver4.10 ベータ版



次回はAMV4 Ver4.1に対応したスーパーアマレココを公開します。


AMV4はハイパースレッディングテクノロジーに対応しているの?

AMV4ビデオコーデックがIntelのハイパースレッディングテクノロジー(Hyper-Threading Technology、以下HTT)に対応しているか?とのことですが。対応していません。
ただしHTTについては対応しているかどうかではなく内容を理解する必要があるように思います。


1.HTTに対応するとはどういうことか
そもそもこれが良くわかりません。個人的には複数のスレッドを使って動作するソフトウエアは結果的にHTTの恩恵を受ける可能性があるようなので、 マルチスレッドで動作するソフトウエアはHTT対応を謳って良いのかなと考えます。

AMV4はシングルスレッド版しか作っていないのでこの考え方からHTT非対応となります。

ただ、この考え方だと、AMV2MTはマルチスレッドで動作するためHTT対応を謳ってもいいのか?と言う疑問がでてきます。
AMV2MTの開発にあたってはHTTを意識していなかったため、HTTに対応しているかと訊かれれば「AMV2MTはHTTに非対応」と回答してきましたが、先日行ったベンチマークの結果「ビデオコーデック・ベンチマーク2014夏」ではHTTの恩恵が得られているように見えます。 そこでAMV2MTとHTTについて追試してみました。


2.AMV2MTとHTTに関するベンチマークテスト
テスト方法や使うPCは先日のベンチマーク「ビデオコーデック・ベンチマーク2014夏」と同じです。
ベンチマークソフトのオプションにCPUマスクを指定して、CPUの割り当てを変更した場合にパフォーマンスがどう変わるかを観察します。


2.1.テスト条件
PCスペック
OS Windows8.1 x64 Professional
CPU Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz Haswell
MB ASRock H87 Performance (Intel H87)
Memory DDR3 1600 16GB(8GBx2 Dual Cannel)read=25.4GB/s write=14.8GB/s
Software Video Codec Test 2.0.0
AMV2MT Ver2.20i
備考 CPUは4コア、8スレッド、HTT対応、AVX2対応。動作クロックを3.4GHz(定格)で固定し、省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。

※ メモリーのread,writeはCrystalMark 0.9.114によるものです。

サンプル動画1 Nature Movie YUY2:動きの激しい比較的低画質な実写映像
 タイトル Mystery of the Nile
 情報 1280*720、2082frames、1分26秒、3,837,598,360Byte
sample1_nature.png
 備考  AviUtlを使ってYUY2未圧縮に変換。
 動きが激しくて、画質も悪いため圧縮しにくい不利な条件のそろった動画によるテスト。
 いつものベンチマークで使っている動画と同じものです。


2.2.テスト結果
AMV2MT Y2可逆とHTTのベンチマーク
スレッド
CPU
マスク
エンコード
fps
デコード
fps
圧縮
効果
内容タスク
マネージャ
(1)40xFF165018502.104スレッドで処理
CPUへの割り当てをしない
amv2mt(4)_0xFF.png
(2)40x0F162712572.102コア4スレッドで処理
(HTTを使った処理)
amv2mt(4)_0x0F.png
(3)40x55223518272.104コア4スレッドで処理
(HTTを使わない)
amv2mt(4)_0x55.png
(4)40xFF226918312.10HTTをBIOSで無効
(3)と同じ
amv2mt(4)_0xFF_HTT-off.png
(5)80xFF222822262.108スレッドで処理
CPUへの割り当てをしない
amv2mt(8)_0xFF.png
※ CPUマスク:”vctest-x86.exe -a 0xFF [ファイル名]”のようにしてテストしています


(1)は4つのスレッドをどのCPUを使って処理するか明示しない場合で、通常の利用シーンではこの結果が適用されます。
4つのスレッドをどのCPUへ割り当てるかはOSがその時のPCの状況に合わせてうまくやってくれることになっています。が、デコード処理は良いけどエンコード処理はパフォーマンスが低下していてうまく割り当てられていないように見えます。また、タスクマネージャを見るとまんべんなく割り当てられているのが解ります。

(2)は4つのスレッドを2つのCPUコアへ割り当ててHTTにより処理した結果です。もっとも低いパフォーマンスとなっています。

(3)は4つのスレッドを4つのCPUコアへ割り当てて処理しています。この条件ではHTTは使われないはずですが、心配なので念のためBIOSからHTTを無効にした(4)のテストも行いました。
(3)と(4)の結果がほぼ一致することからHTTを使わない場合のパフォーマンスとみてよさそうです。

(5)は4コア8スレッドのテストです。CPUリソースを最大限に利用するはずなので最もいい結果が期待できます。
しかし、エンコード速度は(3)の4コア4スレッドとほぼ変わらないためHTTの恩恵は得られないと言えます。
デコード速度は(3)より21%向上しているためHTTの恩恵を少しだけ受けられると言えそうです。


以上からAMV2MTはHTTに対応していると言っても差支えないけど、デコード速度が少し早くなるだけで
HTTに対応しているかどうかはそんなに重要ではない。と言ったところでしょうか。


3.エンコーダーでHTTの恩恵がなく、デコーダーで恩恵があるのは何で?
推察になりますが、条件分岐処理の影響が要因の一つと思います。
AMV2MTのエンコード処理には条件分岐が含まれていないのに対し、AMV2MTのデコード処理の中心部では条件分岐を使っています。
参考「AVX2対応デコーダーはなぜ3倍も高速化できたのか
 
条件分岐の分岐予測が外れると、しばらくの間、演算器を使わない状態になるので、その間にもう一方のスレッドが動作して全体のパフォーマンスが向上していると思われます。

また、上記のAMV2MTのデコード処理はHTTの恩恵を受けられますが、後に公開したAVX2対応 AMVデコーダー デモ版では条件分岐処理を廃止することで大幅にパフォーマンスを向上させています。
マルチスレッドに対応していないので確認はできませんが、おそらく条件分岐処理がないためHTTの恩恵は受けられないと思われますが、HTTの恩恵以上のパフォーマンスを発揮しています。

HTTによるパフォーマンス向上より、条件分岐処理を行わないなどの最適化の方がよりパフォーマンス向上が見込めるのでこの点からも、HTTに対応しているかどうかと言うのはあまり重要ではないように思います。


4.HTTについてのカン違い
いままで私がHTTを語る際に使っていた整数スレッド、実数スレッドのような概念は関係なかったようです。
Haswellを例にとると1つのコアに4つのALUが実装されているので整数スレッド2つでもHTTの恩恵を受けられる可能性があります。SSE命令やAVX命令も1コアあたり最大3つ使えるようです。

また、前述の条件分岐のようにスレッドが一時的に止まっている間、もう一方のスレッドが動作するので、整数処理しか行わないプログラムであってもHTTの恩恵は受けられます。


AMV4のサンプル動画を再生するときのDirect Showグラフ

基本的にはMicrosoftの AVI Splitter と MicrosoftのAVI Decompressor を使って再生されます。

図1.RGBサンプル動画(sample_amv4_rgb32_dr3.avi)を再生する場合の標準的なグラフ(x86)
graphedit_wmp_rgb_x86.png


図2.YUY2サンプル動画(sample_amv4_yuy2_dr3.avi)を再生する場合の標準的なグラフ(x86)
graphedit_wmp_yuy2_x86.png


図3.AMV4デコーダーフィルタを使ったYUY2の再生グラフ(参考)
graphedit_wmp_yuy2_x86_amv4dec.png

図2では2つ目のAVI Decompressorを使ってYUY2をRGBへ変換していたのが、AMV4デコーダーを使うとYUY2のままレンダラーへ接続できて余計な処理を省ける。




AMV4ビデオコーデック Ver4.02 不具合修正

AMV4ビデオコーデックに不具合が見つかったのでその修正版です。

【更新内容】
(1) 端数がある場合(横サイズが16で割り切れない場合)に画像端が乱れたりバッファオーバーランが起こる不具合を修正
(2) インストールしたユーザー以外で設定の変更ができないのを修正(要アンインストール、設定ファイル削除)


端数に関しては画像サイズの横画素数が16で割り切れない場合で、且つ、画像バッファの先頭アドレスと1ラインのバッファサイズの両方でアライメントが合ってしまう場合に異常が起こります。
アライメントに関してはSSE版が16バイト、AVX版は32バイトです。

例えば1272x720 YUY2の映像をAMV4のSSE版で処理すると画像が乱れて可逆となりません。同じ条件でもAVX版はアライメントが合わないため正常に処理できます。

「端数がある時はアライメントは合わない」と思い込んでいたため、端数があって、且つ、アライメントが合う条件の処理がすっぽり抜けていました。

その他、インストール時にずっとSHIFTキーを押しながら操作すると強制的にエラーを起こしてエラーログを表示するようにしてあります。

ダウンロード
ホームページ


メディアプレイヤークラシック(MPC)でYUY2の動画が再生できない

AMV4ビデオコーデックで作成したYUY2の動画がMPCで再生できない場合があります。
同じ条件でもAMV2MTやAMV3では再生できるのにAMV4だと再生できません。

これには3つの要因が関係します
(1) MPCなどのメディアプレイヤーは画像サイズに制限があり、RGBは制限が緩いのに対し、YUY2では制限がきつい(特定の画像サイズしか扱えない?)

(2) AMV2MT/AMV3はYUY2の動画をRGBへ変換してMPCへ渡せるのに対し、AMV4はYUY2の動画はYUY2でしかMPCへ渡さないようになっている。

(3) MPCはYUY2の動画をRGBへ変換してくれない(WMPなどはYUY2の動画をRGBへ変換してくれる)。

このような事情からAMV4とMPCの組み合わでYUY2の動画を扱うと特定の画像サイズしか再生できない見たいです。
平たく言うと、対応できない画像サイズのYUY2動画はRGBへ変換して再生するけど、AMV4もMPCもRGBへ変換してくれないから再生できない。
と言った感じです。

具体例をあげると
1280x720 YUY2と言った一般的なフォーマットであればAMV4+MPCでも再生できますが、
1264x720 YUY2のように横サイズが16少ない画像サイズになると再生できません。
同じ画像サイズであってもRGB(1264x720 RGB32)であればAMV4+MPCで再生可能です。

ではどうするか?
手っ取り早い解決策はAMV4の方でRGBへ変換してあげればいい(変換する機能自体は実装済み)のですが、
画質面で不利になる可能性があるのでYUVの動画はYUVでのみ出力したいところです。

そこでAMV4デコーダーフィルターとなります。
コーデックの規格であるVCMにはおそらく画像サイズと言う概念しかないのでこのようなケースではどうにもならないのですが、Direct Show Filter(デコーダーフィルター)なら画像サイズとは別に表示エリアの概念があるため、YUY2における画像サイズの制限をなんとかできるかもしれません。

例えば、上記の1264x720の例であれば、画像サイズ(全体の大きさ)を1280x720とし、
表示エリアを1264x720とすることでYUY2のまま再生可能になるのではないかと思います。
もしくは、1264x720 YUY2のままネゴシエートできるかもしれません。

と言うことで、近々AMV4 Direct Show Decoder Filterを作って試してみようと思います。




GraphEditでみる1264x720 YUY2の再生グラフ
GraphEditで1264x720 YUY2の動画がどのように再生されるかを試したのが下図です。
graphedit.png

1つ目のAVI DecompressorがAMV4ビデオコーデックを使ってYUY2形式でデコードして
2つ目のAVI Decompressor 0001がYUY2をRGB32へ変換しています。
カラースペースコンバーターは何だろう・・・1ラインのバイト数をレンダラーの仕様と合うよう調整しているのかな

このようにWindows Media Playerなどはプレイヤー側(Direct Show Graphのインテリジェンス機能)の働きによりRGBへ変換して再生できます。ただし、明らかに無駄な処理が含まれているのも解りますね。
理想は、一つ目のAVI Decompressorと同じ働きを持つAMV4デコーダーフィルタを用意して、ビデオレンダラーと直結することです。RGB変換やカラースペースコンバーターは排除したいところですね。


AMV4ビデオコーデック Ver4.01 インストール関連修正

Program Filesへインストールできないパソコンがあるようなので、インストール先を変更できるように変更しました。
また、インストール時に異常が発生した場合にエラーログを表示するようにしました(異常が発生してもエラーログが表示されない可能性あり)。


AMV4ビデオコーデック Ver4.01 インストール関係の修正
(1) インストール先のフォルダーを変更できるようにしました。
(2) インストール時に異常を検出した場合にエラーログを表示するようにしました。



インストール時に次のエラーログが表示される場合(異常があってもエラーログが表示されない可能性あり)はProgram Files以外へインストールしてください。
install_error_log.png

例えば次のように”C:\amv4\”とします。
faq_install_amv4.png


インストール先は”C:\amv4\”でなくても構いませんが、半角スペースや日本語が含まれていたり、文字数が9文字以上のフォルダへインストールできないパソコンがあるようなので、ご注意ください。

インストールが終わったら設定画面を表示できるか確認します。 設定画面が表示されたらインストールOKです。

インストール時に上記のエラーメッセージ(エラーログ)が表示される場合はブログのコメント欄へログ内容を投稿して頂けると、program filesへインストールできない原因の特定に役立ちますので、ご協力を頂けると幸いです。

ダウンロード
ホームページ


2014.6.30追記
Program Filesへインストールできないけどエラーログが表示されない場合
異常がなくてもエラーログを表示するテストバージョンVer4.01aを用意しましたので、こちらを使ってProgram Filesへインストールして頂き、表示されエラーログを教えていただけると助かります。
amv401a_error_log.zip

下記のVer4.02を使ってください。



2014.7.1追記
amv401b_error_log.zip

ショートパスに全角チルダ”~”が含まれている場合に半角チルダへ変換する処理を追加しました。
これでProgram Filesへインストールできるかもしれません。
まだテスト版なので異常がなくてもエラーログが表示されます。

これでうまくいくようなら、エラーログを表示しないようにした正式版を一般公開します。
うまくいく、うまくいかない教えていただけると助かります。


これは関係なかったようです


2014.7.6追記
Ver4.02からインストール中にキーボードのSHIFTキーを押しながらインストール操作をすることで、強制的にエラーを起こしてエラーログを表示します。

エラーが一切でないのに、AMV4ビデオコーデックの設定画面が表示できない。とか、インストールそのものがキャンセルされてしまう場合は、SHIFTキーを押しっぱなしにしてエラーが出るか確認して見てください。
amv402.zip


AMV4ビデオコーデックとアマレコTV Ver3.10公開

AMV4ビデオコーデックとアマレコTVの新バージョンをホームページで公開しました。

AMV4ビデオコーデック
【概要】
AMV2MTビデオコーデックの後継にあたるビデオコーデックです。
最新のCPU拡張命令であるAVX2へ対応し、処理速度が大幅に向上しました※1。
アマレコTVと組み合わせることでソフトウエアエンコーダーながらIntelのQuick Sync VideoやNVIDIAのNVENCと言ったCPUをほとんど使わないエンコーダーよりも少ないCPU負荷でFullHDの録画が可能となります。
AMV4は動画エンコード支援機能QSVを凌ぐ超低負荷

また、圧縮効果も二次圧縮の適用(一度圧縮したデータをもう一度圧縮する)などにより性能が向上。
リアルタイムで動作する可逆圧縮ビデオコーデックとしてトップレベルの圧縮性能を誇るまでになりました。
ビデオコーデック・ベンチマーク2014夏

そのほか64bit版のWindows7/8へ対応※2。64bitOS上では32bitアプリケーションと64bitアプリケーションの両方で利用できます。32bitのキャプチャソフトで録画して64bitの編集ソフトで編集するなどがProxy Codec64なしに可能となります。

QSVやNVENCを凌ぐ圧倒的な処理速度と、可逆圧縮としてトップレベルの圧縮効果を併せ持つ究極のソフトウエアエンコーダーとなっています。

※1 AVX2が利用できないパソコンではCPU拡張命令のSSE4.1を使って動作します。SSE4.1の場合でもAMV2MTビデオコーデックより速い処理と、高い圧縮効果を実現します。
※2 32bitOS用のインストーラも用意していますが、動作確認がとれないため動作対象外としています。

【その他】
(1) 各アプリケーションについて
ファンタジーリモート、アマレココ、アマレコ・ライトを使うには今まで通りAMV3が必要です。
アマレコTVを使うにはAMV4が必要です。

(2) AMV4オンラインヘルプについて
http://amalabo.blog35.fc2.com/blog-entry-270.html

(3) AMV2MTとAMV4の違い まとめ
http://amalabo.blog35.fc2.com/blog-entry-271.html

(4) AMV4ビデオコーデック 内部仕様でみるAMV4とAMV2MTの違い
http://amalabo.blog35.fc2.com/blog-entry-263.html



アマレコTV Live アマミキ! Ver3.10
【更新内容】
アマレコTVがAMV4仕様になり、Windows7/8へ暫定対応しました。
録画やリプレイ機能でAMV4ビデオコーデックを使います。圧縮効果が向上したためファイルサイズをより小さくしたり、リングバッファの記録時間を延ばす効果があります。

(1) Windows7 sp1 64bit版およびWindows8.1 64bit版へ暫定対応。
(2) CPUの拡張機能SSE4.1が必須になります。
(3) メインのコーデックをAMV4ビデオコーデックへ変更。
(4) リプレイ機能がAMV4ビデオコーデックへ対応。
(5) 録画設定のハーフサイズを廃止。
(6) オーディオデバイスを使わない時にMP3で圧縮する設定になっているとエラー落ちする不具合を修正。
(7) 録画停止時に書き込みエラーが起こる不具合を修正。



ダウンロード
ホームページ


AMV2MTとAMV4の違い まとめ

AMV4ビデオコーデックと同じRGB、YUY2に対応したAMV2MTとAMV4の違いを表にまとめました。

AMV2MTとAMV4の違い
   AMV2MT
Ver2.20i
AMV4
Ver4.00
AMV4補足
対応OS

Windows
2000/XP/7

各32bit版のみ

Windows7 SP1

Windows8.1
各64bit版のみ
新しいOSのみ対応
32bit版のOSでは
動作確認を行っていません
CPU拡張命令SSE2

SSE4.1

AVX2.0
SSE4.1必須
AVX2が使える場合は
自動的にAVX2を使います
対応プロセス32bitアプリのみ32bitアプリ
64bitアプリ
64bitOS完全対応
マルチスレッド1から8シングルスレッドのみ

シングルスレッドで

十分リアルタイム処理が可能
圧縮モード

高速可逆

標準可逆

標準(非可逆)

高圧縮(非可逆)

標準可逆

高圧縮可逆
可逆のみ
圧縮効果低め高め

可逆圧縮でもAMV2MTの

標準(非可逆)より高い圧縮効果

処理速度速い全体的にもっと速くなる

AMV2MTと比べ

SSE4版:やや速くなる

AVX2版:大幅に速くなる

デコード処理は最大で約3.4倍高速
    
最少画像サイズ80x4096x48 
画像サイズ横8、縦4の倍数横2、縦2の倍数 

RGB・YUY2変換

色サンプリング
左右の平均値左側の画素 
入力
フォーマット

RGB32

RGB24

RGB16(R5G6B5)

YUY2

UYVY

HDYC

RGB32

RGB24

YUY2

UYVY
RGB16とHDYCを廃止
圧縮
フォーマット

RGB24

YUV444

YUY2

RGB24

YUY2
YUV444を廃止
出力
フォーマット

RGB32

RGB24

YUY2

RGB32

YUY2
RGB24を廃止
FourCC‘AMM2’‘AMV4’ 
    
ハーフサイズ× 
プロファイル× 
インターレース画像× 
    
ライセンスキー共通共通

AMV2、AMV2MT、AMV3、AMV4

で共通

もっと詳しい違いについては次の記事を見てください。
AMV4ビデオコーデック 内部仕様でみるAMV4とAMV2MTの違い




AMV4ビデオコーデック オンラインヘルプ

AMV4ビデオコーデックのオンラインヘルプを用意しました
オンラインヘルプ


AMV2MT/AMV3からの主な変更点、および追加点は次のようになります。

(1) 対応するOSとインストーラについて
インストーラは32bitOS用と64bitOS用があります(コーデック毎ではなく、OS毎に用意しました)。
64bitOS用のインストーラには32bitコーデックと64bitコーデックの両方が含まれています。
なお、32bitOS用のインストーラを用意してありますが、動作確認ができないため動作対象外です。
オンラインヘルプ:インストール

インストーラがマルチユーザに対応しました。
インストールするユーザとコーデックを利用するユーザが異なっていても利用できます。

AMV2、AMV2MT、AMV3とは異なるコーデックですので、すでにインストールされているコーデックをアンインストールする必要はありません。
それぞれ個別にインストール、アンインストールできます。

(2) 仕様について
最少画像サイズは96x48です。(AMV2MTは80x40)
画像サイズは横2、縦2の倍数である必要があります。(AMV2MTは横8、縦4)
横を16の倍数としたときもっとも効率よく動作します。
RGBをYUY2へ変換する場合のカラー情報は左側の画素をサンプリングします。(AMV2MTは左右の平均値)
Intensity Proなどで使うカラーフォーマットのHDYCは動作確認が取れないため非対応としました。(一応実装はしてあります。)

(3) 動作確認用サンプル動画
動作確認用のサンプル動画とバッチファイルが同梱されています。
オンラインヘルプ:動作確認

(4) AVX2版とSSE4版について
AVX2版とSSE4版のどちらを使うかは自動で選択されます。
どちらが選択されたかは設定画面のタイトルで確認できます。
オンラインヘルプ:CPU確認

AVX2が使えるパソコンでどうしてもSSE4版を使いたい場合はメニューで設定します。
オンラインヘルプ:CPU設定

(5) ライセンスについて
AMV2、AMV2MT、AMV3用のライセンスを購入している場合は同じライセンスキーがAMV4でも使えます。
新たにライセンスを購入する必要はありません。AMV4の設定画面で登録作業をしてください。
設定ファイルは32bit版と64bit版で共通なのでどちらか一方で登録すればOKです。
オンラインヘルプ:ライセンス登録


ビデオコーデック・ベンチマーク2014夏

世界中のビデオコーデックが登録されているcodecs.comから可逆圧縮コーデックをピックアップし、ベンチマークテストを行いました。

今回はほとんどのコーデックに更新が無いため特筆すべき点がAMV4ビデオコーデック以外ありません。テストは公平に行いますが、記事はAMV4ビデオコーデック中心となることをご了承ください。
おそらく集約命令(Gather命令)が実用化されることで他のコーデックの性能も上がってくると思うので、それまではこんな状態が続くと思います。


1.テスト内容と条件
ベンチマークはHD(1280*720)のビデオキャプチャおよびPC画面のキャプチャを想定しています。
適当なサンプル動画(未圧縮YUY2および未圧縮RGB32)を用意して、Ut Videoの作者である梅澤さんが公開しているVC Testを使って処理速度と、圧縮効果を測定します。



1.1.テスト内容
次のPCを使い、3つのサンプル動画それぞれのテストと、マルチスレッドによる処理速度のテストを行います。


1.2.PCスペック

PCスペック
OS Windows8.1 x64 Professional
CPU Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz Haswell
MB ASRock H87 Performance (Intel H87)
Memory DDR3 1600 16GB(8GBx2 Dual Cannel)read=25.4GB/s write=14.8GB/s
Software Video Codec Test 2.0.0
備考 CPUは4コア、8スレッド、HTT対応、AVX2対応。動作クロックを3.4GHz(定格)で固定し、省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。

※ メモリーのread,writeはCrystalMark 0.9.114によるものです。



1.3.サンプル動画

サンプル動画1 Nature Movie YUY2:動きの激しい比較的低画質な実写映像
 タイトル Mystery of the Nile
 情報 1280*720、2082frames、1分26秒、3,837,598,360Byte
sample1_nature.png
 備考  AviUtlを使ってYUY2未圧縮に変換。
 動きが激しくて、画質も悪いため圧縮しにくい不利な条件のそろった動画によるテスト。
 いつものベンチマークで使っている動画と同じものです。

サンプル動画2 CG Movie YUY2:動きの少ない高画質なCG映像
 タイトル The LEGOR Movie - Official Main Trailer [HD]  
 情報 1280*720、4321frames、3分00秒、7,964,559,144Byte
sample2_lego.png
 備考  youtubeから720p版をダウンロードしてAviUtlでYUY2未圧縮に変換
 動きが少なく、画質もいいため圧縮しやすい有利な条件のテスト。
 また、上下に黒帯が付いているので、黒帯部分で高い圧縮効果が得られるコーデックに有利となります。

サンプル動画3 PC Game RGB32:ノイズが一切ないゲーム画面のキャプチャ
 タイトル Street Fighter IV 
 情報 1280*720、15820frames、4分23秒、58,319,119,660Byte
sample3_sf4.png
 備考  ゲームのベンチマークソフトを1280x720、60fpsに設定して実行。
 アマレコTVのウインドウキャプチャを使ってAMV2MT:R2の可逆圧縮で録画。
 Virtual Dubを使ってRGB32未圧縮に変換。
 PC画面を録画することを想定したRGB可逆圧縮のテストです。 
 参考動画



1.4.コーデック

コーデック一覧
コーデック名 bit内容設定
 AMV2MT Video Codec
 Ver 2.20i
 32 YUY2のテストでは「Y2標準可逆」を使用
 RGB32のテストでは「R2標準可逆」を使用
 ライセンス登録済(ロゴなし)
config_amv2mt.png
 NEW 
 AMV4 Video Codec
 Ver 4.00
 64 AVX2版を使用
 ライセンス登録済(ロゴなし)

 YUY2のテストでは「DY2:標準可逆(速度)」
 及び「DY3:高圧縮可逆(圧縮)」を使用

 RGB32のテストでは「DR2:標準可逆(速度)」
 及び「DR3:高圧縮可逆(圧縮)」を使用
config_amv4.png
 Huffyuv
 Ver 2.1.1
 32 Predict median(best)
 RGB32のテストではアルファチャネルが含まれます。
config_huffyuv.png
 NEW 
 UT Video Codec Suite
 Ver14.2.0
 64 「圧縮率優先」および
 「デコード速度優先」の2パターンをテスト

 YUY2のテストでは「ULY2」を使用
 RGB32のテストでは「ULRG」を使用
config_utvideo.png
 Lagarith Lossless Video Codec
 Ver 1.3.27
 64 YUY2のテストでは「YUY2」を使用
 RGB32のテストでは「RGB」を使用
config_lagarith.png
 Alparysoft Lossless Video
 Ver 2.0
 32 lossless compression
 enable prediction
 realtime
 ロゴあり
config_AlparySoft.png
 CorePNG
 Ver 0.8.2
 32 1-Fastestconfig_CorePNG.png
 NEW 
 MLC Codec
 Ver 1.2
 64 Muximum speed
 Use Multithreading off
config_MLC.png
 FastCodec
 Ver 1.0beta
 32 Absolutely lossless
config_FastCodec.png
 MSU Lossless Video Capture
 Ver 0.6.0
 32 Absolutely lossless
 Maximize speed
 RGB32には対応していない
config_msu.png

※ bitはvctest-x86でテストしたものを「32」、vctest-x64でテストしたものを「64」としています。 両方用意されているコーデックでは64bit版を優先してテストします。
※ 規定の手順でWindows8にインストールできないコーデックを除外しました(Huffyuvだけは手動でインストールしてテストしています)。




2.結果

2.1.動きの激しい比較的低画質な実写映像
result1_nature.png
※ fpsは1秒間に何フレーム処理できるかを示し、数値が高いほど優れています。
※ compression ratio(圧縮効果)は未圧縮のデータに対し何分の1に圧縮できるかを示し。数値が大きいほど優れています。

圧縮効果の面でMLCが4.3と非常に優れています。
AMVビデオコーデックにとってはあからさまに不利な条件でのテストなので、圧縮効果の面で最下位。
処理は速いけど圧縮効果が低いコーデックと言った位置づけになります。
一方、AMV4のDY3は不利な条件でもそこそこの圧縮効果を発揮しています。
また、AMV4のデコード処理は大幅に高速化されていて、AMV2MT:Y2の527fpsに対しAMV4:DY2(AVX版)のデコード速度は1802fps(3.4倍)です。
そのほかでは、UT Video速度優先のエンコード処理がHuffyuvに肉薄しています。この部分は過去のベンチマークをみると徐々に差を詰めてきています。


2.2.動きの少ない高画質なCG映像
result2_CG.png

処理速度を見ると、大半のコーデックにおいてサンプル動画1のテストよりエンコード処理が早くなっている事が解ります。
多くのコーデックにおいて圧縮し易い映像では処理が早くなる傾向があるようです。
それに対しAMVビデオコーデックはサンプル1とサンプル2を比較してもエンコード処理の差はわずかとなっています。
AMVのエンコードには条件分岐処理が存在しないため映像の内容による処理時間の変動が起きにくい特徴があります。

次に圧縮効果の面をみると、MSUが18.1と突出しています。
そのほかは圧縮効果が5.0前後の集団と、10.0前後の集団(MLC、Lagarith、AMV4DY3)の2つに分かれます。
5.0前後の集団は映像の内容によらず5.0辺りから圧縮効果が伸び悩み、好条件であってもなかなか高い圧縮効果が得られません。
一方、10.0前後の集団は映像の内容によってはもっと高い圧縮効果が狙えます。
AMV4のDY3は二次圧縮を適用したことで、動きが少なかったり、単調な画像(グラデーションやべた塗りなど)、黒帯があるなどの条件において高い圧縮効果が狙えます。

AMVビデオコーデックのYUY2可逆における圧縮効果
 
 AMV2MT
Y2
 AMV4
DY2
 AMV4
DY3
備考 
 Mystery of the Nile 2.09 2.52 3.09 WMV
 The Discoverers (IMAX) 720p 4.13 4.16 4.95  WMV
 The Book Thief Trailer 4.32 4.95 7.37 H264
 RoboCop TRAILER 1 4.17 4.92 7.54 H264
 The LEGOR Movie 5.35 5.93 9.44 H264 黒帯あり
 Transformers 4  5.38 6.32 10.33 H264 黒帯あり
 Veronica Mars 7.09 7.72 13.66 H264 黒帯あり




2.3.ノイズが一切ないゲーム画面のキャプチャ
result3_GAME.png

Huffyuvはアルファチャネルも処理しているため不利な結果となっています。
MSUはRGB24でないと使えないようです。



2.4.マルチスレッドによるテスト
最後に各コーデックをマルチスレッドに設定した場合の処理速度を観察します。
AMV4はSSE4.1版とAVX2.0版をテストしています。
カッコ内の数値はスレッド数(フレーム分割数)で、1となっているのはシングルスレッドで処理しています。
mは「マルチスレッドを使う」と言う項目が用意されているだけでスレッド数が不明のコーデックです。
テストにはサンプル動画1を使います。
result4_multithread.png


Lagarithはマルチスレッドオプションを有効にすることで1.5倍程度fpsが向上しています。

MLCはマルチスレッドを有効にすることで約2倍fpsが向上。シングルスレッドでは720p 60fpsの録画は処理が間に合わず無理ですがマルチスレッドに設定することで可能性が出てきます。

UT Videoは分割数を増やす毎にfpsが上がっていくのがわかります。
4コア8スレッドのCPUによるテストなので、4分割あたりで頭打ちされるかと思いましたが、ハイパースレッドテクノロジーも有効に働くようです。

fpsが最も高くなるのはAMV2MTを8スレッドに設定した場合で2000fpsを超えます。
AMV4のAVX2版はSSE4版に対しエンコードで約1.4倍、デコードで約1.8倍の性能。128bitのSSEレジスタから256bitのAVXレジスタへ対応した効果が得られています。




 
 
あまラボへようこそ
このブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。

ファイルのダウンロードはホームページの方でお願い致します。

質問・要望・不具合報告はこちら
アマレコTV
アマミキ!
アマレココ
アマレコ・ライト
ファンタジーリモート
AMVコーデック



ホームページ
カテゴリ
最新コメント
カレンダー
04 | 2023/05 | 06
- 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 - - -
最新記事
最新トラックバック
ブログ内タグ

アマレコTV ビデオキャプチャ アマレコVR AMVコーデック Oculus Quest アマレココ アマミキ! コーデック gQuest SC500 動画配信 Pico GO ファンタジーリモート 4K アマレコライト プラグイン G2 AMV4 oculus Unity SC512 ライブ機能 パススルー機能 デスクトップキャプチャ AVX2 Passthrough FAQ リモートソフト 質問コーナー ニコニコ動画 HDキャプチャ DirectShow 120Hz 背景透過 遅延 可変再生速度 レゴ 解説動画 Meta 組み換え VR LEGO XL2420T GV-USB2 2 アセット機能 液晶モニター 倍速液晶 デインターレース PS4 ベンチマーク アマステ AMV2MT Asset Intensity Pico4 MetaQuest Pro VRonVR MonsterX3A designs VideoKeeper2 AVX Alternate XCAPTURE-1 SD-USB2CAP4 GV-USB インストール RDT233WX-Z 32ZP2 31006 ffmpeg WindowsMR Rift 画像処理 31024 T2 60fps RGBキャプチャ UtVideo Shadow Play RYZEN 電源オプション HDCP Haswell HDMI 音遅延 QSV MonsterXU3.0R LameACM MP3 31021 フィギュア 音ズレ 録画 ゲームスムーズモード HT OBS MPC ハイパースレッディングテクノロジー NVEnc 液晶テレビ DirectShowFilter プレビュー 擬似NTSCキャプチャ SD-USB2CUP4 Livetube AtomでHDキャプチャ キャプチャーツール シンクライアント イベント IntensityPro DC-HD1 額縁遅延 REGZA ZP3 32ZP32 オーバーレイ リプレイ機能 モノステ 倍速駆動 倍速補完処理 キャプチャカード Robust Video Matting API APIパススルー機能 60Hz 検証 passthrough python pytorch ハンドジェスチャー パカラーススルー機能 AssetBundle 2.0 Tracking ファイルマネージャプラス SkyBox Hand AMPlayer 新プレイヤー機能 GPU使用率 LAVFilters Preferred 可逆圧縮 GV-USB3 Kabelake SSE SKnet Filter Tweaker Windows 90Hz 新アマレコVR MR VRコントローラー SteamVR VR動画 フレーム間圧縮 XCapture-1 

ブログ内検索
月別アーカイブ
アマレココに関するリンク
お世話になっているソフトのリンク
RSSリンクの表示
管理画面
  • 管理画面