SDL-1.2.14
[sdl_omap.git] / docs / html / sdlconvertaudio.html
CommitLineData
e14743d1 1<HTML
2><HEAD
3><TITLE
4>SDL_ConvertAudio</TITLE
5><META
6NAME="GENERATOR"
7CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8"><LINK
9REL="HOME"
10TITLE="SDL Library Documentation"
11HREF="index.html"><LINK
12REL="UP"
13TITLE="Audio"
14HREF="audio.html"><LINK
15REL="PREVIOUS"
16TITLE="SDL_BuildAudioCVT"
17HREF="sdlbuildaudiocvt.html"><LINK
18REL="NEXT"
19TITLE="SDL_MixAudio"
20HREF="sdlmixaudio.html"></HEAD
21><BODY
22CLASS="REFENTRY"
23BGCOLOR="#FFF8DC"
24TEXT="#000000"
25LINK="#0000ee"
26VLINK="#551a8b"
27ALINK="#ff0000"
28><DIV
29CLASS="NAVHEADER"
30><TABLE
31SUMMARY="Header navigation table"
32WIDTH="100%"
33BORDER="0"
34CELLPADDING="0"
35CELLSPACING="0"
36><TR
37><TH
38COLSPAN="3"
39ALIGN="center"
40>SDL Library Documentation</TH
41></TR
42><TR
43><TD
44WIDTH="10%"
45ALIGN="left"
46VALIGN="bottom"
47><A
48HREF="sdlbuildaudiocvt.html"
49ACCESSKEY="P"
50>Prev</A
51></TD
52><TD
53WIDTH="80%"
54ALIGN="center"
55VALIGN="bottom"
56></TD
57><TD
58WIDTH="10%"
59ALIGN="right"
60VALIGN="bottom"
61><A
62HREF="sdlmixaudio.html"
63ACCESSKEY="N"
64>Next</A
65></TD
66></TR
67></TABLE
68><HR
69ALIGN="LEFT"
70WIDTH="100%"></DIV
71><H1
72><A
73NAME="SDLCONVERTAUDIO"
74></A
75>SDL_ConvertAudio</H1
76><DIV
77CLASS="REFNAMEDIV"
78><A
79NAME="AEN7048"
80></A
81><H2
82>Name</H2
83>SDL_ConvertAudio&nbsp;--&nbsp;Convert audio data to a desired audio format.</DIV
84><DIV
85CLASS="REFSYNOPSISDIV"
86><A
87NAME="AEN7051"
88></A
89><H2
90>Synopsis</H2
91><DIV
92CLASS="FUNCSYNOPSIS"
93><A
94NAME="AEN7052"
95></A
96><P
97></P
98><PRE
99CLASS="FUNCSYNOPSISINFO"
100>#include "SDL.h"</PRE
101><P
102><CODE
103><CODE
104CLASS="FUNCDEF"
105>int <B
106CLASS="FSFUNC"
107>SDL_ConvertAudio</B
108></CODE
109>(SDL_AudioCVT *cvt);</CODE
110></P
111><P
112></P
113></DIV
114></DIV
115><DIV
116CLASS="REFSECT1"
117><A
118NAME="AEN7058"
119></A
120><H2
121>Description</H2
122><P
123><TT
124CLASS="FUNCTION"
125>SDL_ConvertAudio</TT
126> takes one parameter, <TT
127CLASS="PARAMETER"
128><I
129>cvt</I
130></TT
131>, which was previously initilized. Initilizing a <A
132HREF="sdlaudiocvt.html"
133><SPAN
134CLASS="STRUCTNAME"
135>SDL_AudioCVT</SPAN
136></A
137> is a two step process. First of all, the structure must be passed to <A
138HREF="sdlbuildaudiocvt.html"
139><TT
140CLASS="FUNCTION"
141>SDL_BuildAudioCVT</TT
142></A
143> along with source and destination format parameters. Secondly, the <SPAN
144CLASS="STRUCTNAME"
145>cvt</SPAN
146>-&#62;<TT
147CLASS="STRUCTFIELD"
148><I
149>buf</I
150></TT
151> and <SPAN
152CLASS="STRUCTNAME"
153>cvt</SPAN
154>-&#62;<TT
155CLASS="STRUCTFIELD"
156><I
157>len</I
158></TT
159> fields must be setup. <SPAN
160CLASS="STRUCTNAME"
161>cvt</SPAN
162>-&#62;<TT
163CLASS="STRUCTFIELD"
164><I
165>buf</I
166></TT
167> should point to the audio data and <SPAN
168CLASS="STRUCTNAME"
169>cvt</SPAN
170>-&#62;<TT
171CLASS="STRUCTFIELD"
172><I
173>len</I
174></TT
175> should be set to the length of the audio data in bytes. Remember, the length of the buffer pointed to by <TT
176CLASS="STRUCTFIELD"
177><I
178>buf</I
179></TT
180> show be <TT
181CLASS="STRUCTFIELD"
182><I
183>len</I
184></TT
185>*<TT
186CLASS="STRUCTFIELD"
187><I
188>len_mult</I
189></TT
190> bytes in length.</P
191><P
192>Once the <SPAN
193CLASS="STRUCTNAME"
194>SDL_AudioCVT</SPAN
195>structure is initilized then we can pass it to <TT
196CLASS="FUNCTION"
197>SDL_ConvertAudio</TT
198>, which will convert the audio data pointer to by <SPAN
199CLASS="STRUCTNAME"
200>cvt</SPAN
201>-&#62;<TT
202CLASS="STRUCTFIELD"
203><I
204>buf</I
205></TT
206>. If <TT
207CLASS="FUNCTION"
208>SDL_ConvertAudio</TT
209> returned <SPAN
210CLASS="RETURNVALUE"
211>0</SPAN
212> then the conversion was completed successfully, otherwise <SPAN
213CLASS="RETURNVALUE"
214>-1</SPAN
215> is returned.</P
216><P
217>If the conversion completed successfully then the converted audio data can be read from <SPAN
218CLASS="STRUCTNAME"
219>cvt</SPAN
220>-&#62;<TT
221CLASS="STRUCTFIELD"
222><I
223>buf</I
224></TT
225>. The amount of valid, converted, audio data in the buffer is equal to <SPAN
226CLASS="STRUCTNAME"
227>cvt</SPAN
228>-&#62;<TT
229CLASS="STRUCTFIELD"
230><I
231>len</I
232></TT
233>*<TT
234CLASS="STRUCTFIELD"
235><I
236>cvt</I
237></TT
238>-&#62;<SPAN
239CLASS="STRUCTNAME"
240>len_ratio</SPAN
241>.</P
242></DIV
243><DIV
244CLASS="REFSECT1"
245><A
246NAME="AEN7093"
247></A
248><H2
249>Examples</H2
250><PRE
251CLASS="PROGRAMLISTING"
252>/* Converting some WAV data to hardware format */
253void my_audio_callback(void *userdata, Uint8 *stream, int len);
254
255SDL_AudioSpec *desired, *obtained;
256SDL_AudioSpec wav_spec;
257SDL_AudioCVT wav_cvt;
258Uint32 wav_len;
259Uint8 *wav_buf;
260int ret;
261
262/* Allocated audio specs */
263desired = malloc(sizeof(SDL_AudioSpec));
264obtained = malloc(sizeof(SDL_AudioSpec));
265
266/* Set desired format */
267desired-&#62;freq=22050;
268desired-&#62;format=AUDIO_S16LSB;
269desired-&#62;samples=8192;
270desired-&#62;callback=my_audio_callback;
271desired-&#62;userdata=NULL;
272
273/* Open the audio device */
274if ( SDL_OpenAudio(desired, obtained) &#60; 0 ){
275 fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
276 exit(-1);
277}
278
279free(desired);
280
281/* Load the test.wav */
282if( SDL_LoadWAV("test.wav", &#38;wav_spec, &#38;wav_buf, &#38;wav_len) == NULL ){
283 fprintf(stderr, "Could not open test.wav: %s\n", SDL_GetError());
284 SDL_CloseAudio();
285 free(obtained);
286 exit(-1);
287}
288
289/* Build AudioCVT */
290ret = SDL_BuildAudioCVT(&#38;wav_cvt,
291 wav_spec.format, wav_spec.channels, wav_spec.freq,
292 obtained-&#62;format, obtained-&#62;channels, obtained-&#62;freq);
293
294/* Check that the convert was built */
295if(ret==-1){
296 fprintf(stderr, "Couldn't build converter!\n");
297 SDL_CloseAudio();
298 free(obtained);
299 SDL_FreeWAV(wav_buf);
300}
301
302/* Setup for conversion */
303wav_cvt.buf = malloc(wav_len * wav_cvt.len_mult);
304wav_cvt.len = wav_len;
305memcpy(wav_cvt.buf, wav_buf, wav_len);
306
307/* We can delete to original WAV data now */
308SDL_FreeWAV(wav_buf);
309
310/* And now we're ready to convert */
311SDL_ConvertAudio(&#38;wav_cvt);
312
313/* do whatever */
314.
315.
316.
317.
318&#13;</PRE
319></DIV
320><DIV
321CLASS="REFSECT1"
322><A
323NAME="AEN7096"
324></A
325><H2
326>See Also</H2
327><P
328><A
329HREF="sdlbuildaudiocvt.html"
330><TT
331CLASS="FUNCTION"
332>SDL_BuildAudioCVT</TT
333></A
334>,
335<A
336HREF="sdlaudiocvt.html"
337><TT
338CLASS="FUNCTION"
339>SDL_AudioCVT</TT
340></A
341></P
342></DIV
343><DIV
344CLASS="NAVFOOTER"
345><HR
346ALIGN="LEFT"
347WIDTH="100%"><TABLE
348SUMMARY="Footer navigation table"
349WIDTH="100%"
350BORDER="0"
351CELLPADDING="0"
352CELLSPACING="0"
353><TR
354><TD
355WIDTH="33%"
356ALIGN="left"
357VALIGN="top"
358><A
359HREF="sdlbuildaudiocvt.html"
360ACCESSKEY="P"
361>Prev</A
362></TD
363><TD
364WIDTH="34%"
365ALIGN="center"
366VALIGN="top"
367><A
368HREF="index.html"
369ACCESSKEY="H"
370>Home</A
371></TD
372><TD
373WIDTH="33%"
374ALIGN="right"
375VALIGN="top"
376><A
377HREF="sdlmixaudio.html"
378ACCESSKEY="N"
379>Next</A
380></TD
381></TR
382><TR
383><TD
384WIDTH="33%"
385ALIGN="left"
386VALIGN="top"
387>SDL_BuildAudioCVT</TD
388><TD
389WIDTH="34%"
390ALIGN="center"
391VALIGN="top"
392><A
393HREF="audio.html"
394ACCESSKEY="U"
395>Up</A
396></TD
397><TD
398WIDTH="33%"
399ALIGN="right"
400VALIGN="top"
401>SDL_MixAudio</TD
402></TR
403></TABLE
404></DIV
405></BODY
406></HTML
407>