次の方法で共有


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 イベントをフィルタ グラフ マネージャに送る。

参照

CSourceStream クラス