次の方法で共有


IAMPushSource インターフェイス (strmif.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/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 を含む)

こちらもご覧ください

IAMLatency