次の方法で共有


demux 出力ピンの構成

MPEG-2 demux は、データのパケットを受け取ったとき、どの出力ピンでデータを解析し送信するかを決める必要がある。プログラム ストリーム モードでは、demux はストリーム ID を出力ピンにマップする。トランスポート ストリーム モードでは、PID を出力ピンにマップする。たとえば、トランスポート ストリーム モードで、PID 0x31 がピン 0 にマップされた場合、PID 0x31 を持つすべての TS パケットは出力ピン 0 にルーティングされる。demux では、ストリーム ID または PID が出力ピンにマップされていないパケットを受け取ると、そのパケットを破棄する。

プル モードでは、demux はファイルのオーディオ ストリームとビデオ ストリーム用の出力ピンを自動的に作成し、ピンにストリーム ID をマップする。

プッシュ モードでは、出力ピンはアプリケーションまたは別のフィルタにより構成する必要がある。Broadcast Driver Architecture (BDA) を使うデジタル TV ソースの場合、ネットワーク プロバイダ フィルタは TIF フィルタと共に demux を構成する。アプリケーションでは何も行う必要がない。その他の場合、アプリケーションは出力ピンを構成する必要がある。

demux は最初は出力ピンを持たない。出力ピンを作成するには、フィルタに対して IMpeg2Demultiplexer::CreateOutputPin メソッドを呼び出す。このメソッドはメディア タイプとピン名を受け取り、IPin ポインタを返す。ピンがデコーダなどの別のフィルタに接続するとき、このメディア タイプが使われる。例については、「基本ストリームに demux を使う」を参照すること。ピン名には任意の値を指定できる。ただし、ピン名は重複して指定できない。

次に、新しい出力ピンに 1 つまたは複数のストリーム ID か PID を割り当てる。プログラム ストリームの場合、ピンに IMPEG2StreamIdMap を問い合わせ、IMPEG2StreamIdMap::MapStreamId を呼び出す。トランスポート ストリームの場合、ピンに IMPEG2PIDMap を問い合わせ、IMPEG2PIDMap::MapPID を呼び出す。

demux では、複数の方法で TS パケットを解析できる。出力ピンごとの解析方法は、MapPID メソッドの MediaSampleContent パラメータにより決まる。

説明
MEDIA_ELEMENTARY_STREAM フィルタは PES ペイロードを送信する。このモードでは、フィルタは PES パケットのパケット化を解除する。そのため、ダウンストリーム フィルタは PES パケット ヘッダーなしで ES バイト ストリームを受け取る。(オーディオ ストリームとビデオ ストリームのみ。)
MEDIA_MPEG2_PSI フィルタは、PAT テーブル、PMT テーブル、CAT テーブルなど、完全な PSI セクションを送信する。
MEDIA_TRANSPORT_PAYLOAD フィルタは TS パケットからペイロードを抽出し、解析せずに送信する。つまり、基本ストリームの場合、demux は PES パケット ヘッダーを含め、PES パケット全体を送信する。
MEDIA_TRANSPORT_PACKET フィルタは TS パケット全体を送信する。demux は PID に従って TS パケットをルーティングするが、それ以外にパケットの検査や処理は行わない。エラーのあるパケットはフィルタで出力できない。demux はパケットを再多重化せず、出力ストリームは互換性がある MPEG-2 トランスポート ストリームではない。このモードは "パス スルー" モードと呼ばれる。

プログラム ストリームの場合、demux は常に PES ペイロードを送信する。

参照