Output proper 16-bit sound (fixes decoding on PPC)
authorKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 13 Nov 2006 05:15:55 +0000 (05:15 +0000)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 13 Nov 2006 05:15:55 +0000 (05:15 +0000)
Originally committed as revision 7000 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/vmdav.c

index 359b23717ed21d401462600a3763029dc7022ba8..394d6d50d859545acbe213e02a63dbef61a5f617 100644 (file)
@@ -484,10 +484,13 @@ static int vmdaudio_loadsound(VmdAudioContext *s, unsigned char *data,
         } else {
             if (s->bits == 16)
                 vmdaudio_decode_audio(s, data, buf, 1);
-            else
+            else {
                 /* copy the data but convert it to signed */
-                for (i = 0; i < s->block_align; i++)
-                    data[i * 2 + 1] = buf[i] + 0x80;
+                for (i = 0; i < s->block_align; i++){
+                    *data++ = buf[i] + 0x80;
+                    *data++ = buf[i] + 0x80;
+                }
+            }
         }
     } else {
         bytes_decoded = s->block_align * 2;
@@ -500,8 +503,10 @@ static int vmdaudio_loadsound(VmdAudioContext *s, unsigned char *data,
                 vmdaudio_decode_audio(s, data, buf, 0);
             } else {
                 /* copy the data but convert it to signed */
-                for (i = 0; i < s->block_align; i++)
-                    data[i * 2 + 1] = buf[i] + 0x80;
+                for (i = 0; i < s->block_align; i++){
+                    *data++ = buf[i] + 0x80;
+                    *data++ = buf[i] + 0x80;
+                }
             }
         }
     }