CBaseStreamControl クラス
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
このクラスは、入力ピンと出力ピン用の IAMStreamControl インターフェイスを実装します。 フィルターの個々のピンの開始と停止を制御できます。 IAMStreamControl をサポートするピンは、この基本クラスから継承する必要があります。 入力ピンの一般的な宣言を次に示します。
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
IAMStreamControl を公開するには、必ず NonDelegatingQueryInteface をオーバーライドしてください。 詳細については、「 IUnknown を実装する方法」を参照してください。
パブリック メソッド | 説明 |
---|---|
CBaseStreamControl | コンストラクター メソッド。 |
~CBaseStreamControl | デストラクター メソッド。 |
CheckStreamState | メディア サンプルを配信するか破棄するかを決定します。 |
フラッシュ | ピンがフラッシュを開始または停止したことを基本クラスに通知します。 |
NotifyFilterState | フィルターの状態が変化したときにピンに通知します。 |
SetFilterGraph | ストリーム 制御イベントのイベント シンクを指定します。 |
SetSyncSource | 現在の参照クロックの基底クラスに通知します。 |
IAMStreamControl メソッド | 説明 |
GetInfo | 開始時刻と停止時刻など、現在のストリーム制御設定に関する情報を取得します。 |
Startat | データの配信を開始するタイミングをピンに通知します。 |
Stopat | データの配信を停止するタイミングをピンに通知します。 |
解説
このクラスでは、グラフの結合や新しい参照クロックの受信など、さまざまなイベントが発生したときに、ピンと所有フィルターがクラスに通知する必要があります。 次のクラス メソッドを呼び出す必要があります。
- フィルターの IMediaFilter::SetSyncSource メソッドで 、 CBaseStreamControl::SetSyncSource メソッドを 呼び出します。 このメソッドは、現在の参照クロックのクラスに通知します。
- フィルターの CBaseFilter::JoinFilterGraph メソッドで、 CBaseStreamControl::SetFilterGraph メソッドを呼び出します。 このメソッドは、クラスが適切なストリーム制御イベントを送信できるように、フィルター グラフ マネージャーへのポインターをクラスに提供します。
- フィルターが状態 (実行中、一時停止、または停止) に変わるたびに、 CBaseStreamControl::NotifyFilterState メソッドを呼び出します。
- ピンの IPin::BeginFlush メソッドと IPin::EndFlush メソッドで、 CBaseStreamControl::Flushing メソッドを 呼び出します。
クラスは CBaseStreamControl
、フィルター グラフの参照クロックを使用して、フィルターを配信するサンプルと破棄するサンプルを決定します。 ピンの IMemInputPin::Receive メソッドで、受信メディア サンプルへのポインターを使用して CBaseStreamControl::CheckStreamState メソッドを呼び出します。 メソッドがSTREAM_FLOWING値を返す場合は、サンプルをダウンストリームに配信します。 それ以外の場合は、破棄します。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|