キューの目的はコマ落ち、映像の遅延を減らすことです。CPUの負荷が高く時々コマ落ちや遅延が発生するような状況で効果があります。 ビデオレンダラを別スレッドで実行するためPentium4HTやデュアルコアCPUでは効果がより大きくなります。 Media Player ClassicのVMR7, VMR9(renderlessモードを含む)での動作を確認しています。 高度なオプションですので、多少の試行錯誤に耐えられる方にお勧めします。 なおキュー (queue)とは待ち行列の意味でビデオレンダラへの入場を待つバッファの行列を指しています。
このオプションはffdshowのキュー機能を有効にします。チェックを外した場合も「その他の制御」以下の項目には影響ありません。
安定性の問題からMedia Player Classic以外ではキューをオフにしています(デフォルト)。 他のアプリケーションで試してみたい場合はチェックを外すか、アプリケーションの実行ファイル名をセミコロン;で区切って記載してください。 ビデオレンダラに対して特別な処理を行っているアプリケーションではキューは安定しないかもしれません。
このオプションはVMR9でYV12色空間を使用した場合にもキューを有効にするかを指定します。 一部のインテル製のオンボードビデオチップ(82865Gなど)ではVMR9のYV12でキューを使用できません。
ffdshowは上流のフィルタ(通常スプリッタ)からサンプルをもらって処理をした後、下流のフィルタ(通常ビデオレンダラ)から得たバッファ(メモリ)に書き込みます。
キューがオフの場合、ビデオレンダラはバッファを1つしか持ちません。
処理が早く済んでもビデオレンダラが現在のフレームを表示(タイムスタンプで定刻が決まっている)してしまうまでバッファが空かないので待たされます。
この間CPUは何もせずに時間を浪費してしまいます。
キューがオンの場合、ビデオレンダラは複数のバッファを持ちます。
処理が終わるとすぐにバッファをもらって書き込み、それをキューに入れます。
そしてすぐに次のコマの処理を始めます。このようにしておけば重たいコマが幾つか続いてもキューに貯まったバッファを送り出してしのぐことが出来ます。
例えば30fpsの動画では1コマ33ミリ秒(以下ms)以内に処理する必要があります。
連続した10コマの処理にかかる時間が各々20,20,20,20,20,20,50,50,50,50(ms)だったとします。
6コマ目まではなんら問題なさそうですがキューがオフの場合、20ms働いて13ms休むことを繰り返します。
最初の6コマの処理に(20 + 13) * 6 = 198msかかってしまいました。7コマ目で遅延またはコマ落ちを生じます。
キューがオンの場合最初の6コマを 20 * 6 = 120msで処理しますので10コマ目までちゃんと間に合います。
実際のプログラムではキューに入れたバッファを下流側へ送り出すスレッドが必要です。
このスレッドはVMR7ではffdshow内部に、VMR9ではビデオレンダラ側に実装されています。
そしてビデオレンダラ本体もそのままffdshow本体とは別スレッドで実行されます。
ベンチマークテストでキューの効果を測ることは困難なため自分自身の目と耳を信じてコマ落ちや遅延を見極めるのが一番です。
自信がない時はOSDの「キュー済みサンプル数」と「映像の遅延」をオンにすると良いでしょう。
ただしOSDがCPUを消費することをお忘れなく。
キューはマルチコアのCPUを均等に使うように設計されたものではありません。
従ってパフォーマンスモニタは役に立ちません。
またtimeCodec.exeによるベンチマークは動作原理で書いた待ち時間を0にしてテストを実行するため意味がありません。
バッファの数がレジストリから変更可能です。デフォルトは10です。
HKEY_CURRENT_USER\Software\GNU\ffdshow\default (defaultはプリセット名で置換してください)のqueueCountを適当に変更してみてください。
数字を増やすことで効果を増強できます。
散発的に重いフレームが混じるようなケースでは10で十分ですが、ハイビットレートの1シーンをまるごとカバーするには50程度必要です。
ビデオメモリを消費するため大きすぎる値を指定するとビデオカードの動作が不安定になることがあります。
ビデオカードのメモリが256MBの場合フルHDのビデオで50程度が限界です。
ビデオカードの種類やビデオドライバ、アプリケーションの設定によってはキューがオンになっているとトラブルを起こすことがあります。
既知の問題としては一部のATI製ビデオカード(X1300,X1600など)との相性問題が報告されたことがあります。
nVidiaのビデオカードは問題ないようです。
個別の事例に対処することは困難ですので、問題があればキューをオフにして御使用ください。