圧縮)を追加しました。あと、RyzenでSSE命令を優先的に使うようになります。少々のことは自力でやりくりできる方が対象となります。実行して新規インストールしてください。実行することで上書きインストールできます。CPUは4コア、8スレッド、AVX2対応。動作クロックは自動設定。MBDY3と比べDS3は処理速度が約20%早くなります。ファイルサイズも10%から15%程度すくなくなります。Ver4.02と上位互換、ライセンスキーもそのまま使えます。処理が遅くなる場合があるため)SSE版のモジュールを使います。AVX命令は使いません。・CPU設定にRyzen用の「ZEN」を追加しましたが、現状「SSE4.1」と同じ内容となります。・DR2、DR3、DY2、DY3はVer4.02と同じ内容となります。・入出力フォーマットにNV12が追加されました。・DR2、DR3、DY2、DY3を選択した場合でも、入力された動画のフォーマットがNV12の場合はDS3で動作します。・対応OSからWindows7を削除。Windows7での動作確認は行っておりません。Ver4.1に対応したスーパーアマレココを公開します。Technology、以下HTT)に対応しているか?とのことですが。HTTについては対応しているかどうかではなく内容を理解する必要があるように思います。1.HTTに対応するとはどういうことかそもそもこれが良くわかりません。マルチスレッドで動作するソフトウエアはHTT対応を謳って良いのかなと考えます。AMV4はシングルスレッド版しか作っていないのでこの考え方からHTT非対応となります。この考え方だと、AMV2MTはマルチスレッドで動作するためHTT対応を謳ってもいいのか?と言う疑問がでてきます。AMV2MTの開発にあたってはHTTを意識していなかったため、HTTに対応しているかと訊かれれば「AMV2MTはHTTに非対応」と回答してきましたが、先日行ったベンチマークの結果「ビデオコーデック・ベンチマーク2014夏」ではHTTの恩恵が得られているように見えます。そこでAMV2MTとHTTについて追試してみました。2.AMV2MTとHTTに関するベンチマークテストテスト方法や使うPCは先日のベンチマーク「ビデオコーデック・ベンチマーク2014夏」と同じです。ベンチマークソフトのオプションにCPUマスクを指定して、CPUの割り当てを変更した場合にパフォーマンスがどう変わるかを観察します。CPUは4コア、8スレッド、HTT対応、AVX2対応。BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。0.9.114によるものです。AviUtlを使ってYUY2未圧縮に変換。動きが激しくて、画質も悪いため圧縮しにくい不利な条件のそろった動画によるテスト。いつものベンチマークで使っている動画と同じものです。[ファイル名]”のようにしてテストしています(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のデコード処理の中心部では条件分岐を使っています。条件分岐の分岐予測が外れると、しばらくの間、演算器を使わない状態になるので、その間にもう一方のスレッドが動作して全体のパフォーマンスが向上していると思われます。デモ版では条件分岐処理を廃止することで大幅にパフォーマンスを向上させています。マルチスレッドに対応していないので確認はできませんが、おそらく条件分岐処理がないためHTTの恩恵は受けられないと思われますが、HTTの恩恵以上のパフォーマンスを発揮しています。HTTによるパフォーマンス向上より、条件分岐処理を行わないなどの最適化の方がよりパフォーマンス向上が見込めるのでこの点からも、HTTに対応しているかどうかと言うのはあまり重要ではないように思います。4.HTTについてのカン違いいままで私がHTTを語る際に使っていた整数スレッド、実数スレッドのような概念は関係なかったようです。Haswellを例にとると1つのコアに4つのALUが実装されているので整数スレッド2つでもHTTの恩恵を受けられる可能性があります。SSE命令やAVX命令も1コアあたり最大3つ使えるようです。前述の条件分岐のようにスレッドが一時的に止まっている間、もう一方のスレッドが動作するので、整数処理しか行わないプログラムであってもHTTの恩恵は受けられます。Decompressorを使ってYUY2をRGBへ変換していたのが、AMV4デコーダーを使うとYUY2のままレンダラーへ接続できて余計な処理を省ける。不具合修正AMV4ビデオコーデックに不具合が見つかったのでその修正版です。インストールしたユーザー以外で設定の変更ができないのを修正(要アンインストール、設定ファイル削除)端数に関しては画像サイズの横画素数が16で割り切れない場合で、且つ、画像バッファの先頭アドレスと1ラインのバッファサイズの両方でアライメントが合ってしまう場合に異常が起こります。アライメントに関してはSSE版が16バイト、AVX版は32バイトです。YUY2の映像をAMV4のSSE版で処理すると画像が乱れて可逆となりません。同じ条件でもAVX版はアライメントが合わないため正常に処理できます。「端数がある時はアライメントは合わない」と思い込んでいたため、端数があって、且つ、アライメントが合う条件の処理がすっぽり抜けていました。その他、インストール時にずっとSHIFTキーを押しながら操作すると強制的にエラーを起こしてエラーログを表示するようにしてあります。0メディアプレイヤークラシック(MPC)でYUY2の動画が再生できないAMV4ビデオコーデックで作成したYUY2の動画がMPCで再生できない場合があります。同じ条件でもAMV2MTやAMV3では再生できるのにAMV4だと再生できません。AMV2MT/AMV3はYUY2の動画をRGBへ変換してMPCへ渡せるのに対し、AMV4はYUY2の動画はYUY2でしかMPCへ渡さないようになっている。MPCはYUY2の動画をRGBへ変換してくれない(WMPなどはYUY2の動画をRGBへ変換してくれる)。このような事情からAMV4とMPCの組み合わでYUY2の動画を扱うと特定の画像サイズしか再生できない見たいです。平たく言うと、対応できない画像サイズのYUY2動画はRGBへ変換して再生するけど、AMV4もMPCもRGBへ変換してくれないから再生できない。YUY2のように横サイズが16少ない画像サイズになると再生できません。RGB32)であればAMV4+MPCで再生可能です。画質面で不利になる可能性があるのでYUVの動画はYUVでのみ出力したいところです。そこでAMV4デコーダーフィルターとなります。Filter(デコーダーフィルター)なら画像サイズとは別に表示エリアの概念があるため、YUY2における画像サイズの制限をなんとかできるかもしれません。表示エリアを1264x720とすることでYUY2のまま再生可能になるのではないかと思います。YUY2のままネゴシエートできるかもしれません。Filterを作って試してみようと思います。YUY2の動画がどのように再生されるかを試したのが下図です。0001がYUY2をRGB32へ変換しています。Graphのインテリジェンス機能)の働きによりRGBへ変換して再生できます。明らかに無駄な処理が含まれているのも解りますね。Decompressorと同じ働きを持つAMV4デコーダーフィルタを用意して、ビデオレンダラーと直結することです。RGB変換やカラースペースコンバーターは排除したいところですね。Filesへインストールできないパソコンがあるようなので、インストール先を変更できるように変更しました。インストール時に異常が発生した場合にエラーログを表示するようにしました(異常が発生してもエラーログが表示されない可能性あり)。インストール先のフォルダーを変更できるようにしました。インストール時に異常を検出した場合にエラーログを表示するようにしました。Files以外へインストールしてください。次のように”C:\amv4\”とします。インストール先は”C:\amv4\”でなくても構いませんが、半角スペースや日本語が含まれていたり、文字数が9文字以上のフォルダへインストールできないパソコンがあるようなので、ご注意ください。インストールが終わったら設定画面を表示できるか確認します。設定画面が表示されたらインストールOKです。filesへインストールできない原因の特定に役立ちますので、ご協力を頂けると幸いです。Filesへインストールして頂き、表示されエラーログを教えていただけると助かります。amv401a_error_log.zip下記のVer4.02を使ってください。2014.7.1追記amv401b_error_log.zipショートパスに全角チルダ”~”が含まれている場合に半角チルダへ変換する処理を追加しました。Filesへインストールできるかもしれません。テスト版なので異常がなくてもエラーログが表示されます。これでうまくいくようなら、エラーログを表示しないようにした正式版を一般公開します。うまくいく、うまくいかない教えていただけると助かります。これは関係なかったようです2014.7.6追記Ver4.02からインストール中にキーボードのSHIFTキーを押しながらインストール操作をすることで、強制的にエラーを起こしてエラーログを表示します。エラーが一切でないのに、AMV4ビデオコーデックの設定画面が表示できない。インストールそのものがキャンセルされてしまう場合は、SHIFTキーを押しっぱなしにしてエラーが出るか確認して見てください。Ver3.10公開AMV4ビデオコーデックとアマレコTVの新バージョンをホームページで公開しました。AMV4ビデオコーデック【概要】AMV2MTビデオコーデックの後継にあたるビデオコーデックです。最新のCPU拡張命令であるAVX2へ対応し、処理速度が大幅に向上しました※1。VideoやNVIDIAのNVENCと言ったCPUをほとんど使わないエンコーダーよりも少ないCPU負荷でFullHDの録画が可能となります。AMV4は動画エンコード支援機能QSVを凌ぐ超低負荷また、圧縮効果も二次圧縮の適用(一度圧縮したデータをもう一度圧縮する)などにより性能が向上。リアルタイムで動作する可逆圧縮ビデオコーデックとしてトップレベルの圧縮性能を誇るまでになりました。ビデオコーデック・ベンチマーク2014夏そのほか64bit版のWindows7/8へ対応※2。64bitOS上では32bitアプリケーションと64bitアプリケーションの両方で利用できます。Codec64なしに可能となります。QSVやNVENCを凌ぐ圧倒的な処理速度と、可逆圧縮としてトップレベルの圧縮効果を併せ持つ究極のソフトウエアエンコーダーとなっています。AVX2が利用できないパソコンではCPU拡張命令のSSE4.1を使って動作します。SSE4.1の場合でもAMV2MTビデオコーデックより速い処理と、高い圧縮効果を実現します。32bitOS用のインストーラも用意していますが、動作確認がとれないため動作対象外としています。各アプリケーションについてファンタジーリモート、アマレココ、アマレコ・ライトを使うには今まで通りAMV3が必要です。アマレコTVを使うにはAMV4が必要です。Ver3.10【更新内容】アマレコTVがAMV4仕様になり、Windows7/8へ暫定対応しました。録画やリプレイ機能でAMV4ビデオコーデックを使います。圧縮効果が向上したためファイルサイズをより小さくしたり、リングバッファの記録時間を延ばす効果があります。64bit版へ暫定対応。CPUの拡張機能SSE4.1が必須になります。メインのコーデックをAMV4ビデオコーデックへ変更。リプレイ機能がAMV4ビデオコーデックへ対応。録画設定のハーフサイズを廃止。オーディオデバイスを使わない時にMP3で圧縮する設定になっているとエラー落ちする不具合を修正。録画停止時に書き込みエラーが起こる不具合を修正。まとめAMV4ビデオコーデックと同じRGB、YUY2に対応したAMV2MTとAMV4の違いを表にまとめました。共通AMV2、AMV2MT、AMV3、AMV4で共通もっと詳しい違いについては次の記事を見てください。オンラインヘルプAMV4ビデオコーデックのオンラインヘルプを用意しましたオンラインヘルプAMV2MT/AMV3からの主な変更点、および追加点は次のようになります。対応するOSとインストーラについてインストーラは32bitOS用と64bitOS用があります(コーデック毎ではなく、OS毎に用意しました)。64bitOS用のインストーラには32bitコーデックと64bitコーデックの両方が含まれています。32bitOS用のインストーラを用意してありますが、動作確認ができないため動作対象外です。オンラインヘルプ:インストールインストーラがマルチユーザに対応しました。インストールするユーザとコーデックを利用するユーザが異なっていても利用できます。AMV2、AMV2MT、AMV3とは異なるコーデックですので、すでにインストールされているコーデックをアンインストールする必要はありません。それぞれ個別にインストール、アンインストールできます。仕様について最少画像サイズは96x48です。(AMV2MTは80x40)画像サイズは横2、縦2の倍数である必要があります。(AMV2MTは横8、縦4)横を16の倍数としたときもっとも効率よく動作します。RGBをYUY2へ変換する場合のカラー情報は左側の画素をサンプリングします。Proなどで使うカラーフォーマットのHDYCは動作確認が取れないため非対応としました。(一応実装はしてあります。動作確認用のサンプル動画とバッチファイルが同梱されています。AVX2版とSSE4版についてAVX2版とSSE4版のどちらを使うかは自動で選択されます。どちらが選択されたかは設定画面のタイトルで確認できます。オンラインヘルプ:CPU確認AVX2が使えるパソコンでどうしてもSSE4版を使いたい場合はメニューで設定します。ライセンスについてAMV2、AMV2MT、AMV3用のライセンスを購入している場合は同じライセンスキーがAMV4でも使えます。新たにライセンスを購入する必要はありません。AMV4の設定画面で登録作業をしてください。設定ファイルは32bit版と64bit版で共通なのでどちらか一方で登録すればOKです。世界中のビデオコーデックが登録されている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レジスタへ対応した効果が得られています。0あまラボへようこそこのブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。