CSourceStream::DoBufferProcessingLoop
DoBufferProcessingLoop メソッドは、メディア データを生成し、ダウンストリームの入力ピンに提供する。
構文
virtual HRESULT DoBufferProcessingLoop(void);
戻り値
HRESULT 値を返す。次のいずれかの値を返す。
値 | 説明 |
S_FALSE | スレッドは停止要求を受け取った。 |
S_OK | ストリームが終了したか、またはダウンストリーム フィルタはサンプルを受け入れていない。 |
注意
このメソッドは、データを処理するメイン ループを実装し、ダウンストリームにそのループを提供する。メソッドは、毎回ループを通じてアロケータから空のメディア サンプルを取得する。その後このサンプルを CSourceStream::FillBuffer メソッドに渡す。FillBuffer メソッド (派生クラスが実装しなければならない) は、次にメディア データを生成し、サンプル バッファにそのデータを配置する。
次のいずれかの場合に、ループは終了する。
- 入力ピンの IMemInputPin::Receive メソッドがサンプルを拒否した。
- FillBuffer メソッドが S_FALSE を返し、ストリームの終了を示すか、またはエラー コードを返した。
- スレッドが CSourceStream::Stop 要求を受け取った。
DoBufferProcessingLoop メソッドは、エンドオブストリーム通知を処理する。エラーが発生すると、このメソッドは EC_ERRORABORT イベントをフィルタ グラフ マネージャに送る。
参照