English
PROGRAMMER'S GUIDEPCM・ADPCM再生ライブラリ
戻る進む
PCM・ADPCM再生ライブラリ

3.再生手順


 (1)再生手順
 ストリームシステムを使用して再生する手順を図3.1に示します。

図3.1 ストリーム再生時の再生手順

 (2)プログラム例
 ストリームシステムを使用して、AIFF形式、または、APCM形式のファイルを再生するプログラム例を次に示します。

	#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(&para) = &pcm_work;
	PCM_PARA_RING_ADDR(&para) = ring_buf;
	PCM_PARA_RING_SIZE(&para) = RING_BUF_SIZE;
	PCM_PARA_PCM_ADDR(&para) = PCM_ADDR;
	PCM_PARA_PCM_SIZE(&para) = PCM_SIZE;
	pcm = PCM_CreateStmHandle(&para, 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();


戻る進む
PROGRAMMER'S GUIDEPCM・ADPCM再生ライブラリ
Copyright SEGA ENTERPRISES, LTD., 1997