pcm-dvd: Fix 20bit decoding
authornu774 <honeycomb77@gmail.com>
Fri, 9 May 2014 12:47:41 +0000 (21:47 +0900)
committerReinhard Tartler <siretart@tauware.de>
Sat, 10 May 2014 16:03:46 +0000 (12:03 -0400)
Increment the pointer as needed.

Bug-Id: 592

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
(cherry picked from commit 9880a0d4b131ef36694d62f78060350a81f08b80)
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
Changelog
libavcodec/pcm-dvd.c

index fd49c6f..30e63c9 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -2,6 +2,7 @@ Entries are sorted chronologically from oldest to youngest within each release,
 releases are sorted from youngest to oldest.
 
 version 10.1:
+- pcm-dvd: Fix 20bit decoding (bug/592)
 - avi: Improve non-interleaved detection (bug/666)
 - arm: hpeldsp: fix put_pixels8_y2_{,no_rnd_}armv6
 - arm: hpeldsp: prevent overreads in armv6 asm (bug/646)
index 172e93a..0872d29 100644 (file)
@@ -177,11 +177,11 @@ static void *pcm_dvd_decode_samples(AVCodecContext *avctx, const uint8_t *src,
                 dst32[2] = bytestream2_get_be16u(&gb) << 16;
                 dst32[3] = bytestream2_get_be16u(&gb) << 16;
                 t = bytestream2_get_byteu(&gb);
-                *dst32 += (t & 0xf0) << 8;
-                *dst32 += (t & 0x0f) << 12;
+                *dst32++ += (t & 0xf0) << 8;
+                *dst32++ += (t & 0x0f) << 12;
                 t = bytestream2_get_byteu(&gb);
-                *dst32 += (t & 0xf0) << 8;
-                *dst32 += (t & 0x0f) << 12;
+                *dst32++ += (t & 0xf0) << 8;
+                *dst32++ += (t & 0x0f) << 12;
             }
         } while (--blocks);
         return dst32;