Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 7 Sep 2012 11:37:19 +0000 (13:37 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 7 Sep 2012 11:50:24 +0000 (13:50 +0200)
* qatar/master:
  mov_chan: Pass a separate AVIOContext for reading
  af_asyncts: check return value from lavr when flushing.
  mss2: simplify loop in decode_rle()
  mss12: avoid unnecessary division in arith*_get_bit()
  mss2: do not try to read too many palette entries
  mpegvideo: set AVFrame fields to NULL after freeing the base memory
  configure: Set the right cc_e flags for msvc

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
configure
libavcodec/mpegvideo.c
libavcodec/mss12.h
libavcodec/mss2.c
libavfilter/af_asyncts.c
libavformat/aiffdec.c
libavformat/cafdec.c
libavformat/isom.h
libavformat/mov.c
libavformat/mov_chan.c

diff --cc configure
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -274,12 -264,6 +274,12 @@@ static int aiff_read_header(AVFormatCon
                  return AVERROR(ENOMEM);
              st->codec->extradata_size = size;
              avio_read(pb, st->codec->extradata, size);
-             if(ff_mov_read_chan(s, st, size) < 0)
 +            if (st->codec->codec_id == AV_CODEC_ID_QDM2 && size>=12*4 && !st->codec->block_align)
 +                st->codec->block_align = AV_RB32(st->codec->extradata+11*4);
 +            break;
 +        case MKTAG('C','H','A','N'):
++            if(ff_mov_read_chan(s, pb, st, size) < 0)
 +                return AVERROR_INVALIDDATA;
              break;
          default: /* Jump */
              if (size & 1)   /* Always even aligned */
Simple merge
@@@ -197,7 -187,5 +197,7 @@@ int ff_mov_read_esds(AVFormatContext *f
  enum AVCodecID ff_mov_get_lpcm_codec_id(int bps, int flags);
  
  int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries);
- int ff_mov_read_chan(AVFormatContext *s, AVStream *st, int64_t size);
++int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st, int64_t size);
 +void ff_mov_write_chan(AVIOContext *pb, int64_t channel_layout);
  
  #endif /* AVFORMAT_ISOM_H */
@@@ -2570,45 -2395,8 +2570,45 @@@ static int mov_read_elst(MOVContext *c
      return 0;
  }
  
-     ff_mov_read_chan(c->fc,c->fc->streams[0],  atom.size - 4);
 +static int mov_read_chan2(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 +{
 +    if (atom.size < 16)
 +        return 0;
 +    avio_skip(pb, 4);
++    ff_mov_read_chan(c->fc, pb, c->fc->streams[0],  atom.size - 4);
 +    return 0;
 +}
 +
 +static int mov_read_tref(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 +{
 +    uint32_t i, size;
 +    MOVStreamContext *sc;
 +
 +    if (c->fc->nb_streams < 1)
 +        return AVERROR_INVALIDDATA;
 +    sc = c->fc->streams[c->fc->nb_streams - 1]->priv_data;
 +
 +    size = avio_rb32(pb);
 +    if (size < 12)
 +        return 0;
 +
 +    sc->trefs_count = (size - 4) / 8;
 +    sc->trefs = av_malloc(sc->trefs_count * sizeof(*sc->trefs));
 +    if (!sc->trefs)
 +        return AVERROR(ENOMEM);
 +
 +    sc->tref_type = avio_rl32(pb);
 +    for (i = 0; i < sc->trefs_count; i++)
 +        sc->trefs[i] = avio_rb32(pb);
 +    return 0;
 +}
 +
  static const MOVParseTableEntry mov_default_parse_table[] = {
 -{ MKTAG('a','v','s','s'), mov_read_extradata },
 +{ MKTAG('A','C','L','R'), mov_read_avid },
 +{ MKTAG('A','P','R','G'), mov_read_avid },
 +{ MKTAG('A','A','L','P'), mov_read_avid },
 +{ MKTAG('A','R','E','S'), mov_read_avid },
 +{ MKTAG('a','v','s','s'), mov_read_avss },
  { MKTAG('c','h','p','l'), mov_read_chpl },
  { MKTAG('c','o','6','4'), mov_read_stco },
  { MKTAG('c','t','t','s'), mov_read_ctts }, /* composition time to sample */
Simple merge