示例#1
0
文件: KLAL.c 项目: klib/example
bl KLAL_LoadWavCore(KLAL* p, path8 pPath)
{		
	size_t	sz;
	FILE*	fp;
	
	if( !p )
		p = &klal;
	
	fp = KLFile_Open( pPath, &sz );
	
	if( !fp )
	{
		return FALSE;
	}
	
	WAV_ReadHeader( fp, &p->wav.channel, &p->wav.bit, &p->wav.sz, &p->wav.freq, NULL, NULL, &p->totalms );
	p->pData = (char*)realloc( p->pData, p->wav.sz );
	if( !p->pData )
	{
		KLLog("[ KLAL_LoadWav ] alloc error.\n");
	}
	fread( p->pData, p->wav.sz, 1, fp );
	fclose(fp);
		
	return TRUE;
}
示例#2
0
 int main(int argc, char *argv[]) 
 { 
     char *filename; 
     char *devicename = "default"; 
     int fd; 
     WAVContainer_t wav; 
     SNDPCMContainer_t playback; 
      
     if (argc != 2) { 
         fprintf(stderr, "Usage: ./lplay <file name>/n"); 
         return -1; 
     } 
      
     memset(&playback, 0x0, sizeof(playback)); 
  
     filename = argv[1]; 
     fd = open(filename, O_RDONLY); 
     if (fd < 0) { 
         fprintf(stderr, "Error open [%s]/n", filename); 
         return -1; 
     } 
      
     if (WAV_ReadHeader(fd, &wav) < 0) { 
         fprintf(stderr, "Error WAV_Parse [%s]/n", filename); 
         goto Err; 
     } 
  
     if (snd_output_stdio_attach(&playback.log, stderr, 0) < 0) {
         fprintf(stderr, "Error snd_output_stdio_attach/n"); 
         goto Err; 
     } 
  
     if (snd_pcm_open(&playback.handle, devicename, SND_PCM_STREAM_PLAYBACK, 0) < 0) { 
         fprintf(stderr, "Error snd_pcm_open [ %s]/n", devicename); 
         goto Err; 
     } 
  
     if (SNDWAV_SetParams(&playback, &wav) < 0) { 
         fprintf(stderr, "Error set_snd_pcm_params/n"); 
         goto Err; 
     } 
     snd_pcm_dump(playback.handle, playback.log); 
  
     SNDWAV_Play(&playback, &wav, fd); 
  
     snd_pcm_drain(playback.handle); 
  
     close(fd); 
     free(playback.data_buf); 
     snd_output_close(playback.log); 
     snd_pcm_close(playback.handle); 
     return 0; 
  
 Err: 
     close(fd); 
     if (playback.data_buf) free(playback.data_buf); 
     if (playback.log) snd_output_close(playback.log); 
     if (playback.handle) snd_pcm_close(playback.handle); 
     return -1; 
 } 
示例#3
0
文件: KLAL.c 项目: klib/example
bl KLAL_SetWav(KLAL* p, bin8* pData)
{
	u32 bodyoffset = 0;
	
	if( !p )
		p = &klal;
	
	WAV_ReadHeader( NULL, &p->wav.channel, &p->wav.bit, &p->wav.sz, &p->wav.freq, pData, &bodyoffset, &p->totalms );
	
	p->pData = (char*)realloc( p->pData, p->wav.sz );
	if( !p->pData )
	{
		KLLog("[ KLAL_SetWav ] alloc error.\n");
		return FALSE;	
	}
	return TRUE;
}