求めて

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

フィルターは 、IMediaSeeking インターフェイスを介したシークをサポートします。 アプリケーションは、Filter Graph Manager for IMediaSeeking に 対してクエリを実行し、それを使用して seek コマンドを発行します。 Filter Graph Manager は、各 seek コマンドをグラフ内のすべてのレンダラー フィルターに分散します。 各レンダラーは、シークを実行できるフィルターに到達するまで、アップストリーム フィルターの出力ピンを介してアップストリームにコマンドを渡します。 通常、 AVI スプリッターなどのソース フィルターまたはパーサー フィルターは、シーク操作を実行します。

フィルターがシーク操作を実行すると、保留中のデータがフラッシュされます。 その結果、既存のデータがグラフからフラッシュされるため、seek コマンドの待機時間を最小限に抑えることができます。 seek コマンドの後、ストリーム時間は 0 にリセットされます。

次の図は、イベントのシーケンスを示しています。

イベントのシーケンス

パーサー フィルターに複数の出力ピンがある場合は、通常、シーク コマンドを受け入れるようにいずれかの出力ピンが指定されます。 他のピンは、受信したシーク コマンドを拒否または無視します。 このようにして、パーサーはすべてのストリームの同期を維持します。 ただし、フィルターのシーク機能を返すには、すべての出力ピンに IMediaSeeking::GetCapabilitiesIMediaSeeking::CheckCapabilities を実装する必要があります。 これにより、フィルター グラフ マネージャーがアプリケーションに正しい値を確実に返します。

フィルターの IMediaPosition インターフェイスは非推奨になりました。 IMediaSeeking はオートメーションと互換性はありませんが、Filter Graph Manager ではすべての IMediaPosition 呼び出しが IMediaSeeking 呼び出しに変換されるため、オートメーション クライアントは Filter Graph Manager でこのインターフェイスを使用する必要があります。

フラッシュ

DirectShow の時刻と時計