92{
93 if (volume == 0) {
94 return;
95 }
96
98
100 {
101#if defined(__GNUC__) && defined(__M68000__) && !defined(__mcoldfire__) && defined(SDL_ASSEMBLY_ROUTINES)
102 SDL_MixAudio_m68k_U8((
char *)
dst, (
char *)
src,
103 (
unsigned long)
len, (
long) volume,
105#else
107
114 }
115#endif
116 }
117 break;
118
120 {
123 int dst_sample;
124 const int max_audioval = ((1 << (8 - 1)) - 1);
125 const int min_audioval = -(1 << (8 - 1));
126
130 src_sample = *src8;
132 dst_sample = *dst8 + src_sample;
133 if (dst_sample > max_audioval) {
134 *dst8 = max_audioval;
135 } else if (dst_sample < min_audioval) {
136 *dst8 = min_audioval;
137 } else {
138 *dst8 = dst_sample;
139 }
140 ++dst8;
141 ++src8;
142 }
143 }
144 break;
145
147 {
149 int dst_sample;
150 const int max_audioval = ((1 << (16 - 1)) - 1);
151 const int min_audioval = -(1 << (16 - 1));
152
155 src1 = ((
src[1]) << 8 |
src[0]);
157 src2 = ((
dst[1]) << 8 |
dst[0]);
159 dst_sample = src1 + src2;
160 if (dst_sample > max_audioval) {
161 dst_sample = max_audioval;
162 } else if (dst_sample < min_audioval) {
163 dst_sample = min_audioval;
164 }
165 dst[0] = dst_sample & 0xFF;
166 dst_sample >>= 8;
167 dst[1] = dst_sample & 0xFF;
169 }
170 }
171 break;
172
174 {
175#if defined(__GNUC__) && defined(__M68000__) && !defined(__mcoldfire__) && defined(SDL_ASSEMBLY_ROUTINES)
176 SDL_MixAudio_m68k_S16MSB((
short *)
dst, (
short *)
src,
177 (
unsigned long)
len, (
long) volume);
178#else
180 int dst_sample;
181 const int max_audioval = ((1 << (16 - 1)) - 1);
182 const int min_audioval = -(1 << (16 - 1));
183
186 src1 = ((
src[0]) << 8 |
src[1]);
188 src2 = ((
dst[0]) << 8 |
dst[1]);
190 dst_sample = src1 + src2;
191 if (dst_sample > max_audioval) {
192 dst_sample = max_audioval;
193 } else if (dst_sample < min_audioval) {
194 dst_sample = min_audioval;
195 }
196 dst[1] = dst_sample & 0xFF;
197 dst_sample >>= 8;
198 dst[0] = dst_sample & 0xFF;
200 }
201#endif
202 }
203 break;
204
206 {
208 int dst_sample;
209 const int max_audioval = 0xFFFF;
210
213 src1 = ((
src[1]) << 8 |
src[0]);
215 src2 = ((
dst[1]) << 8 |
dst[0]);
217 dst_sample = src1 + src2;
218 if (dst_sample > max_audioval) {
219 dst_sample = max_audioval;
220 }
221 dst[0] = dst_sample & 0xFF;
222 dst_sample >>= 8;
223 dst[1] = dst_sample & 0xFF;
225 }
226 }
227 break;
228
230 {
232 int dst_sample;
233 const int max_audioval = 0xFFFF;
234
237 src1 = ((
src[0]) << 8 |
src[1]);
239 src2 = ((
dst[0]) << 8 |
dst[1]);
241 dst_sample = src1 + src2;
242 if (dst_sample > max_audioval) {
243 dst_sample = max_audioval;
244 }
245 dst[1] = dst_sample & 0xFF;
246 dst_sample >>= 8;
247 dst[0] = dst_sample & 0xFF;
249 }
250 }
251 break;
252
254 {
259 const Sint64 max_audioval = ((((
Sint64) 1) << (32 - 1)) - 1);
260 const Sint64 min_audioval = -(((
Sint64) 1) << (32 - 1));
261
265 src32++;
268 dst_sample = src1 + src2;
269 if (dst_sample > max_audioval) {
270 dst_sample = max_audioval;
271 } else if (dst_sample < min_audioval) {
272 dst_sample = min_audioval;
273 }
275 }
276 }
277 break;
278
280 {
285 const Sint64 max_audioval = ((((
Sint64) 1) << (32 - 1)) - 1);
286 const Sint64 min_audioval = -(((
Sint64) 1) << (32 - 1));
287
291 src32++;
294 dst_sample = src1 + src2;
295 if (dst_sample > max_audioval) {
296 dst_sample = max_audioval;
297 } else if (dst_sample < min_audioval) {
298 dst_sample = min_audioval;
299 }
301 }
302 }
303 break;
304
306 {
308 const float fvolume = (float) volume;
309 const float *src32 = (
float *)
src;
310 float *dst32 = (
float *)
dst;
311 float src1, src2;
312 double dst_sample;
313
314 const double max_audioval = 3.402823466e+38F;
315 const double min_audioval = -3.402823466e+38F;
316
321 src32++;
322
323 dst_sample = ((double) src1) + ((double) src2);
324 if (dst_sample > max_audioval) {
325 dst_sample = max_audioval;
326 } else if (dst_sample < min_audioval) {
327 dst_sample = min_audioval;
328 }
330 }
331 }
332 break;
333
335 {
337 const float fvolume = (float) volume;
338 const float *src32 = (
float *)
src;
339 float *dst32 = (
float *)
dst;
340 float src1, src2;
341 double dst_sample;
342
343 const double max_audioval = 3.402823466e+38F;
344 const double min_audioval = -3.402823466e+38F;
345
350 src32++;
351
352 dst_sample = ((double) src1) + ((double) src2);
353 if (dst_sample > max_audioval) {
354 dst_sample = max_audioval;
355 } else if (dst_sample < min_audioval) {
356 dst_sample = min_audioval;
357 }
359 }
360 }
361 break;
362
363 default:
364 SDL_SetError(
"SDL_MixAudioFormat(): unknown audio format");
365 return;
366 }
367}
#define SDL_MIX_MAXVOLUME
#define SDL_SwapFloatBE(X)
#define SDL_SwapFloatLE(X)
#define ADJUST_VOLUME_U8(s, v)
#define ADJUST_VOLUME(s, v)
static const Uint8 mix8[]
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format