Revision 4f3cb3be
b/hw/musicpal.c | ||
---|---|---|
255 | 255 |
static void audio_callback(void *opaque, int free_out, int free_in) |
256 | 256 |
{ |
257 | 257 |
musicpal_audio_state *s = opaque; |
258 |
int16_t *codec_buffer, *mem_buffer; |
|
258 |
int16_t *codec_buffer; |
|
259 |
void *mem_buffer; |
|
259 | 260 |
int pos, block_size; |
260 | 261 |
|
261 | 262 |
if (!(s->playback_mode & MP_AUDIO_PLAYBACK_EN)) |
... | ... | |
276 | 277 |
if (s->playback_mode & MP_AUDIO_MONO) { |
277 | 278 |
codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); |
278 | 279 |
for (pos = 0; pos < block_size; pos += 2) { |
279 |
*codec_buffer++ = *mem_buffer; |
|
280 |
*codec_buffer++ = *mem_buffer++; |
|
280 |
*codec_buffer++ = *(uint16_t *)mem_buffer; |
|
281 |
*codec_buffer++ = *(uint16_t *)mem_buffer; |
|
282 |
mem_buffer += 2; |
|
281 | 283 |
} |
282 | 284 |
} else |
283 | 285 |
memcpy(wm8750_dac_buffer(s->wm, block_size >> 2), |
... | ... | |
286 | 288 |
if (s->playback_mode & MP_AUDIO_MONO) { |
287 | 289 |
codec_buffer = wm8750_dac_buffer(s->wm, block_size); |
288 | 290 |
for (pos = 0; pos < block_size; pos++) { |
289 |
*codec_buffer++ = cpu_to_le16(256 * *((int8_t *)mem_buffer));
|
|
290 |
*codec_buffer++ = cpu_to_le16(256 * *((int8_t *)mem_buffer)++);
|
|
291 |
*codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer);
|
|
292 |
*codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++);
|
|
291 | 293 |
} |
292 | 294 |
} else { |
293 | 295 |
codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); |
294 | 296 |
for (pos = 0; pos < block_size; pos += 2) { |
295 |
*codec_buffer++ = cpu_to_le16(256 * *((int8_t *)mem_buffer)++);
|
|
296 |
*codec_buffer++ = cpu_to_le16(256 * *((int8_t *)mem_buffer)++);
|
|
297 |
*codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++);
|
|
298 |
*codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++);
|
|
297 | 299 |
} |
298 | 300 |
} |
299 | 301 |
} |
Also available in: Unified diff