7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
10 TITLE="SDL Library Documentation"
11 HREF="index.html"><LINK
14 HREF="guideexamples.html"><LINK
16 TITLE="Event Examples"
17 HREF="guideeventexamples.html"><LINK
19 TITLE="CDROM Examples"
20 HREF="guidecdromexamples.html"></HEAD
31 SUMMARY="Header navigation table"
40 >SDL Library Documentation</TH
48 HREF="guideeventexamples.html"
56 >Chapter 4. Examples</TD
62 HREF="guidecdromexamples.html"
76 NAME="GUIDEAUDIOEXAMPLES"
88 >Opening the audio device</H2
91 CLASS="PROGRAMLISTING"
92 > SDL_AudioSpec wanted;
93 extern void fill_audio(void *udata, Uint8 *stream, int len);
95 /* Set the audio format */
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;
103 /* Open the audio device, forcing the desired format */
104 if ( SDL_OpenAudio(&wanted, NULL) < 0 ) {
105 fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
121 CLASS="PROGRAMLISTING"
122 > static Uint8 *audio_chunk;
123 static Uint32 audio_len;
124 static Uint8 *audio_pos;
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
130 void fill_audio(void *udata, Uint8 *stream, int len)
132 /* Only play if we have data left */
133 if ( audio_len == 0 )
136 /* Mix as much data as possible */
137 len = ( len > audio_len ? audio_len : len );
138 SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME);
143 /* Load the audio data ... */
147 audio_pos = audio_chunk;
149 /* Let the callback function play the audio chunk */
152 /* Do some processing */
156 /* Wait for sound to complete */
157 while ( audio_len > 0 ) {
158 SDL_Delay(100); /* Sleep 1/10 second */
160 SDL_CloseAudio();</PRE
169 SUMMARY="Footer navigation table"
180 HREF="guideeventexamples.html"
198 HREF="guidecdromexamples.html"
214 HREF="guideexamples.html"