IMediaFilter::SetSyncSource メソッド (strmif.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは SetSyncSource
、参照クロックを設定します。
構文
HRESULT SetSyncSource(
[in] IReferenceClock *pClock
);
パラメーター
[in] pClock
クロックの IReferenceClock インターフェイスへのポインター、または NULL。 このパラメーターが NULL の場合、フィルター グラフでは参照クロックが使用されず、すべてのフィルターが可能な限り迅速に実行されます。
戻り値
成功した場合はS_OK、エラーの原因を示す HRESULT 値を返します。
解説
同期を維持するために、フィルター グラフ内のすべてのフィルターは同じ参照クロックを共有します。 ストリーム時間は、基準クロックから計算されます。 レンダラー フィルターでは、参照クロックを使用して、サンプルをレンダリングするタイミングをスケジュールします。 参照クロックがない場合、レンダラー フィルターは到着するとすぐにすべてのサンプルをレンダリングします。
このメソッドは、すべての DirectShow フィルターとフィルター グラフ マネージャーによって実装されます。
フィルターの実装
グラフが実行されると、Filter Graph マネージャーは、グラフ内のすべてのフィルターでこのメソッドを呼び出して、グラフ参照クロックを通知します。 IReferenceClock ポインターを格納するには、このメソッドを使用します。 格納されているポインターの参照カウントをインクリメントします。 フィルターがグラフから削除される前に、フィルター グラフ マネージャーは値 NULL を指定して SetSyncSource を再度呼び出します。 格納されているポインターを解放し、NULL に設定 します。CBaseFilter クラスは、このメソッドを実装します。CBaseFilter::SetSyncSource を参照してください。
フィルターでは、このメソッドを使用してグラフクロックを選択できないことに注意してください。 フィルターでは、このメソッドの唯一の機能は、グラフが使用しているクロックをフィルターに通知することです。 フィルターは、 IReferenceClock インターフェイスを公開することで、参照クロックを提供できます。 詳細については、「 DirectShow の時刻とクロック」を参照してください。
アプリケーションの使用
アプリケーションは、フィルター グラフ マネージャーで SetSyncSource を 呼び出すことによって、既定のクロックをオーバーライドできます。 別のクロックを優先する特定の理由がない限り、これを行わないでください。 値 NULL で SetSyncSource を呼び出すことで、参照クロックを使用しないようにグラフを設定することもできます。 可能な限り迅速にサンプルを処理するためにこれを行う場合があります。 詳細については、「 グラフ クロックの設定」を参照してください。アプリケーションでは、フィルターでこのメソッドを呼び出さないでください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | strmif.h (Dshow.h を含む) |
Library | Strmiids.lib |