IAMPushSource インターフェイス (strmif.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
インターフェイスは IAMPushSource
、ライブ ソースをレンダリングするフィルター グラフを同期します。 ライブ ソースは、キャプチャ デバイスやネットワーク ブロードキャストなど、リアルタイムでデータをストリーミングするソースです。
ライブ データをストリーミングするソース フィルターでは、出力ピンでこのインターフェイスを公開する必要があります。 一般に、アプリケーションはこのインターフェイスで メソッドを呼び出すべきではありません。代わりに、 IAMGraphStreams インターフェイスを 使用します。
継承
IAMPushSource インターフェイスは IAMLatency から継承されます。 IAMPushSource には、次の種類のメンバーもあります。
メソッド
IAMPushSource インターフェイスには、次のメソッドがあります。
IAMPushSource::GetMaxStreamOffset GetMaxStreamOffset メソッドは、フィルターがサポートできる最大ストリーム オフセットを取得します。 |
IAMPushSource::GetPushSourceFlags GetPushSourceFlags メソッドは、フィルターの動作を記述するフラグの組み合わせを取得します。 |
IAMPushSource::GetStreamOffset GetStreamOffset メソッドは、タイム スタンプの生成時にフィルターが使用するオフセットを取得します。 |
IAMPushSource::SetMaxStreamOffset SetMaxStreamOffset メソッドは、フィルター グラフで許可されるストリーム オフセットを指定します。 |
IAMPushSource::SetPushSourceFlags SetPushSourceFlags メソッドは、フィルターの動作を指定するフラグを設定します。 現在、要求フラグはサポートされておらず、アプリケーションはフィルターによって設定されたフラグをオーバーライドしないようにするため、アプリケーションではこのメソッドを呼び出さないでください。 |
IAMPushSource::SetStreamOffset SetStreamOffset メソッドは、このフィルターによって生成されるタイム スタンプのオフセットを設定します。 |
注釈
Filter Graph Manager は、このインターフェイスのメソッドを使用して、ライブ ソースのレンダリング時に一般的に発生する 2 つの問題に対処します。
- 待機時間: フィルター グラフに複数のライブ ソースが含まれている場合、多くの場合、ソースの待機時間が異なり、同期しなくなる可能性があります。たとえば、オーディオ キャプチャの待機時間がビデオ キャプチャよりも長い場合、グラフで差が補正されない限り、オーディオはビデオよりも遅れます。
- レート一致: レンダラー フィルターがライブ ソースに接続されている場合は、ソース フィルターの生産率に合わせてデータ消費率を調整する必要があります。 そうしないと、データにギャップがある可能性があります (レンダラーの実行速度がソースよりも速い場合)、またはデータが削除される可能性があります (ソースの実行速度が速い場合)。
IAMPushSource
する各出力ピンで IAMLatency::GetLatency を呼び出し、グラフの最大待機時間を決定します。 次に、最大待機時間未満のフィルターで IAMPushSource::SetStreamOffset を呼び出し、正しいオフセットによって生成されるタイム スタンプを調整します。
レート マッチングを実行するには、フィルター グラフで、レンダラー フィルターがソース フィルターとクロック レートを一致できるかどうかを判断する必要があります。 IAMPushSource::GetPushSourceFlags メソッドは、レンダラーがソースとレートを照合しても安全かどうかを示すフラグのセットを返します。
これらの問題は、ファイルへのキャプチャには影響しません。 ファイル ライター フィルターは、受信サンプルのタイム スタンプに依存してファイルを正しく書き込みます。その後、ストリームは再生中に同期されます。 レートマッチングに関しては、データは常にできるだけ速くファイルに書き込まれます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | strmif.h (Dshow.h を含む) |