図3.1 ストリーム再生時の再生手順
#define RING_BUF_SIZE (2048L*10) #define PCM_ADDR ((void*)0x25a20000) #define PCM_SIZE (4096L*2) /* ワーク */ PcmWork pcm_work; /* リングバッファ */ Uint32 ring_buf[RING_BUF_SIZE / sizeof(Uint32)]; StmHn stm; PcmHn pcm; /* サウンドの初期化 */ SND_Init(・・); /* 初期化 */ PCM_Init(); /* ADPCM使用宣言 (ADPCMを使用する場合に必須) */ PCM_DeclareUseAdpcm(); /* 割り込み処理の設定 */ INT_??? を使いVブランクIN割り込みを設定する。 VブランクIN割り込み内で PCM_VblIn(); をコールする。 /* ファイルの初期化 */ GFS_Init(・・); STM_Init(・・); STM_OpenGrp(); STM_SetExecGrp(・・); /* ストリームのオープン */ stm = STM_OpenFid(・・); /* ハンドルの生成 */ PCM_PARA_WORK(¶) = &pcm_work; PCM_PARA_RING_ADDR(¶) = ring_buf; PCM_PARA_RING_SIZE(¶) = RING_BUF_SIZE; PCM_PARA_PCM_ADDR(¶) = PCM_ADDR; PCM_PARA_PCM_SIZE(¶) = PCM_SIZE; pcm = PCM_CreateStmHandle(¶, stm); /* 再生開始 */ PCM_Start(pcm); while(TRUE) { /* サーバーの実行 */ STM_ExecServer(); /* 再生タスク処理 */ PCM_Task(pcm); /* 終了判定 */ if (PCM_GetPlayStatus(pcm) == PCM_STAT_PLAY_END) break; } /* ハンドルの放棄 */ PCM_DestroyStmHandle(pcm); /* ストリームのクローズ */ STM_Close(stm); /* 終了処理 */ PCM_Finish();