デマルチプレクサ クロックの動作

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

プッシュ モードでは、MPEG-2 Demultiplexer (demux) によって IReferenceClock インターフェイスが公開されます。 これはライブ ソースとして機能するため、既定ではグラフ参照クロックとして選択されます。詳細については、「 ライブ ソース 」を参照してください。

  • トランスポート ストリームの場合、demux は、アプリケーションによって最後にマップされたオーディオまたはビデオ ストリームに対応する PCR ストリームにクロックを同期します。 内部的には、demux は PAT テーブルと PMT テーブルを追跡します。 アプリケーションが基本ストリーム PID を出力ピンにマップすると、demux はその PID の PCR ストリームを検索し、その PCR ストリームを使用します。 (現時点では、アプリケーションで PCR PID を直接指定する方法はありません)。
  • プログラム ストリームの場合、demux はクロックを SCR ストリームに同期します。

フィルター クロックを PCR または SCR ストリームに同期すると、データ オーバーフローやアンダーフローが防止され、グラフ クロックがストリーム クロックから変化した場合に発生する可能性があります。 また、demux は PES PTS 値を DirectShow 参照時間に変換し、これらの値を使用してメディア サンプルにタイム スタンプを設定します。 タイム スタンプは、次のフレーム境界に適用されます。フレーム境界がメディア サンプルの開始位置と一致する保証はありません。

demux は、タイム スタンプが単調に増加することを保証します。 つまり、たとえば、トランスポート ストリームに、メイン プログラムとは異なるクロックで作成された商用などのセグメントが含まれている場合、demux は、ダウンストリーム フィルターから時間の不連続性を非表示にするためにプレゼンテーション のタイム スタンプを調整します。

MPEG-2 デマルチプレクサーの使用