求めて

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

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

次の図は、一連のイベントを示しています。

イベントのシーケンス

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

フィルターの IMediaPositionインターフェイスは非推奨とされました。 IMediaSeeking は Automation と互換性がありませんが、Filter Graph Manager ではすべての IMediaPosition 呼び出しが IMediaSeeking 呼び出しに変換されます。フィルター Graph マネージャーでは、このインターフェイスを引き続き使用する必要があります。

フラッシュ

時間とクロックのDirectShow