★ PROGRAMMER'S GUIDE ★ PCM / ADPCM playback library Figure 3.1 Playback procedure during stream playback
#define RING_BUF_SIZE (2048L * 10)
#define PCM_ADDR ((void *) 0x25a20000)
#define PCM_SIZE (4096L * 2)
/* work */
PcmWork pcm_work;
/ * Ring buffer * /
Uint32 ring_buf [RING_BUF_SIZE / sizeof (Uint32)];
StmHn stm;
PcmHn pcm;
/ * Sound initialization * /
SND_Init (・ ・);
/* Initialize */
PCM_Init ();
/ * Declaration of use of ADPCM (required when using ADPCM) * /
PCM_DeclareUseAdpcm ();
/ * Interrupt processing settings * /
Use INT_ ??? to set the V blank IN interrupt.
Call PCM_VblIn (); in the V-blank IN interrupt.
/ * File initialization * /
GFS_Init (・ ・);
STM_Init (・ ・);
STM_OpenGrp ();
STM_SetExecGrp (・ ・);
/ * Open stream * /
stm = STM_OpenFid (・ ・);
/ * Handle generation * /
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);
/ * Start playback * /
PCM_Start (pcm);
while (TRUE) {
/ * Run server * /
STM_ExecServer ();
/ * Playback task processing * /
PCM_Task (pcm);
/ * End judgment * /
if (PCM_GetPlayStatus (pcm) == PCM_STAT_PLAY_END) break;
}
/ * Abandonment of handle * /
PCM_DestroyStmHandle (pcm);
/ * Close stream * /
STM_Close (stm);
/* End processing */
PCM_Finish ();
★ PROGRAMMER'S GUIDE ★ PCM / ADPCM playback library