sdl_loadwav(3) [opensolaris man page]
SDL_LoadWAV(3) SDL API Reference SDL_LoadWAV(3) NAME
SDL_LoadWAV - Load a WAVE file SYNOPSIS
#include "SDL.h" SDL_AudioSpec *SDL_LoadWAV(const char *file, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len); DESCRIPTION
SDL_LoadWAV This function loads a WAVE file into memory. If this function succeeds, it returns the given SDL_AudioSpec, filled with the audio data format of the wave data, and sets audio_buf to a malloc'd buffer containing the audio data, and sets audio_len to the length of that audio buffer, in bytes. You need to free the audio buf- fer with SDL_FreeWAV when you are done with it. This function returns NULL and sets the SDL error message if the wave file cannot be opened, uses an unknown data format, or is corrupt. Currently raw, MS-ADPCM and IMA-ADPCM WAVE files are supported. EXAMPLE
SDL_AudioSpec wav_spec; Uint32 wav_length; Uint8 *wav_buffer; /* Load the WAV */ if( SDL_LoadWAV("test.wav", &wav_spec, &wav_buffer, &wav_length) == NULL ){ fprintf(stderr, "Could not open test.wav: %s ", SDL_GetError()); exit(-1); } . . . /* Do stuff with the WAV */ . . /* Free It */ SDL_FreeWAV(wav_buffer); SEE ALSO
SDL_AudioSpec, SDL_OpenAudio, SDL_FreeWAV SDL
Tue 11 Sep 2001, 22:58 SDL_LoadWAV(3)
Check Out this Related Man Page
SDL_ConvertAudio(3) SDL API Reference SDL_ConvertAudio(3) NAME
SDL_ConvertAudio- Convert audio data to a desired audio format. SYNOPSIS
#include "SDL.h" int SDL_ConvertAudio(SDL_AudioCVT *cvt); DESCRIPTION
SDL_ConvertAudio takes one parameter, cvt, which was previously initilized. Initilizing a SDL_AudioCVT is a two step process. First of all, the structure must be passed to SDL_BuildAudioCVT along with source and destination format parameters. Secondly, the cvt->buf and cvt->len fields must be setup. cvt->buf should point to the audio data and cvt->len should be set to the length of the audio data in bytes. Remem- ber, the length of the buffer pointed to by buf show be len*len_mult bytes in length. Once the SDL_AudioCVTstructure is initilized then we can pass it to SDL_ConvertAudio, which will convert the audio data pointer to by cvt->buf. If SDL_ConvertAudio returned 0 then the conversion was completed successfully, otherwise -1 is returned. If the conversion completed successfully then the converted audio data can be read from cvt->buf. The amount of valid, converted, audio data in the buffer is equal to cvt->len*cvt->len_ratio. EXAMPLES
/* Converting some WAV data to hardware format */ void my_audio_callback(void *userdata, Uint8 *stream, int len); SDL_AudioSpec *desired, *obtained; SDL_AudioSpec wav_spec; SDL_AudioCVT wav_cvt; Uint32 wav_len; Uint8 *wav_buf; int ret; /* Allocated audio specs */ desired=(SDL_AudioSpec *)malloc(sizeof(SDL_AudioSpec)); obtained=(SDL_AudioSpec *)malloc(sizeof(SDL_AudioSpec)); /* Set desired format */ desired->freq=22050; desired->format=AUDIO_S16LSB; desired->samples=8192; desired->callback=my_audio_callback; desired->userdata=NULL; /* Open the audio device */ if ( SDL_OpenAudio(desired, obtained) < 0 ){ fprintf(stderr, "Couldn't open audio: %s ", SDL_GetError()); exit(-1); } free(desired); /* Load the test.wav */ if( SDL_LoadWAV("test.wav", &wav_spec, &wav_buf, &wav_len) == NULL ){ fprintf(stderr, "Could not open test.wav: %s ", SDL_GetError()); SDL_CloseAudio(); free(obtained); exit(-1); } /* Build AudioCVT */ ret = SDL_BuildAudioCVT(&wav_cvt, wav_spec.format, wav_spec.channels, wav_spec.freq, obtained->format, obtained->channels, obtained->freq); /* Check that the convert was built */ if(ret==-1){ fprintf(stderr, "Couldn't build converter! "); SDL_CloseAudio(); free(obtained); SDL_FreeWAV(wav_buf); } /* Setup for conversion */ wav_cvt.buf=(Uint8 *)malloc(wav_len*wav_cvt.len_mult); wav_cvt.len=wav_len; memcpy(wav_cvt.buf, wav_buf, wav_len); /* We can delete to original WAV data now */ SDL_FreeWAV(wav_buf); /* And now we're ready to convert */ SDL_ConvertAudio(&wav_cvt); /* do whatever */ . . . . SEE ALSO
SDL_BuildAudioCVT, SDL_AudioCVT SDL
Tue 11 Sep 2001, 22:58 SDL_ConvertAudio(3)