Merge commit 'b0ca5fef09d1b1268ea0c8f89bf53cd38aaa85e7' into release/0.10
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 25 Sep 2013 22:18:12 +0000 (00:18 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 25 Sep 2013 22:18:12 +0000 (00:18 +0200)
* commit 'b0ca5fef09d1b1268ea0c8f89bf53cd38aaa85e7':
  dv: Add a guard to not overread the ppcm array
  mpegvideo: Avoid 32-bit wrapping of linesize multiplications
  mjpegb: Detect changing number of planes in interlaced video
  matroskadec: Check that .lang was allocated and set before reading it
  ape demuxer: check for EOF in potentially long loops
  lavf: avoid integer overflow when estimating bitrate
  pictordec: break out of both decoding loops when y drops below 0
  ac3: Return proper error codes

Conflicts:
libavcodec/pictordec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/ac3dec.c
libavcodec/mjpegdec.c
libavcodec/mpegvideo_common.h
libavcodec/pictordec.c
libavformat/ape.c
libavformat/dv.c
libavformat/matroskadec.c
libavformat/utils.c

Simple merge
Simple merge
Simple merge
@@@ -241,12 -233,10 +243,13 @@@ static int decode_frame(AVCodecContext 
              }
          }
      } else {
 -        av_log_ask_for_sample(s, "uncompressed image\n");
 -        return avpkt->size;
 +        while (y >= 0 && bytestream2_get_bytes_left(&s->g) > 0) {
 +            memcpy(s->frame.data[0] + y * s->frame.linesize[0], s->g.buffer, FFMIN(avctx->width, bytestream2_get_bytes_left(&s->g)));
 +            bytestream2_skip(&s->g, avctx->width);
 +            y--;
 +        }
      }
+ finish:
  
      *data_size = sizeof(AVFrame);
      *(AVFrame*)data = s->frame;
@@@ -276,11 -276,10 +276,13 @@@ static int ape_read_header(AVFormatCont
          ape->seektable = av_malloc(ape->seektablelength);
          if (!ape->seektable)
              return AVERROR(ENOMEM);
-         for (i = 0; i < ape->seektablelength / sizeof(uint32_t); i++)
+         for (i = 0;
+              i < ape->seektablelength / sizeof(uint32_t) && !pb->eof_reached;
+              i++)
              ape->seektable[i] = avio_rl32(pb);
 +    }else{
 +        av_log(s, AV_LOG_ERROR, "Missing seektable\n");
 +        return -1;
      }
  
      ape->frames[0].pos     = ape->firstframe;
@@@ -371,10 -332,10 +371,10 @@@ int avpriv_dv_get_packet(DVDemuxContex
  }
  
  int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
 -                      uint8_t* buf, int buf_size)
 +                      uint8_t* buf, int buf_size, int64_t pos)
  {
      int size, i;
-     uint8_t *ppcm[4] = {0};
+     uint8_t *ppcm[5] = { 0 };
  
      if (buf_size < DV_PROFILE_BYTES ||
          !(c->sys = avpriv_dv_frame_profile(c->sys, buf, buf_size)) ||
Simple merge
Simple merge