English
PROGRAMMER'S GUIDECD通信I/F(MPEGパート)
戻る進む
CD通信I/F(MPEGパート)

5.MPEGストリーム


5.1 転送ブロック

5.1.1 転送ブロックの機能
 MPEGデコーダの転送ブロックは以下の機能をもつ。

 (1)ストリームの設定
 デコーダの接続先バッファ区画を指定することで、デコードするストリームを設定する。
 さらに詳細なデコード対象ストリームを設定するために、ストリーム番号とチャネル番号を指定することができる。(本機能を「後方絞り」と呼ぶ。)

 (2)次に再生するストリームの登録
 バッファ区画を指定して次に再生するストリームを登録する。現ストリームが終了すると、登録された次ストリームに切り替わる。この時、切り替え時の条件を設定できる。
 切り替わるタイミングとしては、以下の場合がある。

図5.1 次に再生するストリームの登録

  1. システムエンドコード(SEC)が検出されたとき
  2. EORビットが検出されたとき
  3. 強制切り替え関数が呼ばれたとき

 (3)ストリームデータの転送
 指定されたバッファ区画を監視し、必要なデータ量が格納されると、デコーダに対してストリームデータを転送する。

 (4)動画の強制切り替え
 登録された次ストリームに強制的に切り替える。

5.1.2 転送ブロックの状態遷移
 転送ブロックは以下の状態をもつ。本状態をMPEGデコーダの動作状態と呼ぶ。(詳細はデータ仕様「MPEG動作ステータス」を参照のこと。)

表5.1 転送ブロックの状態
状態説  明遷移条件遷移先
停止ストリームが登録されていない。現ストリームの登録準備1
準備1指定されたバッファ区画に2セクタ格納されるのを待っている。 デコードバッファサイズ取得準備2
現ストリームを取り消す停止
準備2バッファ区画にデコードバッファサイズ分のデータが格納されるのを待っている。 デコードバッファサイズ分格納転送
強制転送指示転送
現ストリームを取り消す停止
転送
(再生)
セクタデータをデコーダに転送している。(MPEGの再生状態) バッファ区画が空になる復活処理
自然切り替え切り替え
強制切り替え切り替え
自然終了停止
強制終了停止
切り替え次ストリームの先頭が出力されるのを待っている。 先頭が出力された転送
バッファ区画が空になる復活処理
復活処理空になったバッファ区画にセクタが格納されるのを待っている。 必要なセクタが格納転送/切り替え
復活処理からの遷移先は、バッファ区画が空になる(復活処理になる)前の状態に戻る。

 転送ブロックの状態遷移図を図5.2に示す。

図5.2 転送ブロックの状態遷移図

MPEGデコーダの初期化関数(CDC_MpInit)を実行すれば、どの状態からも停止状態に戻る。

5.2 ストリームの切り替え

 ストリームの切り替えとは、現在再生中のストリームを別のストリームに切り替えることです。次に再生すべきストリームの格納先バッファ区画を登録しておくことにより、現在のストリームの終わりや強制切り替え関数によって、次のストリームに切り替わり再生される。

5.2.1 ピクチャの入力順序と表示順序
 Bピクチャをデコードするためには、予測画像となるIピクチャまたはPピクチャが先にデコードされている必要がある。したがって、デコーダへのピクチャの入力順序と実際の表示順序には入れ替えが発生する。

図5.3 デコーダへの入力順序と表示順序

5.2.2 ビデオデコードバッファのクリア
 ストリームをスムーズに切り替えるには、先行してデコードされたデータが、切り替え指示の後に出力されるのを避ける必要がある。そのためには、デコードバッファをタイミングよくクリアしなければならない。
 MPEG/Videoデコーダには、デコーダの前方にVBVバッファ、後方にMPEGフレームバッファがある。クリア方法(タイミングと対象バッファ)として、以下の2通りが指定可能です。

 (1)即座にVBVバッファ+MPEGフレームバッファをクリア(VBV+WBC)
 この場合、MPEGフレームバッファの表示待ちピクチャがクリアされるため、指示が即座に表示に反映する。表示中のピクチャはクリアされない。従って、実際には次ストリームの先頭数ピクチャがデコード完了するまでの期間は、現ピクチャが表示される。
 表示待ち(デコード済み)MPEGフレームバッファをWBC(Write Buffer Control)と略称する。

 (2)次のIまたはPピクチャのデコード開始を待ってVBVバッファだけをクリア
 この場合、MPEGフレームバッファの表示待ちピクチャはクリアされない。表示待ちピクチャが表示されてから、次ストリームのピクチャが表示される。従って、切り替え指示の後、表示待ちピクチャ分の遅延が生ずる。

図5.4 MPEGビデオのバッファ構成

5.2.3 ビデオストリーム切り替えの例
 MPEGビデオストリームの性格上、Pピクチャのピクチャスタート検出時にVBVバッファをクリアすると非常にきれいにつながる。
 単にピクチャスタート検出時に切り替えるとレスポンスが多少良くなるが、Bピクチャのスタートで切り替わることもありフレームがスキップする可能性がある。

 例としてPピクチャとBピクチャのピクチャスタート検出時に切り替える場合を比較する。クリア対象はVBVバッファのみとする。

 (1)Pピクチャスタート検出で切り替える場合
 次の図のようにPピクチャ(P10)のピクチャスタート検出時にストリームを切り替えると、B5 → B6 → P7 → i1とスムーズに切り替わる。(P10はデコードされない。)

図5.5 Pピクチャスタート検出で切り替える例

 (2)Bピクチャスタート検出で切り替える場合
 同じストリームでBピクチャ(B6)のピクチャスタート検出時にストリームを切り替えると、次の図のようにP7より表示順序が前であるB6がデコードされないので、B5 → P7というフレームのスキップが生じる。

図5.6 Bピクチャスタート検出で切り替える例

5.2.4 オーディオデコードバッファのクリア
 MPEG/Audioデコーダには、デコーダの前方に1セクタ分のバッファがある。クリア方法として、以下の2通りが指定可能です。

 (1)クリアしない
 1セクタ分のデータが転送されるまで切り替わらない。

 (2)クリアする
 1セクタの途中でも即座にバッファをクリアして切り替える。

図5.7 MPEGオーディオのバッファ構成


戻る進む
PROGRAMMER'S GUIDECD通信I/F(MPEGパート)
Copyright SEGA ENTERPRISES, LTD., 1997