Share via


動的書式の変更

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

2 つのフィルターが接続すると、アップストリーム フィルターが配信するデータの形式を記述するメディアの種類に同意します。 ほとんどの場合、メディアの種類は接続の間固定されます。 ただし、DirectShow では、メディアの種類を変更するためのフィルターのサポートが制限されています。 フィルターがメディアの種類を切り替えると、 動的形式の変更と呼ばれます。 DirectShow フィルターを作成する場合は、動的な形式変更のメカニズムに注意する必要があります。 フィルターでこのような変更がサポートされていない場合でも、別のフィルターが新しい形式を要求した場合は、正しく応答する必要があります。

DirectShow では、フィルター グラフの状態と必要な変更の種類に応じて、動的な書式変更のいくつかの異なるメカニズムが定義されています。

  • グラフが停止している場合、ピンは再接続し、メディアの種類を再ネゴシエーションできます。 詳細については、「 ピンの再接続」を参照してください。
  • 一部のフィルターは、グラフがアクティブ (実行中または一時停止) している間でもピンを再接続できます。 このメカニズムの詳細については、「 動的再接続」を参照してください。

それ以外の場合、グラフがアクティブであっても、問題のフィルターで動的ピンの再接続がサポートされていない場合、形式を変更するための 3 つのメカニズムが考えられます。

  • QueryAccept (ダウンストリーム) は、出力ピンがダウンストリーム ピアに形式変更を提案する場合に使用されますが、新しい形式で大きなバッファーが必要ない場合にのみ使用されます。
  • QueryAccept (アップストリーム) は、入力ピンがアップストリーム ピアへの形式変更を提案するときに使用されます。 新しい形式は同じサイズにすることも、大きくすることもできます。
  • ReceiveConnection は、出力ピンがダウンストリーム ピアに形式変更を提案し、新しい形式に大きなバッファーが必要な場合に使用されます。

ビデオ レンダラーからの書式変更の処理