次の方法で共有


VMR をモニターの更新レートに同期する

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

まれなシナリオでは、モニターが更新されるたびに 1 つの新しいフレームが表示されるように、ビデオ レンダリングをモニターの更新速度と正確に同期することが必要になる場合があります。 これを行う最も信頼性の高い方法は、blit 操作ではなくフリップ操作を使用してビデオ ビットをプライマリ サーフェスに書き込むカスタム アロケーター 発表者を作成することです。 "Flip" はモニターが更新されるたびに呼び出されるため、ビデオ ストリームにタイム スタンプが含まれない場合、VMR はプライマリ サーフェスにできるだけ速くレンダリングされますが、サーフェスは Flip 操作が完了するまでストリームをブロックします。 つまり、CPU に負荷がかかっていない限り、モニターが更新されるたびに、次のフレームは常にプライマリ 画面で待機します。 ただし、他の CPU 負荷の高いプロセスが実行されている場合は、DirectShow ストリーミング スレッドが不足し、ビデオ フレームをプライマリ サーフェスに十分に高速に配信できない可能性があります。

VMR レンダリングレス再生モード (カスタム アロケーター 発表者)