4 >SDL_ConvertAudio</TITLE
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
10 TITLE="SDL Library Documentation"
11 HREF="index.html"><LINK
14 HREF="audio.html"><LINK
16 TITLE="SDL_BuildAudioCVT"
17 HREF="sdlbuildaudiocvt.html"><LINK
20 HREF="sdlmixaudio.html"></HEAD
31 SUMMARY="Header navigation table"
40 >SDL Library Documentation</TH
48 HREF="sdlbuildaudiocvt.html"
62 HREF="sdlmixaudio.html"
73 NAME="SDLCONVERTAUDIO"
83 >SDL_ConvertAudio -- Convert audio data to a desired audio format.</DIV
85 CLASS="REFSYNOPSISDIV"
99 CLASS="FUNCSYNOPSISINFO"
100 >#include "SDL.h"</PRE
109 >(SDL_AudioCVT *cvt);</CODE
125 >SDL_ConvertAudio</TT
126 > takes one parameter, <TT
131 >, which was previously initilized. Initilizing a <A
132 HREF="sdlaudiocvt.html"
137 > is a two step process. First of all, the structure must be passed to <A
138 HREF="sdlbuildaudiocvt.html"
141 >SDL_BuildAudioCVT</TT
143 > along with source and destination format parameters. Secondly, the <SPAN
159 > fields must be setup. <SPAN
167 > should point to the audio data and <SPAN
175 > should be set to the length of the audio data in bytes. Remember, the length of the buffer pointed to by <TT
190 > bytes in length.</P
195 >structure is initilized then we can pass it to <TT
197 >SDL_ConvertAudio</TT
198 >, which will convert the audio data pointer to by <SPAN
208 >SDL_ConvertAudio</TT
212 > then the conversion was completed successfully, otherwise <SPAN
217 >If the conversion completed successfully then the converted audio data can be read from <SPAN
225 >. The amount of valid, converted, audio data in the buffer is equal to <SPAN
251 CLASS="PROGRAMLISTING"
252 >/* Converting some WAV data to hardware format */
253 void my_audio_callback(void *userdata, Uint8 *stream, int len);
255 SDL_AudioSpec *desired, *obtained;
256 SDL_AudioSpec wav_spec;
257 SDL_AudioCVT wav_cvt;
262 /* Allocated audio specs */
263 desired = malloc(sizeof(SDL_AudioSpec));
264 obtained = malloc(sizeof(SDL_AudioSpec));
266 /* Set desired format */
267 desired->freq=22050;
268 desired->format=AUDIO_S16LSB;
269 desired->samples=8192;
270 desired->callback=my_audio_callback;
271 desired->userdata=NULL;
273 /* Open the audio device */
274 if ( SDL_OpenAudio(desired, obtained) < 0 ){
275 fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
281 /* Load the test.wav */
282 if( SDL_LoadWAV("test.wav", &wav_spec, &wav_buf, &wav_len) == NULL ){
283 fprintf(stderr, "Could not open test.wav: %s\n", SDL_GetError());
290 ret = SDL_BuildAudioCVT(&wav_cvt,
291 wav_spec.format, wav_spec.channels, wav_spec.freq,
292 obtained->format, obtained->channels, obtained->freq);
294 /* Check that the convert was built */
296 fprintf(stderr, "Couldn't build converter!\n");
299 SDL_FreeWAV(wav_buf);
302 /* Setup for conversion */
303 wav_cvt.buf = malloc(wav_len * wav_cvt.len_mult);
304 wav_cvt.len = wav_len;
305 memcpy(wav_cvt.buf, wav_buf, wav_len);
307 /* We can delete to original WAV data now */
308 SDL_FreeWAV(wav_buf);
310 /* And now we're ready to convert */
311 SDL_ConvertAudio(&wav_cvt);
329 HREF="sdlbuildaudiocvt.html"
332 >SDL_BuildAudioCVT</TT
336 HREF="sdlaudiocvt.html"
348 SUMMARY="Footer navigation table"
359 HREF="sdlbuildaudiocvt.html"
377 HREF="sdlmixaudio.html"
387 >SDL_BuildAudioCVT</TD