Size: 1756
Comment:
|
← Revision 15 as of 2018-10-30 02:25:29 ⇥
Size: 2243
Comment: clarify that spec is an output value
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
Use this function to load a WAVE from the data source, automatically freeing that source if freesrc is non-zero. | Use this function to load a WAVE from the data source, automatically freeing that source if '''freesrc''' is non-zero. |
Line 19: | Line 19: |
||'''src'''||the data source for the wave file; see [[SDL_RWFromMem]]() for more info|| | ||'''src'''||the data source for the wave file; see [[CategoryIO|the RWOPS interface]]() for more info|| |
Line 21: | Line 21: |
||'''spec'''||specifies the target audio format; see [[SDL_AudioSpec]] for more info|| ||'''audio_buf'''||specifies the audio buffer|| ||'''audio_len'''||specifies the length of the audio buffer in bytes|| |
||'''spec'''||an [[SDL_AudioSpec]] structure that will be filled in with the wave file's format details|| ||'''audio_buf'''||the audio buffer|| ||'''audio_len'''||the length of the audio buffer in bytes|| |
Line 26: | Line 26: |
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. | This function, if successfully called, returns a pointer to an [[SDL_AudioSpec]] structure filled with the audio data format of the wave source data. '''audio_buf''' is filled with a pointer to an allocated buffer containing the audio data, and '''audio_len''' is filled with the length of that audio buffer in bytes. |
Line 28: | Line 28: |
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. Call [[SDL_GetError]]() for more information. | This function returns NULL if the wave file cannot be opened, uses an unknown data format, or is corrupt; call [[SDL_GetError]]() for more information. When the application is done with the data returned in '''audio_buf''', it should call [[SDL_FreeWAV]]() to dispose of it. |
Line 32: | Line 34: |
You can add your code example here | extern SDL_RWops *myRWops; SDL_AudioSpec wav_spec; Uint32 wav_length; Uint8 *wav_buffer; /* Load the WAV */ if (SDL_LoadWAV_RW(myRWops, 1, &wav_spec, &wav_buffer, &wav_length) == NULL) { fprintf(stderr, "Could not open test.wav: %s\n", SDL_GetError()); } else { /* Do stuff with the WAV data, and then... */ SDL_FreeWAV(wav_buffer); } |
SDL_LoadWAV_RW
Use this function to load a WAVE from the data source, automatically freeing that source if freesrc is non-zero.
Contents
Syntax
SDL_AudioSpec* SDL_LoadWAV_RW(SDL_RWops* src,
int freesrc,
SDL_AudioSpec* spec,
Uint8** audio_buf,
Uint32* audio_len)
Function Parameters
src |
the data source for the wave file; see the RWOPS interface() for more info |
freesrc |
non-zero to automatically free the data source |
spec |
an SDL_AudioSpec structure that will be filled in with the wave file's format details |
audio_buf |
the audio buffer |
audio_len |
the length of the audio buffer in bytes |
Return Value
This function, if successfully called, returns a pointer to an SDL_AudioSpec structure filled with the audio data format of the wave source data. audio_buf is filled with a pointer to an allocated buffer containing the audio data, and audio_len is filled with the length of that audio buffer in bytes.
This function returns NULL if the wave file cannot be opened, uses an unknown data format, or is corrupt; call SDL_GetError() for more information.
When the application is done with the data returned in audio_buf, it should call SDL_FreeWAV() to dispose of it.
Code Examples
extern SDL_RWops *myRWops;
SDL_AudioSpec wav_spec;
Uint32 wav_length;
Uint8 *wav_buffer;
/* Load the WAV */
if (SDL_LoadWAV_RW(myRWops, 1, &wav_spec, &wav_buffer, &wav_length) == NULL) {
fprintf(stderr, "Could not open test.wav: %s\n", SDL_GetError());
} else {
/* Do stuff with the WAV data, and then... */
SDL_FreeWAV(wav_buffer);
}
Remarks
Currently raw and MS-ADPCM WAVE files are supported.
You need to free the audio buffer with SDL_FreeWAV() when you are done with it.