キャプチャカードによる遅延は1フレーム未満
1.遅延の要素
遅延の要素としては次のものがあります。
1) ビデオキャプチャカードによるキャプチャ処理
2) ビデオキャプチャソフトによる画像処理
3) ビデオレンダラーによる画像処理、垂直同期待ち
4) ビデオカードによるビデオ信号出力処理
5) モニターによる画像処理と表示処理
今回のテストでは1から4の間で起こる遅延をフレーム単位で計測します。モニターによる遅延は含まれていません。
以降1フレームは16.67ms(1/60秒)とし、遅延が1フレーム未満と言った場合は16.67msより短い時間で1から4の処理を終えられることを意味します。
1フレーム以上、2フレーム未満と言った場合は16.67ms以上かかるが33.33msまではかからない事を意味します。
2.テスト方法
アマレコTVのプレビューにフレームカウンターを表示します(やり方は後述)。
デスクトップの設定を1280x720 60pにします。
ビデオカードに2つある出力のうち一方をモニター、もう一方をキャプチャカードの入力に接続し、ミラーリング状態にします。
この状態でアマレコTVのウインドウ位置を調整すると、アマレコTVのカウンター表示がビデオカードから出力されます(下図フレーム1)。
これがキャプチャカードの次のキャプチャタイミングで取り込まれ、アマレコTV内で新しいカウンター2と合成され下図フレーム2のようになります。
これが再びビデオカードから出力され繰り返されると下図フレーム3の様にアマレコTVのプレビューにカウンター3,2,1・・・とフレームカウンターが並びます。

※ 左側に1/1000秒単位の時間、右側にフレームカウンタを表示しています。
このような動作は遅延が1フレーム未満の場合の話です。1フレーム以上の遅延があるとカウンターの並びが変わってきます。 例えば遅延が1以上、2フレーム未満の場合のカウンターは5,3,1・・・と2間隔で並びます。
同様に、遅延が2以上、3フレーム未満の場合は7,4,1・・・と3間隔ですので、表示されるカウンターの間隔から遅延を把握することができます。
後は適当なタイミングでアマレコTVのスクリーンショット機能を使いビットマップファイルを作って観察します。
また、録画したビデオファイルをコマ送りで観察することでより多くのデータを得ることができますが、ドロップフレームやフレームレートに異常が無いことが前提となりますので注意して下さい。
OS | WindowsXP Professional SP3 Windows7 |
MB | M3N78-EM |
CPU | AMD Phenom(tm) 8750 Triple-Core Processor 2.4GHz |
MEMORY | DDR2-800 2GB(2GB*1) |
HDD | WD10EADS-00M2B0 1TB, 5400rpm |
ビデオカード | GeForceGT240 ZT-20401-10L |
キャプチャカード | SC-500N1/DVI Driver 1.1.0.108.0 |
アマレコTV | Ver2.20b AmDeinterlace Ver2.20b |
サンプル画像 | アマレコTVのスクリーンショットでPNG保存した物 |
3.結果
OS | レンダラー | 測定結果(遅延) | サンプル画像 |
Windows XP | オーバーレイ | 2フレーム未満 | ![]() |
Windows 7 | オーバーレイ | 2フレーム未満 | ![]() |
Windows 7 | EVR | 3フレーム未満 | ![]() |
Windows 7で多く使われるEVRはXPのオーバーレイ表示より1フレーム分遅延が大きくなる。
Windows 7でもオーバーレイ表示を使えば遅延を少なくできる。
4.追加テスト
EVRにはエミュレーションレイヤ(以下エミュレーションモード)と言うのが存在します。 エミュレーションモードは必要な機能がビデオカードに搭載されていなかったり、OSが対応していない場合に、ソフトウエア処理によりEVRの機能をエミュレーションしながら動作するモードです。 性能が低く処理に時間がかかったり、画質が低下するため普通は使いませんが、垂直同期待ちを行わないようなので遅延を減らすことができます。
OS | レンダラー | 測定結果(遅延) | サンプル画像 |
Windows XP | EVR エミュレーション | 1フレーム未満 | ![]() |
Windows 7 | EVR エミュレーション | 1フレーム未満 | ![]() |
XP/7共にEVRのエミュレーションモードだと1フレーム未満の遅延で動作するようです。
この結果からビデオキャプチャカードによる遅延は1フレーム未満であることが分かります。
※ 垂直同期待ちを行わないとティアリングが生じます。
5.まとめ
今回のテスト結果をまとめると
・ビデオキャプチャカード(SC500)の遅延は1フレーム未満である
・アマレコTVによる遅延は十分な性能のPCを使う限り0とみなしていい(画像処理を行わない場合)
・EVRはオーバーレイレンダラーより遅延が大きい
・レンダラー処理で垂直同期待ちを行わなければ遅延を減らせる
なお、私の環境ではSC500がインターレース(1080i)を受け付けないためテストできませんでしたが、インターレース方式の場合は2フレーム分をまとめてビデオキャプチャソフトへ渡すためキャプチャ処理の遅延が1フレーム分大きくなると思われます。
6.カウンター表示用フィルター
今回のテストを行うためのフィルターです。
ある程度パソコンに詳しい人でないと利用できません。
自己責任かつ、分からない事は自力で調べられる方のみご利用ください。
【使い方】
1) アマレコTV Ver2.20bのAmDeinterlace.axを置き換える
2) アマレコTV.exeと同じフォルダにあるAmDeinterlace.iniをメモ帳で開く
3) 最後の行に「iCounterTest=1」を追加する
4) テストが終了したら「iCounterTest=0」に書き換える
【仕様】
対応解像度(横):720、1280、1920
対応解像度(縦):480以上
対応カラーフォーマット:YUY2、UYVY、HDYC
【ダウンロード】
amdeint220b.zip
- 関連記事
-
- マイコンソフト HDビデオキャプチャカード「SC-500N1/DVI」 その2 PS2キャプ編
- マイコンソフト HDビデオキャプチャカード「SC-500N1/DVI」 その3 PC画面キャプ編
- マイコンソフト HDビデオキャプチャカード「SC-500N1/DVI」 その4 まとめ
- マイコンソフト HDビデオキャプチャカード「SC-500N1/DVI」 その5 NEO・GEOとSFC
- マイコンソフト HDビデオキャプチャカード「SC-500N1/DVI」 その6 対応状況
- マイコンソフト HDビデオキャプチャカード「SC-500N1/DVI」 その7 色ズレ補正
- マイコンソフト HDビデオキャプチャカード「SC-500N1/DVI」 その8 新ドライバ1.1.0.101.3
- SC-500N1/DVI その9 新ドライバ1.1.0.102.3 音ドロップ改善
- SC-500N1/DVI その10 キャプチャ画像比較(動画)
- SC-500N1/DVI その11 XSYNC-1量産版
- SC-500N1/DVI その12 新ドライバ1.1.0.108.0 複数枚同時利用対応
- キャプチャカードによる遅延は1フレーム未満
- SC-500N1/DVI その13 録音テスト
- キャプチャカードによる遅延は映像より音声の方が大きい
- SC-500N1/DVI その14 二枚挿し
trackback
コメントの投稿
No title
ほかのSD-USB2CAP4などはその2倍くらいあります。
たぶんUSBタイプのやつはほとんどそうです。
Re: No title
>
> ほかのSD-USB2CAP4などはその2倍くらいあります。
> たぶんUSBタイプのやつはほとんどそうです。
SC-500N1/DVIはなぜ遅延が少ないのか?
SC-500N1/DVIは本当に遅延が少ないのか?
USBタイプのやつはなぜ遅延が大きいのか?
USBタイプのやつは本当に遅延が大きいのか?
USBタイプでも製品によって遅延に差があるのではないか?
このあたりを教えて頂けるといいな
No title
よく調べないでレスしてました。
たぶんこれ?http://amalabo.blog35.fc2.com/blog-entry-207.html
No title
0:00:02.4389732s(31.9678ms), Idle=11ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.4710155s(32.0423ms), Idle= 9ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.5029460s(31.9305ms), Idle= 8ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.5429612s(40.0152ms), Idle=14ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):########
0:00:02.5749597s(31.9985ms), Idle=13ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.6069780s(32.0183ms), Idle=12ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.6389608s(31.9828ms), Idle=10ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.6709646s(32.0038ms), Idle= 9ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.7109494s(39.9848ms), Idle=16ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):#######
0:00:02.7431089s(32.1595ms), Idle=14ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.7749683s(31.8594ms), Idle=13ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.8069615s(31.9932ms), Idle=12ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.8389542s(31.9927ms), Idle=10ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.8709416s(31.9874ms), Idle= 9ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.9109495s(40.0079ms), Idle=15ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):########
0:00:02.9429252s(31.9757ms), Idle=14ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:02.9749556s(32.0304ms), Idle=13ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
0:00:03.0069401s(31.9845ms), Idle=11ms, IdleCount= 0, Size=614400byte, SP(0) Pl(1) Dc(1):######
これはEVRエミュ有効時ですが、
win764bitですがEVRエミュ有効時とそうでないときの差はわかりませんでした。
しかしブレイブルーをプレイしているときにこの数値のような遅延を体感で感じることはできませんでした(むしろほぼ無いような?)
吐き出されている数値と実際の遅延に差はないですよね…うーん
Re: No title
> これはEVRエミュ有効時ですが、
> win764bitですがEVRエミュ有効時とそうでないときの差はわかりませんでした。
>
> しかしブレイブルーをプレイしているときにこの数値のような遅延を体感で感じることはできませんでした(むしろほぼ無いような?)
> 吐き出されている数値と実際の遅延に差はないですよね…うーん
その数値はキャプチャカード単体の値なのでレンダラーによる違いは反映されません。
また、遅延を直接表しているわけでもありません。
例えば最初の行の32.0496msはキャプチャカードにより最低でも32msの遅延があることはわかりますが、実際のキャプチャカードの遅延は40msかもしれないし100msかもしれません。
EVRのハードウエア動作とEVRのソフトウエアエミュレーションの遅延の差は、通常1から2フレームです。
その違いを体感できるかどうかは個人差に大きく依存します。
また、キャプチャカードの遅延が大きくなればなるほどレンダラーによる遅延の差は体感しにくくなり、キャプチャカードの遅延が小さいほどレンダラーによる遅延の差を大きく感じる性質もあります。
No title
レンダラーによる遅延は上のようなツールをつかわなければわからないのですね。
またテキストに吐き出される遅延は最短であってそれ以上早くはならないと…
ということは私はもしかして超鈍感!?
ありがとうございましたw