次の方法で共有


IPin::NewSegment

NewSegment メソッドは、この呼び出しの後に受け取ったメディア サンプルが、共通の開始タイム、終了タイム、レートを持つセグメント グループであることをピンに通知する。

アプリケーションからこのメソッドを呼び出さないこと。このメソッドは、他のフィルタから呼び出される。

構文

  HRESULT NewSegment(
  REFERENCE_TIME tStart,
  REFERENCE_TIME tStop,
  double dRate
);

パラメータ

tStart

セグメントの開始タイム (100ナノ秒単位)。元のソースを基準とする。

tStop

セグメントの終了タイム (100ナノ秒単位)。元のソースを基準とする。

dRate

セグメントが処理されるレート、オリジナル レートのパーセンテージ。

戻り値

成功した場合は S_OK を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。

注意

新しいストリームを開始するたびとシーク操作が終わるたびに、ソース フィルタ (あるいはパーサー フィルタ) はこのメソッドを呼び出す。以前のデータ バッチを出力した後、新しいデータで IMemInputPin::Receive を呼び出す前に、そのソース フィルタはダウンストリーム フィルタの入力ピンのメソッドを呼び出す。ダウンストリーム フィルタは NewSegment 呼び出しをダウンストリームに伝達する。

フィルタはセグメント情報を使ってサンプルを処理する。たとえば、いくつかのフォーマットでは、次のフレームなしではデルタ フレームを再構築できない。したがって、終了タイムがデルタ フレームにあると、ソース フィルタは追加フレームを送らなければならない。デコーダ フィルタはセグメント情報を基に最終フレームを決定する。セグメント レートは、オーディオ データなどの連続的なデータ ソースをレンダリングするときに使う。たとえば、オーディオ レンダラはサンプリング レートとセグメント レートを使って、オーディオ データを正しくレンダリングする。

参照