Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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