Merge commit '199d9f995da53fe2507821f6d96bbc692574e1a9'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 6 Nov 2014 17:27:58 +0000 (18:27 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 6 Nov 2014 17:28:49 +0000 (18:28 +0100)
* commit '199d9f995da53fe2507821f6d96bbc692574e1a9':
  mjpegdec: fix undefined shift

Conflicts:
libavcodec/mjpegdec.c

See: b4329605289e25bb071ec1c1182bf25fc83b09aa
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/mjpegdec.c

@@@ -1283,19 -949,24 +1283,21 @@@ static int mjpeg_decode_scan_progressiv
      int EOBRUN = 0;
      int c = s->comp_index[0];
      uint8_t *data = s->picture_ptr->data[c];
 -    const uint8_t *reference_data = reference ? reference->data[c] : NULL;
      int linesize  = s->linesize[c];
      int last_scan = 0;
 -    int16_t *quant_matrix = s->quant_matrixes[s->quant_index[c]];
 -    GetBitContext mb_bitmask_gb;
 +    int16_t *quant_matrix = s->quant_matrixes[s->quant_sindex[0]];
 +    int bytes_per_pixel = 1 + (s->bits > 8);
  
 -    if (ss < 0  || ss >= 64 ||
 -        se < ss || se >= 64 ||
 -        Ah < 0  || Al < 0)
 +    av_assert0(ss>=0 && Ah>=0 && Al>=0);
 +    if (se < ss || se > 63) {
 +        av_log(s->avctx, AV_LOG_ERROR, "SS/SE %d/%d is invalid\n", ss, se);
          return AVERROR_INVALIDDATA;
 -
 -    if (mb_bitmask)
 -        init_get_bits(&mb_bitmask_gb, mb_bitmask, s->mb_width * s->mb_height);
 +    }
  
      if (!Al) {
 -        s->coefs_finished[c] |= (~0ULL >> (63 - (se - ss))) << ss;
+         // s->coefs_finished is a bitmask for coefficients coded
+         // ss and se are parameters telling start and end coefficients
 +        s->coefs_finished[c] |= (2ULL << se) - (1ULL << ss);
          last_scan = !~s->coefs_finished[c];
      }