English
PROGRAMMER'S GUIDEMPEGライブラリ
戻る進む
MPEGライブラリ

4.ライブラリの利用方法


4.1 ライブラリの構成

 MPEGアプリケーションは、MPEGライブラリとストリームシステムライブラリを利用することを想定しています。

図4.1 モジュール構成図
 
 
アプリケーション
 
 
 
 
ストリームシステム
ライブラリ
 
 
 
MPEGライブラリ
 
 

 MPEG動画は、以下の2段階の処理で再生されます。

 (1)ストリームシステムライブラリ
 CDからバッファへデータを読み込みます。

 (2)MPEGライブラリ
 CDバッファのデータをデコードし、イメージデータとして出力します。

 ストリームシステムからMPEGライブラリへは、CDバッファを通してデータを供給します。従って、ストリームシステムによって生成したストリームハンドルを、MPEGライブラリに渡します。MPEGライブラリは、このストリームハンドルからデータを取り出しデコードします。
 本ライブラリを使うには以下のライブラリを同時にリンクする必要があります。

4.2 MPEGシステムの状態の取り込み

 MPEGライブラリは、CDブロック内のMPEGシステムの最新の状態を取り込み、内部状態を更新する必要があります。
したがって、VSYNC毎に以下のどちらかのタイミングでMPG_CaptStat関数を呼び、MPEGシステムの状態を取り込んでください。

  1. VBLANK-IN割り込みでMPCMフラグをクリアし、ONになるのを待って呼ぶ

  2. VBLANK-OUT割り込みで呼ぶ

 注意
 以下の関数を実行中は、割り込み処理内でMPG_CaptStat関数を実行することを禁止します。

 《MPEGシステム制御》

 《動画再生》

 《静止画再生》

4.3 VDP2出力モード

 VDP2に直接出力する場合、MPEGライブラリの各機能は、VSYNCの立ち下がりで有効になります。タイムコードなどの情報は、現在表示中の情報を得ることができます。
 本ゲーム機ではアプリケーションソフトウェアがVSYNCのタイミングを得ることは難しいため、VBLANK-OUTのタイミングからMPEG関連の処理を行うことを推奨します。

図4.2 VDP2出力時の処理のタイミング

処理の一例
  1. VBLANK-OUTを待ちます。
  2. MPG_CaptStat関数を呼びます。
  3. タイムコードを取得します。
  4. タイムコードに対応するコリジョンデータを得ます。
  5. 当たり判定等を行い、結果に対応するMPEG関係の設定を行います。
  6. 次のフレームで(5)の設定が有効になります。

4.4 ホスト転送モード

 フレームバッファ内のイメージデータは、MPG_WnTrans関数を呼ぶことによってホスト領域に転送されます。例えば、スプライトのテキスチャ領域にディスプレイウィンドウを開き、周期的にMPG_WnTrans関数を呼ぶことによって、スプライトのテキスチャを動画にすることができます。

4.5 状態遷移

 MPEGシステムは、MPEGハンドルを通して制御します。
 MPEGハンドルは、ビデオの動作状態とオーディオの動作状態を保持しています。動作状態は、ビデオ、オーディオともに以下のように遷移します。
 再生の開始及び停止には、以下の関数を使用します。

  1. 再生の開始関数
    • MPG_MvStart
    • MPG_SpStart

  2. 再生の停止関数
    • MPG_MvStop, MPG_MvStopVideo, MPG_MvStopAudio
    • MPG_SpStop

    図4.3 MPEGハンドルの状態遷移図

  3. 再生停止関数の動作
    1. 再生停止関数内でデコーダを初期化した場合、MPEG画面表示はライブラリ内でONに設定されます。
    2. MPG_MvStop関数、MPG_MvStopVideo関数、MPG_SpStop関数の中でVBVバッファのクリアを行います。
    3. 動画の再生を停止させたとき、MPEGシステムに対して次発ストリームの取り消しを行います。

4.6 ハングアップの検出

 MPEGライブラリは、MPEG/Video LSIのハングアップを検出するための関数を用意しています。
 ハングアップの検出は、MPG_ResetHng関数を一度呼んでから、VSYNC毎にMPG_CheckHng関数を呼ぶことによって行います。
 もしハングアップした場合は、MPEGの再生を停止してからもう一度MPEGの再生を開始してください。この処置を実行しても回復しない場合は、MPG_Init関数で初期化してください。

4.7 ユーザ転送関数の登録

 ホスト転送モードにおいて、画像データの転送を行う転送関数を登録することができます。
 転送関数の仕様は以下のとおりです。

[書 式] Sint32 trFunc(void *dst, void *src, Sint32 nbyte)
[入 力] dst     :転送先アドレス
      src     :転送元アドレス
      nbyte   :転送バイト数
[関数値] エラーコード
  1. dstには、MPG_WnSetOutputMode関数で設定した転送領域のアドレスが入ります。
  2. 転送関数は、MPG_WnTrans関数を実行したときにMPEGライブラリから呼び出されます。
  3. 転送関数を登録するには、MPG_WnEntryTrFunc関数を使用します。
  4. 転送関数には、デフォルトでSCUによるB-Bus上へのDMA転送関数が登録されています。
  5. デフォルトの転送関数は、DMA転送が終了しない場合は約2秒でタイムアウトします。

4.8 使用上の注意

 本ライブラリを使用する際の主な注意点を以下に示します。

 (1)オーディオ/ビデオ同期再生時の制限
 オーディオ/ビデオ同期再生時に以下の関数を呼ぶとオーディオとビデオの同期がずれます。

MPG_MvSetVideoId

 これを回避するには、上記の関数実行前に動画の再生を停止し、上記の関数実行後に MPG_MvStart関数によって再生を再開してください。

 (2)オーディオ/ビデオ再生停止方法の制限
 オーディオ/ビデオ同期再生時の再生停止は、MPG_MvStop関数を呼ぶか、または以下の手順を実行してください。ビデオを先に停止させてはいけません。

  1. MPG_MvStopAudio関数を呼びます。
  2. MPG_MvGetAudioStat関数によって、オーディオが停止中であることを確認します。
  3. MPG_MvStopVideo関数を呼びます。


戻る進む
PROGRAMMER'S GUIDEMPEGライブラリ
Copyright SEGA ENTERPRISES, LTD., 1997