Merge commit '74b1bf632f125a795e66e5fd0a060b9c7c55b7a3'
authorHendrik Leppkes <h.leppkes@gmail.com>
Sun, 26 Jun 2016 12:31:53 +0000 (14:31 +0200)
committerHendrik Leppkes <h.leppkes@gmail.com>
Sun, 26 Jun 2016 12:31:53 +0000 (14:31 +0200)
* commit '74b1bf632f125a795e66e5fd0a060b9c7c55b7a3':
  mp3: Make the extrasize explicit

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavcodec/mpegaudiodec_template.c

@@@ -819,10 -799,11 +820,11 @@@ static void exponents_from_scale_factor
  static void switch_buffer(MPADecodeContext *s, int *pos, int *end_pos,
                            int *end_pos2)
  {
-     if (s->in_gb.buffer && *pos >= s->gb.size_in_bits) {
+     if (s->in_gb.buffer && *pos >= s->gb.size_in_bits - s->extrasize * 8) {
          s->gb           = s->in_gb;
          s->in_gb.buffer = NULL;
 -        assert((get_bits_count(&s->gb) & 7) == 0);
+         s->extrasize    = 0;
 +        av_assert2((get_bits_count(&s->gb) & 7) == 0);
          skip_bits_long(&s->gb, *pos - *end_pos);
          *end_pos2 =
          *end_pos  = *end_pos2 + get_bits_count(&s->gb) - *pos;
@@@ -1387,8 -1356,9 +1389,9 @@@ static int mp_decode_layer3(MPADecodeCo
      if (!s->adu_mode) {
          int skip;
          const uint8_t *ptr = s->gb.buffer + (get_bits_count(&s->gb)>>3);
-         int extrasize = av_clip(get_bits_left(&s->gb) >> 3, 0, EXTRABYTES);
+         s->extrasize = av_clip((get_bits_left(&s->gb) >> 3) - s->extrasize, 0,
+                                FFMAX(0, LAST_BUF_SIZE - s->last_buf_size));
 -        assert((get_bits_count(&s->gb) & 7) == 0);
 +        av_assert1((get_bits_count(&s->gb) & 7) == 0);
          /* now we get bits from the main_data_begin offset */
          ff_dlog(s->avctx, "seekback:%d, lastbuf:%d\n",
                  main_data_begin, s->last_buf_size);
@@@ -1593,9 -1566,8 +1596,8 @@@ static int mp_decode_frame(MPADecodeCon
          }
  
          align_get_bits(&s->gb);
 -        assert((get_bits_count(&s->gb) & 7) == 0);
 +        av_assert1((get_bits_count(&s->gb) & 7) == 0);
-         i = get_bits_left(&s->gb) >> 3;
+         i = (get_bits_left(&s->gb) >> 3) - s->extrasize;
          if (i < 0 || i > BACKSTEP_SIZE || nb_frames < 0) {
              if (i < 0)
                  av_log(s->avctx, AV_LOG_ERROR, "invalid new backstep %d\n", i);