diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c
index 883b723c6f9d371598e8d9403249b20237e48ad5..87f4f4448f409ec6854bec2474d4b4e1090be1f1 100644
--- a/libavcodec/adpcm.c
+++ b/libavcodec/adpcm.c
@@ -1300,9 +1300,9 @@ static int adpcm_decode_frame(AVCodecContext *avctx,
         }
 
         for (channel=0; channel<avctx->channels; channel++) {
-            srcC = src + (big_endian ? bytestream_get_be32(&src)
-                                     : bytestream_get_le32(&src))
-                       + (avctx->channels-channel-1) * 4;
+            srcC  = src + (avctx->channels-channel) * 4;
+            srcC += (big_endian ? bytestream_get_be32(&src)
+                                : bytestream_get_le32(&src));
             samplesC = samples + channel;
 
             if (avctx->codec->id == CODEC_ID_ADPCM_EA_R1) {