[FFmpeg-cvslog] pcm: fix decoding of pcm_s16le_planar on big-endian

Justin Ruggles git at videolan.org
Wed Nov 21 18:15:59 CET 2012


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Tue Nov 20 00:57:41 2012 -0500| [00dd9a6d6a5c3cc209082023595354a81aff9bb9] | committer: Justin Ruggles

pcm: fix decoding of pcm_s16le_planar on big-endian

The sample count is decremented by the DECODE() macro and needs to be reset
in each loop iteration. Also, DECODE() increments the src pointer so that does
not need to be done separately.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=00dd9a6d6a5c3cc209082023595354a81aff9bb9
---

 libavcodec/pcm.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
index 906e8e8..a24a38b 100644
--- a/libavcodec/pcm.c
+++ b/libavcodec/pcm.c
@@ -338,15 +338,17 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data,
         break;
     case AV_CODEC_ID_PCM_S16LE_PLANAR:
     {
+        int av_unused n2;
         n /= avctx->channels;
         for (c = 0; c < avctx->channels; c++) {
             samples = s->frame.extended_data[c];
 #if HAVE_BIGENDIAN
-            DECODE(16, le16, src, samples, n, 0, 0)
+            n2 = n;
+            DECODE(16, le16, src, samples, n2, 0, 0)
 #else
             memcpy(samples, src, n * 2);
-#endif
             src += n * 2;
+#endif
         }
         break;
     }



More information about the ffmpeg-cvslog mailing list