SDL-1.2.14
[sdl_omap.git] / docs / html / guideaudioexamples.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >Audio Examples</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8 "><LINK
9 REL="HOME"
10 TITLE="SDL Library Documentation"
11 HREF="index.html"><LINK
12 REL="UP"
13 TITLE="Examples"
14 HREF="guideexamples.html"><LINK
15 REL="PREVIOUS"
16 TITLE="Event Examples"
17 HREF="guideeventexamples.html"><LINK
18 REL="NEXT"
19 TITLE="CDROM Examples"
20 HREF="guidecdromexamples.html"></HEAD
21 ><BODY
22 CLASS="SECT1"
23 BGCOLOR="#FFF8DC"
24 TEXT="#000000"
25 LINK="#0000ee"
26 VLINK="#551a8b"
27 ALINK="#ff0000"
28 ><DIV
29 CLASS="NAVHEADER"
30 ><TABLE
31 SUMMARY="Header navigation table"
32 WIDTH="100%"
33 BORDER="0"
34 CELLPADDING="0"
35 CELLSPACING="0"
36 ><TR
37 ><TH
38 COLSPAN="3"
39 ALIGN="center"
40 >SDL Library Documentation</TH
41 ></TR
42 ><TR
43 ><TD
44 WIDTH="10%"
45 ALIGN="left"
46 VALIGN="bottom"
47 ><A
48 HREF="guideeventexamples.html"
49 ACCESSKEY="P"
50 >Prev</A
51 ></TD
52 ><TD
53 WIDTH="80%"
54 ALIGN="center"
55 VALIGN="bottom"
56 >Chapter 4. Examples</TD
57 ><TD
58 WIDTH="10%"
59 ALIGN="right"
60 VALIGN="bottom"
61 ><A
62 HREF="guidecdromexamples.html"
63 ACCESSKEY="N"
64 >Next</A
65 ></TD
66 ></TR
67 ></TABLE
68 ><HR
69 ALIGN="LEFT"
70 WIDTH="100%"></DIV
71 ><DIV
72 CLASS="SECT1"
73 ><H1
74 CLASS="SECT1"
75 ><A
76 NAME="GUIDEAUDIOEXAMPLES"
77 ></A
78 >Audio Examples</H1
79 ><P
80 ></P
81 ><DIV
82 CLASS="SECT2"
83 ><H2
84 CLASS="SECT2"
85 ><A
86 NAME="AEN382"
87 ></A
88 >Opening the audio device</H2
89 ><P
90 ><PRE
91 CLASS="PROGRAMLISTING"
92 >    SDL_AudioSpec wanted;
93     extern void fill_audio(void *udata, Uint8 *stream, int len);
94
95     /* Set the audio format */
96     wanted.freq = 22050;
97     wanted.format = AUDIO_S16;
98     wanted.channels = 2;    /* 1 = mono, 2 = stereo */
99     wanted.samples = 1024;  /* Good low-latency value for callback */
100     wanted.callback = fill_audio;
101     wanted.userdata = NULL;
102
103     /* Open the audio device, forcing the desired format */
104     if ( SDL_OpenAudio(&#38;wanted, NULL) &#60; 0 ) {
105         fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
106         return(-1);
107     }
108     return(0);</PRE
109 ></P
110 ></DIV
111 ><DIV
112 CLASS="SECT2"
113 ><H2
114 CLASS="SECT2"
115 ><A
116 NAME="AEN386"
117 ></A
118 >Playing audio</H2
119 ><P
120 ><PRE
121 CLASS="PROGRAMLISTING"
122 >    static Uint8 *audio_chunk;
123     static Uint32 audio_len;
124     static Uint8 *audio_pos;
125
126     /* The audio function callback takes the following parameters:
127        stream:  A pointer to the audio buffer to be filled
128        len:     The length (in bytes) of the audio buffer
129     */
130     void fill_audio(void *udata, Uint8 *stream, int len)
131     {
132         /* Only play if we have data left */
133         if ( audio_len == 0 )
134             return;
135
136         /* Mix as much data as possible */
137         len = ( len &#62; audio_len ? audio_len : len );
138         SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME);
139         audio_pos += len;
140         audio_len -= len;
141     }
142
143     /* Load the audio data ... */
144
145     ;;;;;
146
147     audio_pos = audio_chunk;
148
149     /* Let the callback function play the audio chunk */
150     SDL_PauseAudio(0);
151
152     /* Do some processing */
153
154     ;;;;;
155
156     /* Wait for sound to complete */
157     while ( audio_len &#62; 0 ) {
158         SDL_Delay(100);         /* Sleep 1/10 second */
159     }
160     SDL_CloseAudio();</PRE
161 ></P
162 ></DIV
163 ></DIV
164 ><DIV
165 CLASS="NAVFOOTER"
166 ><HR
167 ALIGN="LEFT"
168 WIDTH="100%"><TABLE
169 SUMMARY="Footer navigation table"
170 WIDTH="100%"
171 BORDER="0"
172 CELLPADDING="0"
173 CELLSPACING="0"
174 ><TR
175 ><TD
176 WIDTH="33%"
177 ALIGN="left"
178 VALIGN="top"
179 ><A
180 HREF="guideeventexamples.html"
181 ACCESSKEY="P"
182 >Prev</A
183 ></TD
184 ><TD
185 WIDTH="34%"
186 ALIGN="center"
187 VALIGN="top"
188 ><A
189 HREF="index.html"
190 ACCESSKEY="H"
191 >Home</A
192 ></TD
193 ><TD
194 WIDTH="33%"
195 ALIGN="right"
196 VALIGN="top"
197 ><A
198 HREF="guidecdromexamples.html"
199 ACCESSKEY="N"
200 >Next</A
201 ></TD
202 ></TR
203 ><TR
204 ><TD
205 WIDTH="33%"
206 ALIGN="left"
207 VALIGN="top"
208 >Event Examples</TD
209 ><TD
210 WIDTH="34%"
211 ALIGN="center"
212 VALIGN="top"
213 ><A
214 HREF="guideexamples.html"
215 ACCESSKEY="U"
216 >Up</A
217 ></TD
218 ><TD
219 WIDTH="33%"
220 ALIGN="right"
221 VALIGN="top"
222 >CDROM Examples</TD
223 ></TR
224 ></TABLE
225 ></DIV
226 ></BODY
227 ></HTML
228 >