「例」
「例」
CPK_SetTrModeCd(cpk, CPK_TRMODE_SCU); /* SCU-DMAで転送する */ CPK_SetLoadNum(cpk, 10); /* 1回の転送量の最大値 [セクタ] */
if (CPK_GetPlayStatus(cpk_now) == CPK_STAT_PLAY_TIME) {
if (CPK_GetPlayStatus(cpk_next) != CPK_STAT_PLAY_STOP) {
/* 今は次ハンドルへの移行期間中だから、決して */
/* CPK_EntryNext をコールしてはならない。 */
} else {
/* まだ、次ハンドルの処理が始まっていないので */
/* 次ハンドルの登録を変更することが可能。 */
/*【注意】を参照してください。 */
}
} else {
/* すでに、登録していたハンドルに切り替わっている。 */
/* 次ハンドルの登録をすることが可能。 */
}
移行期間中でもシームレスを保つ方法
この状況で、シームレスで画面を静止させることなく切り替えるためには、次ハンドルの再生が始まるのを待ち、CPK_EntryNext して、さらに CPK_CheckChange でデータが十分供給されてきたことを確認し, CPK_Change で切り替えます。
移行期間中に強制的に切り替える方法 シームレスの必要がなければ、再生中ハンドルと次ハンドルを停止(消去)し、再生したいハンドルを CPK_Start で、または CPK_EntryNext と CPK_Change で再生開始させます。
面積 [pixel] | フレーム分割数(タイル数) |
|---|---|
96000 = 480×200 以上 | 3 |
95744 = 352×272 以下 | 2 |
57344 = 256×224 以下 | 1 (分割しない) |
24ビット非圧縮のムービーを再生できるようになりました。画像サイズやフレームレートを抑え、画質を優先させたい場合に利用します。
15ビット色のムービーには対応していません、24ビットのデータの3万2千色表示には対応していますが、クオリティの高いデータを無駄にすることになります。
非圧縮の QuickTime Movie を MovieToSaturn_J でコンバートします。非圧縮ムービーの再生のために追加された関数はいっさいありません。ファイルヘッダを解釈して処理するので、全く同じ手続きで再生できます。ただし、リングバッファだけは圧縮した場合より大きく確保しなければなりません。
リングバッファは次の条件を満たすように確保する必要があります。
ring ≧ header + sound + frame
ring :リングバッファサイズ header :ファイルヘッダサイズ(セクタサイズバウンダリに切り上げ換算) sound :サウンド0.5秒分のサイズ frame :1フレーム非圧縮サイズ
CDからのデータ転送レートから、次に示す程度の動画性能になります。
| オーディオの条件 | 限界動画性能 |
|---|---|
44kHz, 16bit, ステレオ | 320×224[dot] 0.60[fps] |
22kHz, 8bit, モノラル | 320×224[dot] 1.32[fps] |
ビデオのみムービー | 320×224[dot] 1.42[fps] |
ビデオのみムービー | 160×112[dot] 5.71[fps] |
:> hist.txt [RET] :d 04000000 04001000;l [RET] :>- [RET]
========+============================================+
ADDRESS : 0 1 2 3 4 5 6 7 8 9 A B C D E F :
========+============================================+
04000000: AAAA_AAAA ---- ---- ---- ---- ---- ---- :
04000010: "Err " ---- VVVV ---- ---- EEEE_EEEE : Error
04000020: "Task" PPPP VVVV HHHH_HHHH CCCC_CCCC : start of CPK_MeTask
04000030: "RWri" WWWW VVVV HHHH_HHHH DDDD_DDDD : WRIte Ringbuffer
04000040: "RRea" RRRR VVVV HHHH_HHHH DDDD_DDDD : REAd Ringbuffer
04000050: "DOn " FFFF VVVV LLLL_LLLL TTTT_TTTT : set Disp flag On
04000060: "DOff" FFFF VVVV HHHH_HHHH TTTT_TTTT : set Disp flag Off
04000070: "PcmS" MODE VVVV HHHH_HHHH ADDR SIZE : PCM Start
04000080: "PcmE" MODE VVVV HHHH_HHHH ---- ---- : PCM Stop
04000090: "LosF" FFFF VVVV LFLF_LFLF SSSS_SSSS : LOse Frame
:
:
AAAA_AAAA : 現在の履歴情報出力アドレス。
---- VVVV : Vblカウンタ。おおよその時刻がわかる。
EEEE_EEEE : エラーコード。
PPPP ---- : 再生ステータス [-1, 0, 1, 2, 3, 4, 5]。
HHHH_HHHH : シネパックハンドル。
CCCC_CCCC : シネパックタスクコールカウンタ。
DDDD_DDDD : リングバッファのデータの残量 [byte]。供給が滞ってないかわかる。
WWWW ---- : リングバッファへの書き込みサイズ [sector]。
RRRR ---- : リングバッファからの読み取りサイズ [byte]。
FFFF ---- : フレーム番号。
LLLL_LLLL : 遅延時間。(現在時刻 − フレーム表示時刻)
TTTT_TTTT : フレーム時刻。(フレーム表示時刻 + フレーム表示持続時間)
LFLF_LFLF : コマ落ちカウンタ。
SSSS_SSSS : サンプルカウンタ。
MODE ---- : 0x80##:ステレオ,0x10##:8bit,0x##03:PCMストリーム再生番号3
(PCM Stop の場合は、PCMストリーム再生番号だけ表示)
ADDR ---- : PCMバッファスタートアドレス(4bit右シフト値)
SIZE ---- : PCMバッファサイズ [sample/1ch]
★MOVIE TOOLS GUIDE
★Cinepak for SEGASaturn