次の方法で共有


新しいセグメント

セグメントとは、共通の開始タイム、終了タイム、再生速度を共有するメディア サンプルのグループである。IPin::NewSegment メソッドは新しいセグメントの開始を通知する。ソース フィルタはこの方法を使って、タイムと速度の情報が変わったことをダウンストリーム フィルタに通知する。たとえば、ソース フィルタがストリームの新しい位置にシークする場合、新しい開始タイムを使って NewSegment を呼び出す。

一部のダウンストリーム フィルタは、サンプルを処理するとき、セグメント情報を使う。たとえば、フレーム間圧縮を使うフォーマットで、終了タイムがデルタ フレームに当たる場合、ソース フィルタは終了タイム後に追加サンプルを送信しなければならないことがある。この処理により、デコーダは最後のデルタ フレームをデコードできる。正しい最終フレームを決めるため、デコーダはセグメントの終了タイムを参照する。別の例として、オーディオ レンダラはオーディオ サンプリング レートと共にセグメント レートを使って、正しいオーディオ出力を生成する。

プッシュ モデルでは、ソース フィルタが NewSegment 呼び出しを開始する。プル モデルでは、パーサー フィルタが行う。どちらの場合も、フィルタはダウンストリーム入力ピンの NewSegment を呼び出す。呼び出しは次のフィルタに伝達され、最後にレンダラに到達する。フィルタは、IMemInputPin::Receive などの他のストリーミング呼び出しと共に NewSegment 呼び出しを継続して処理する必要がある。

ストリーム タイムはそれぞれの新しいセグメントの後でゼロにリセットされる。セグメントの後に送信されるサンプルのタイム スタンプはゼロから始まる。