fc2ブログ
 

64bit版 AMVビデオデコーダー ベンチマーク

【ベンチマークソフト】
いつもであればコーデックのベンチマークの場合、梅澤さんのvctestを使うのですが、今回はデコーダーのみなのでvctestが使えません。なのでデコーダーだけテストするベンチマークソフトを作成しデコーダーのアーカイブに同梱してあります。

32bit版のデコーダーをテストするときは
DecBench86.exe [テストしたいコーデックでエンコードしたAVIファイル]

64bit版のデコーダーをテストするときは
DecBench64.exe [テストしたいコーデックでエンコードしたAVIファイル]


それぞれアマレコTVまたはAviUtlを使ってテストしたいコーデックでエンコードしたAVIファイルをフルパスで指定して実行すると次のような結果が表示されます。

結果
File          : C:\bin\sample_amv2mt_y2.avi
Total         : 362frame,  Total decode time 61.668ms
Codec info    : Amv2mtDecoder64 ( AMV2 MT Video Decoder x64 Ver2.20i )
Process       : x64
Buff align    : 0x00000067f97d7400 (128 Byte aligned)
Decode format : YUY2
Decode time   : Min= 0.153ms
                Max= 0.664ms
                Ave= 0.170ms (5870.168fps)

「Process」は64bitで処理した場合"x64"、32bitで処理した場合"x86"と表示されます。
「Buff align」はデコード結果を書き込むフレームバッファの先頭アドレスです。
通常128Byteの境界に合わせるので効率のいいメモリアクセスができます。
「Decode format」はデコード結果のフォーマットです。通常YUY2でデコードします。デコーダーがYUY2に対応していない場合はRGB 32bitでデコードします。それでもダメな場合はエラーとなります。
「Decode time」は1フレームあたりのデコード処理にかかった時間です。ファイル処理の時間は含まれません。

なお、"DecBench86.exe /h"でヘルプを表示します。




【簡単なテスト】
AMV2MTの「Y2:標準可逆」設定で作成したサンプル動画(sample_amv2mt_y2.avi)を同梱してあるので
DecBench86.exe フルパス\sample_amv2mt_y2.avi
DecBench64.exe フルパス\sample_amv2mt_y2.avi

として32bit版と64bit版のテストをすると次のような結果(表1)になります。
この場合、32bit版より64bit版は約25%高速であることがわかります。

表1 AMV2MT Ver2.20i 1スレッド 1コア
設定32bit64bit64bit処理性能
時間FPS時間FPS
Y20.21 ms4601 fps0.17 ms5771 fps125%
※ 「64bit処理性能」は32bitデコーダーに対する64bitデコーダーの処理性能です。125%の場合、64bit版は32bit版より25%高速です。



【実践的なテスト】
サンプル動画は画像サイズが320x240と小さいため、より実践的なテストとして 2012年9月に行った以前のテスト とできるだけ同じ条件で以下のベンチマークテストを行いました。

【測定条件】
ベンチマークはHD(1280x720)のビデオキャプチャ(実写)を想定しています。
動画ソースはマイクロソフトのサイトからダウンロードしたWMV形式のファイルをAviUtlと各コーデックを使って変換したものを使います。 (2009年の「動きの激しい動画」と同じになります)
測定はDecBench86.exeおよびDecBench64.exeを使ってYUY2にデコードした際のデコード時間(復元にかかった時間)を測定します。

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

パソコンのスペック
OSWindows7 x64 Professional SP1
CPUIntel(R) Core(TM) i5-3470S CPU @ 2.90GHz Ivy Bridge
MBASRock H77 Pro4-M (Intel H77)
MemoryDDR3 1600 8GB(4GBx2 Dual Cannel)read=23.7GB/s write=12.2GB/s
SoftwareDecBench86.exe
DecBench64.exe
備考CPUは4コア、マルチスレッドテクノロジーには対応していません。動作クロックを2.9GHz(定格)で固定し、省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。


【結果】
表2 AMV2MT Ver2.20i 1スレッド 1コア
設定32bit64bit64bit処理性能
時間FPS時間FPS
Y10.97 ms1029 fps0.71 ms1405 fps 136%
Y22.47 ms404 fps2.13 ms 468 fps115%
Y33.32 ms 300 fps2.57 ms388 fps129%
Y45.40 ms184 fps4.48 ms222 fps120%

表3 AMV3 Ver3.00i 1スレッド 1コア
設定32bit64bit64bit処理性能
時間FPS時間FPS
S00.19 ms5258 fps0.26 ms3764 fps75%
S10.64 ms1562 fps0.49 ms2003 fps128%
S2 1.72 ms 579 fps 1.51 ms 660 fps113%
S32.37 ms420 fps1.93 ms517 fps123%
S44.53 ms220 fps3.69 ms270 fps122%

以前のベンチマークテストと同じ条件かどうか
使用したPCは同じだけど、テストに使ったベンチマークソフトが違うため心配ですが、 2012年9月に行った以前のテスト の「表3 シングルスレッドによるAMVビデオコーデックの結果(1スレッド、1コア)」 と比較して32bit版の結果がおおむね6%の差異なので同じようなテストができているとみていいかと思います。
ただし、AMV3のS0設定だけ30%以上違う結果となっているのでその部分は参考になりません。
(S0については、明らかにおかしいので何度かテストしましたが結果は変わらないので勘違いではない)


AMVビデオデコーダー 32bit版と64bit版の比較
最少でもAMV3 S2設定で約13% 64bit版は高速という結果になりました。


64bit版 AMVビデオデコーダーの仕様について

64bit版の仕様と32bit版との違いについて書きます。

AMV ビデオデコーダー 64bit版 仕様
(1) デコーダーから出力できるカラーフォーマット(RGBとかYUY2など)は自動で選択されます。
(2) 色補間フィルターは必要に応じて自動で適用されます。
(3) スケール補正を廃止。
(4) 処理スレッドは1スレッドに固定されます。
(5) 設定画面はありません(設定不要)。
(6) AMV2MT Ver2.20以降とAMV3のすべてのバージョンをデコードできます。
(7) SSE、SSE2に対応したCPUが必要です(MMXを使わなくなった)。
(8) AMV3の色補間フィルターは32bit版と64bit版とで計算誤差によりわずかに異なる結果となる場合があります。
(9) RGB 24bitでの出力はできません。RGB 32bit専用となります。


出力フォーマットが自動
32bit版はYUV系で入力されたものをRGBで出力することができましたが、64bit版はYUV系で入力されたものはYUV系でのみ出力、RGB系で入力されたものはRGBでのみの出力となります。
64bit版はコーデックに入出力される色空間が(自動的に)一致するため、「コーデックの設定がどうこう」とか「色空間がどうこう」といったことを気にすることなくコーデック上では正しい結果を得ることができます。
YUV系をRGBに変換する場合はアプリケーション(編集ソフトやメディアプレイヤー)の設定で一元管理してください。


色補間フィルター
32bit版はフィルターを使うかどうか設定できますが、64bit版は必要に応じてフィルターが自動で適用されます。
フィルターをOFFにする人は少ないと思うので基本的にON固定としました。
フィルターが適応されないのはAMV3で「デインターレース」オプションがONの場合です。


スケール補正を廃止
出力フォーマットが入力フォーマットと一致するため、スケール補正(フルレンジ、リミテッドレンジ)は必要なくなります。
スケール補正が必要な場合はアプリケーション(編集ソフトやメディアプレイヤー)で行ってください。


1スレッドに固定
64bit版のデコード処理は32bit版よりさらに20%から50%程度高速化されているため、ほぼすべてのケースにおいて
1スレッドだけでもリアルタイム処理(秒間60フレーム以上のデコード処理)が可能です。
なのでCPU負荷を増やしてまでマルチスレッドで処理する意味は無いかと思い現状1スレッド固定としました。


対応バージョン
現在出回っているAMVビデオコーデックのほぼすべてに対応しています。
64bit版でデコードできないのは初期のころ(2008年7月から2009年2月)に公開していたAMV2MTです。


SSE、SSE2に対応したCPUが必要です
開発環境を刷新したため最新のCPU拡張命令であるAVX2まで利用可能となりましたが、今回はあえて従来通りのSSE2縛りでコーディングしてあります。
また、32bit版は8バイト分のデータ処理にMMX命令を使っていましたが、64bit版では通常のレジスタで8バイト分の処理ができるためMMX命令を使わなくなりました。


色補間フィルターの計算誤差について
32bit版と64bit版とで計算式は同じですが、計算するときのbit数(8bitで計算するか16bitで計算するか)の違い
と計算の順序により計算結果に若干の計算誤差が生じます。
この誤差はAMV3デコーダーでRGB出力する際に生じますが見た目で判る差異ではありません。
AMV3デコーダーでYV12やYUY2で出力する場合、および、AMV2MTデコーダーによる出力に関しては32bit版と64bit版
とで完全に一致します。


RGB 32bit専用
RGB 24bitでないと困るケースが皆無であり、おそらく24bitより32bitの方が効率よく処理できる(アプリケーションの方で24bitのデータは32bitに変換してから処理するなど)と思うので24bitを廃止しました。


次回は64bit版のベンチマークについて書きます。


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

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

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



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