diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index 3b0321cdf73750725f9c49225b62325f5a3f63d1..04f34d90258b0989bd3295c673680aefca8c5929 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -864,7 +864,7 @@ void ff_mpa_synth_init(MPA_INT *window)
    32 samples. */
 /* XXX: optimize by avoiding ring buffer usage */
 void ff_mpa_synth_filter(MPA_INT *synth_buf_ptr, int *synth_buf_offset,
-			 MPA_INT *window,
+			 MPA_INT *window, int *dither_state,
                          int16_t *samples, int incr, 
                          int32_t sb_samples[SBLIMIT])
 {
@@ -903,7 +903,7 @@ void ff_mpa_synth_filter(MPA_INT *synth_buf_ptr, int *synth_buf_offset,
     w = window;
     w2 = window + 31;
 
-    sum = s1->dither_state;
+    sum = *dither_state;
     p = synth_buf + 16;
     SUM8(sum, +=, w, p);
     p = synth_buf + 48;
@@ -933,7 +933,7 @@ void ff_mpa_synth_filter(MPA_INT *synth_buf_ptr, int *synth_buf_offset,
     p = synth_buf + 32;
     SUM8(sum, -=, w + 32, p);
     *samples = round_sample(&sum);
-    s1->dither_state= sum;
+    *dither_state= sum;
 
     offset = (offset - 32) & 511;
     *synth_buf_offset = offset;
@@ -2494,7 +2494,7 @@ static int mp_decode_frame(MPADecodeContext *s,
         samples_ptr = samples + ch;
         for(i=0;i<nb_frames;i++) {
             ff_mpa_synth_filter(s->synth_buf[ch], &(s->synth_buf_offset[ch]),
-			 window,
+			 window, &s->dither_state,
 			 samples_ptr, s->nb_channels,
                          s->sb_samples[ch][i]);
             samples_ptr += 32 * s->nb_channels;