fc2ブログ
 

AMV4ビデオコーデック 概要

AMV4ビデオコーデックの主な仕様はAMV2MTがベースとなっており、RGBとYUY2、UYVY、HDYCに対応します。
圧縮設定については非可逆圧縮を廃止し可逆圧縮のみとなります。

非可逆圧縮の廃止については、AMV2MTの「Y3:標準」の非可逆圧縮よりAMV4では可逆圧縮のまま高い圧縮効果が得られるようになるためです。同様にAMV3の圧縮フォーマットであるYV12もAMV4のYUY2の方が圧縮効果が高く画質も良いため、現状YV12についても非対応です。

設定画面


AMV4の圧縮設定はYUY2の場合次の2つになります。

(1) DY2:標準可逆(Y2:標準可逆 相当)
(2) DY3:高圧縮可逆(Y3:標準 相当)

DY2はAMV2MTのY2とほぼ同じ内容になりますが少しだけ圧縮効果が向上します(DY2はY2よりファイルサイズを小さくできる)。
DY3は圧縮パターンの増加や二次圧縮の適用により非可逆圧縮のY3よりも高い圧縮効果が得られます。可逆圧縮なので画質もY3より良くなりますので「DY3はY3よりファイルサイズを小さくしつつ画質も良い」と言うことになります。

一方、処理速度はAMV4のSSE版はSSE4.1対応(SSE4.1必須)となり、AMV2MTとほぼ同じか若干速く処理できます(DY2とY2、DY3とY3を比べた場合、ほぼ同じか若干AMV4の方が速い)。
さらに、AMV4のAVX2版は大幅に処理速度が向上、AVX2版のDY3はY2より高速で動作します。

AMV4ビデオコーデックについて簡単にまとめると

(1) 可逆圧縮専用
(2) 圧縮効果が高まる(非可逆圧縮のY3より圧縮効果が高い「高圧縮可逆」を追加)
(3) SSE版はSSE4.1対応になりAMV2MTとほぼ同じか若干速く処理できる
(4) AVX2版は大幅に処理速度が向上する


※ 記事の内容は開発中のものです。公開時の仕様と異なる場合があります。
最終的な仕様については、公開時の記事を見てください。


AVX2って何? そしてAMV4ビデオコーデック

AVX2は2013年6月に発売されたインテルのCPU Haswellに搭載された拡張命令で、それまでSSE命令を使って128bitずつ処理していたものをAVX2では256bitずつ処理することができます。
単純に考えるとSSE命令中心で作成されたプログラムをAVX2へ移行することで2倍の処理能力(処理時間が半分で済む)
が期待できます。
AVX(AVX1?)については2011年1月に発売されたSandy Bridgeから搭載されていて実数演算が中心でしたが、今回のHaswellで搭載されたAVX2は整数演算が中心の拡張命令となっています。

また、SSE命令にはなかった命令もいくつか追加されていて、例えばデータ要素毎に異なるシフト値を指定できるシフト命令「VPSLLVQ」なんかは便利だと思いました。


AVX2ってどう?(良いの?)
AVX2自体の性能はとても優秀で、簡単なプログラムであれば、ほぼSSEの倍の性能を達成できるようです。
3倍高速 AVX2対応 AMVデコーダー デモ版
しかし、一般的なプログラムにおいてAVX2の性能を引き出そうと思うと、一筋縄ではいかないのかな。AVX2へ対応したプログラムと言うのは9か月経った今でも極めて少ないように思います。

また、Haswell自体の評価が低くいのも開発者からするとつらいところで、AVX2に対応したCPUの普及が進まないと、積極的にAVX2へ対応しづらいですよね。

AVX2に対応したプログラムが充実してくればHaswellに対する評価も上がってくると思いますが、しばらくは

「AVX2を生かせるプログラムが少ない」
    ↓
「AVX2を活かせないとHaswellの評価が低く普及しない」
    ↓
「開発者はAVX2へ対応しても利用できるユーザーが限られる(需要が少ない)」

と言った負の連鎖が続くのかなと思います。


そしてAMV4ビデオコーデックへ
1年半ほど前に「AVXによりパフォーマンスが向上するかも、パフォーマンスが向上したら圧縮効果を高める方向で調整できるかも」と言った内容の記事を書きました。
AMVビデオコーデックのこと
このときは期待とか予測でしたが、実際にテストしたAVX2の性能は私の期待以上のもので、その開発は趣味であればとても楽しく刺激的です。

現時点でAVX2へ対応しても、利用できるCPUを所有している人が極僅かなため需要は少ないと思いますが、デコード処理が3倍早くなるなどAVX2の性能の高さはとても魅力的ですので、AVX2へ完全対応した新しいビデオコーデック「AMV4 ビデオコーデック」を制作することにしました。

なお、AMVビデオコーデックはシェアウエアなので継続して利用される場合ライセンスを購入して頂くことになりますが、AMV2、AMV2MT、AMV3、AMV4でライセンスを共通としますので、すでにライセンスを購入された方、および、これから購入される場合も、AMV4のために追加で購入する必要はありません。

AMV4の公開まで、まだまだ時間がかかりますが、おいおい内容を書いていこうと思います。


AVX2対応 AMVデコーダー デモ版の追試

以前行った「3倍高速 AVX2対応 AMVデコーダー デモ版」のテスト結果がさらに前に行った古いPCによるテスト結果より悪かったため、Haswellの性能ってそんなものなのかなと調査しました。

 古いPC Win7
Ivy Bridge
i5-3470S CPU @ 2.90GHz
新しいPC Win8
Haswell
i7-4770 CPU @ 3.40GHz
AMV2MT Ver2.20i
32bit
HDデコード処理時間
Y2:標準可逆設定
2.47 ms (404 fps)2.59 ms (384 fps)
※ 新しいPCであるHaswellの方が動作クロックが17%高いにも関わらず、わずかですが悪い結果となっています。



なかなか原因はわからないのですが、一つ影響が出たのがOSの電源オプションでした。
電源オプション 

いままでCPUのパフォーマンスを安定させるため「高パフォーマンス」を選択してテストしてきましたが、新しいPCでは「高パフォーマンス」を選択するとPC全体のパフォーマンスが低下します(おそらくテストに使ったPC固有の問題)。「バランス」を選択すると本来の性能と思われる結果が出ましたので「バランス」に設定して再テストした結果を掲載します。


1.ベンチマークテスト
1.1.テスト環境


パソコンのスペック
OSWindows8 x64 Professional
CPUIntel(R) Core(TM) i7-4770 CPU @ 3.40GHz Haswell
MBASRock H87 Performance (Intel H87)
MemoryDDR3 1600 16GB(8GBx2 Dual Cannel)read=25.4GB/s write=14.8GB/s
SoftwareDecBench86.exe Ver1.01
DecBench64.exe Ver1.01
備考CPUは4コア、8スレッド、HTT対応、AVX2対応。動作クロックを3.4GHz(定格)で固定し、
省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。

テスト用動画(動きの激しい動画)
タイトルMystery of the Nile
情報1280*720、2082frames、1分26秒
備考AviUtlと各コーデックを使ってエンコードしてテスト用の動画ファイルを作成



1.2.結果
AMV2MT Y2(標準可逆) 1コア、1スレッド  デコードテスト
コーデック高パフォーマンスバランス高パフォーマンスに対する
バランス設定の性能
時間FPS時間FPS
32bit2.59 ms384 fps1.90 ms524 fps136%
64bit2.23 ms446 fps1.68 ms594 fps133%
64bit AVX20.88 ms1131 fps0.66 ms1515 fps133%
※ FPSは処理時間をもとに算出した値です。数値が大きいほど優れています。
※ 高パフォーマンスは前回のテスト結果をそのまま記載しています。バランスは今回テストした結果です。

電源オプションを「バランス」にしたことで「高パフォーマンス」にたいし全体的に約33%ほど良い結果がでました。
Ivy Bridgeの32bitのテスト結果2.47 ms (404 fps)にたいしても、Haswellのバランス設定では1.90ms(524 fps)と約29%良い結果です。これは動作クロックの増加分17%を超えるのでHaswell自体がIvy Bridgeより10%程度高性能と言ったところでしょうか。

AMVビデオコーデックにおいては後発のHaswellがそれ以前のCPUより遅くなるということは無いようで安心しました。


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

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

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



ホームページ
カテゴリ
最新コメント
カレンダー
02 | 2014/03 | 04
- - - - - - 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リンクの表示
管理画面
  • 管理画面