Commit a350e694245c1ce9492c67db83e1fd325e767769
1 parent
58565070
Avoid arithmetics on void * in MusicPal audio code (Jan Kiszka).
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4373 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
8 additions
and
8 deletions
hw/musicpal.c
@@ -244,7 +244,7 @@ typedef struct musicpal_audio_state { | @@ -244,7 +244,7 @@ typedef struct musicpal_audio_state { | ||
244 | uint32_t status; | 244 | uint32_t status; |
245 | uint32_t irq_enable; | 245 | uint32_t irq_enable; |
246 | unsigned long phys_buf; | 246 | unsigned long phys_buf; |
247 | - void *target_buffer; | 247 | + int8_t *target_buffer; |
248 | unsigned int threshold; | 248 | unsigned int threshold; |
249 | unsigned int play_pos; | 249 | unsigned int play_pos; |
250 | unsigned int last_free; | 250 | unsigned int last_free; |
@@ -256,7 +256,7 @@ static void audio_callback(void *opaque, int free_out, int free_in) | @@ -256,7 +256,7 @@ static void audio_callback(void *opaque, int free_out, int free_in) | ||
256 | { | 256 | { |
257 | musicpal_audio_state *s = opaque; | 257 | musicpal_audio_state *s = opaque; |
258 | int16_t *codec_buffer; | 258 | int16_t *codec_buffer; |
259 | - void *mem_buffer; | 259 | + int8_t *mem_buffer; |
260 | int pos, block_size; | 260 | int pos, block_size; |
261 | 261 | ||
262 | if (!(s->playback_mode & MP_AUDIO_PLAYBACK_EN)) | 262 | if (!(s->playback_mode & MP_AUDIO_PLAYBACK_EN)) |
@@ -277,8 +277,8 @@ static void audio_callback(void *opaque, int free_out, int free_in) | @@ -277,8 +277,8 @@ static void audio_callback(void *opaque, int free_out, int free_in) | ||
277 | if (s->playback_mode & MP_AUDIO_MONO) { | 277 | if (s->playback_mode & MP_AUDIO_MONO) { |
278 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); | 278 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); |
279 | for (pos = 0; pos < block_size; pos += 2) { | 279 | for (pos = 0; pos < block_size; pos += 2) { |
280 | - *codec_buffer++ = *(uint16_t *)mem_buffer; | ||
281 | - *codec_buffer++ = *(uint16_t *)mem_buffer; | 280 | + *codec_buffer++ = *(int16_t *)mem_buffer; |
281 | + *codec_buffer++ = *(int16_t *)mem_buffer; | ||
282 | mem_buffer += 2; | 282 | mem_buffer += 2; |
283 | } | 283 | } |
284 | } else | 284 | } else |
@@ -288,14 +288,14 @@ static void audio_callback(void *opaque, int free_out, int free_in) | @@ -288,14 +288,14 @@ static void audio_callback(void *opaque, int free_out, int free_in) | ||
288 | if (s->playback_mode & MP_AUDIO_MONO) { | 288 | if (s->playback_mode & MP_AUDIO_MONO) { |
289 | codec_buffer = wm8750_dac_buffer(s->wm, block_size); | 289 | codec_buffer = wm8750_dac_buffer(s->wm, block_size); |
290 | for (pos = 0; pos < block_size; pos++) { | 290 | for (pos = 0; pos < block_size; pos++) { |
291 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer); | ||
292 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++); | 291 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer); |
292 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer++); | ||
293 | } | 293 | } |
294 | } else { | 294 | } else { |
295 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); | 295 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); |
296 | for (pos = 0; pos < block_size; pos += 2) { | 296 | for (pos = 0; pos < block_size; pos += 2) { |
297 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++); | ||
298 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++); | 297 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer++); |
298 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer++); | ||
299 | } | 299 | } |
300 | } | 300 | } |
301 | } | 301 | } |