Merge remote-tracking branch 'qatar/release/0.5' into release/0.5
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 11 Feb 2013 11:29:22 +0000 (12:29 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 11 Feb 2013 11:29:32 +0000 (12:29 +0100)
* qatar/release/0.5: (21 commits)
  vp6: properly fail on unsupported feature
  vp56: release frames on error
  shorten: Use separate pointers for the allocated memory for decoded samples.
  shorten: check for realloc failure
  h264: check context state before decoding slice data partitions
  oggdec: check memory allocation
  Fix uninitialized reads on malformed ogg files.
  lavf: avoid integer overflow in ff_compute_frame_duration()
  yuv4mpeg: reject unsupported codecs
  tiffenc: Check av_malloc() results.
  mpegaudiodec: fix short_start calculation
  h264: avoid stuck buffer pointer in decode_nal_units
  yuv4mpeg: return proper error codes.
  avidec: return 0, not packet size from read_packet().
  cavsdec: check for changing w/h.
  avidec: use actually read size instead of requested size
  bytestream: add a new set of bytestream functions with overread checking
  avsdec: Set dimensions instead of relying on the demuxer.
  lavfi: avfilter_merge_formats: handle case where inputs are same
  bmpdec: only initialize palette for pal8.
  ...

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/cavsdec.c
libavcodec/h264.c
libavcodec/shorten.c
libavcodec/vp56.c
libavformat/oggdec.c

Simple merge
Simple merge
Simple merge
@@@ -516,19 -516,15 +516,25 @@@ int vp56_decode_frame(AVCodecContext *a
          s->modelp = &s->models[is_alpha];
  
          res = s->parse_header(s, buf, remaining_buf_size, &golden_frame);
-         if (!res)
-             return -1;
+         if (!res) {
+             int i;
+             for (i = 0; i < 4; i++) {
+                 if (s->frames[i].data[0])
+                     avctx->release_buffer(avctx, &s->frames[i]);
+             }
+             return res;
+         }
  
 +        if (res == 2) {
 +            int i;
 +            for (i = 0; i < 4; i++) {
 +                if (s->frames[i].data[0])
 +                    avctx->release_buffer(avctx, &s->frames[i]);
 +            }
 +            if (is_alpha)
 +                return -1;
 +        }
 +
          if (!is_alpha) {
              p->reference = 1;
              if (avctx->get_buffer(avctx, p) < 0) {
Simple merge