Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 3 May 2012 19:02:32 +0000 (21:02 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 3 May 2012 19:02:32 +0000 (21:02 +0200)
* qatar/master:
  mpeg12: fixed parsing in some mpeg2 streams
  Add SMPTE240M transfer characteristics flag.
  mpegts: Some additional HDMV types and reg descriptors for mpegts
  motionpixels: Clip YUV values after applying a gradient.
  jpeg: handle progressive in second field of interlaced.
  ituh263dec: Implement enough of Annex O (scalability) to fix a FPE.
  h263: more strictly forbid frame size changes with frame-mt.
  h264: additional protection against unsupported size/bitdepth changes.
  tta: prevents overflows for 32bit integers in header.
  configure: remove malloc_aligned.
  vp8: update frame size changes on thread context switches.
  snowdsp: explicitily state instruction size.
  wmall: fix reconstructing audio with uncoded channels
  WMAL cosmetics: fix indentation
  gitignore: add Win32 library suffixes

Conflicts:
configure
libavcodec/h263dec.c
libavcodec/h264.c
libavcodec/ituh263dec.c
libavcodec/mjpegdec.c
libavcodec/wmalosslessdec.c
libavcodec/x86/snowdsp_mmx.c
libavformat/mpegts.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
.gitignore
configure
libavcodec/h263dec.c
libavcodec/h264.c
libavcodec/h264_ps.c
libavcodec/ituh263dec.c
libavcodec/mjpegdec.c
libavcodec/motionpixels.c
libavcodec/tta.c
libavcodec/vp8.c
libavcodec/wmalosslessdec.c

diff --cc .gitignore
Simple merge
diff --cc configure
+++ b/configure
@@@ -2670,9 -2462,8 +2670,8 @@@ case $target_os i
          oss_outdev_extralibs="-lossaudio"
          ;;
      openbsd)
-         enable malloc_aligned
          # On OpenBSD 4.5. the compiler does not use PIC unless
 -        # explicitly using -fPIC. Libav builds fine without PIC,
 +        # explicitly using -fPIC. FFmpeg builds fine without PIC,
          # however the generated executable will not do anything
          # (simply quits with exit-code 1, no crash, no output).
          # Thus explicitly enable PIC here.
          ;;
      bsd/os)
          add_extralibs -lpoll -lgnugetopt
 +        strip="strip -d"
          ;;
      darwin)
-         enable malloc_aligned
          gas="gas-preprocessor.pl $cc"
          enabled ppc && add_asflags -force_cpusubtype_ALL
          SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
          fi
          LIBTARGET=i386
          if enabled x86_64; then
-             enable malloc_aligned
 -            LIBTARGET="i386:x86-64"
 +            LIBTARGET=x64
          elif enabled arm; then
              LIBTARGET=arm-wince
          fi
@@@ -3465,41 -3183,9 +3460,41 @@@ check_deps $CONFIG_LIST       
  
  enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
  
- ! enabled_any memalign posix_memalign malloc_aligned &&
 +if test $target_os = "haiku"; then
 +    disable memalign
 +    disable posix_memalign
 +fi
 +
+ ! enabled_any memalign posix_memalign &&
      enabled_any $need_memalign && enable memalign_hack
  
 +# add_dep lib dep
 +# -> enable ${lib}_deps_${dep}
 +# -> add $dep to ${lib}_deps only once
 +add_dep() {
 +    lib=$1
 +    dep=$2
 +    enabled "${lib}_deps_${dep}" && return 0
 +    enable  "${lib}_deps_${dep}"
 +    prepend "${lib}_deps" $dep
 +}
 +
 +# merge deps lib components
 +# merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
 +merge_deps() {
 +    lib=$1
 +    shift
 +    for comp in $*; do
 +        enabled $comp || continue
 +        eval "dep=\"\$${comp}_deps\""
 +        for d in $dep; do
 +            add_dep $lib $d
 +        done
 +    done
 +}
 +
 +merge_deps libavfilter $FILTER_LIST
 +
  echo "install prefix            $prefix"
  echo "source path               $source_path"
  echo "C compiler                $cc"
@@@ -452,6 -430,13 +452,15 @@@ retry
      if (ret < 0){
          av_log(s->avctx, AV_LOG_ERROR, "header damaged\n");
          return -1;
+     } else if ((s->width  != avctx->coded_width  ||
+                 s->height != avctx->coded_height ||
+                 (s->width  + 15) >> 4 != s->mb_width ||
+                 (s->height + 15) >> 4 != s->mb_height) &&
+                (HAVE_THREADS && (s->avctx->active_thread_type & FF_THREAD_FRAME))) {
+         av_log_missing_feature(s->avctx, "Width/height/bit depth/chroma idc changing with threads is", 0);
++        s->width = avctx->coded_width;
++        s->height= avctx->coded_height;
+         return AVERROR_PATCHWELCOME;   // width / height changed during parallelized decoding
      }
  
      avctx->has_b_frames= !s->low_delay;
@@@ -2946,19 -2955,6 +2946,19 @@@ static int decode_slice_header(H264Cont
      s->avctx->level   = h->sps.level_idc;
      s->avctx->refs    = h->sps.ref_frame_count;
  
-         return -1;   // width / height changed during parallelized decoding
 +    must_reinit = (s->context_initialized &&
 +                    (   16*h->sps.mb_width != s->avctx->coded_width
 +                     || 16*h->sps.mb_height * (2 - h->sps.frame_mbs_only_flag) != s->avctx->coded_height
 +                     || s->avctx->bits_per_raw_sample != h->sps.bit_depth_luma
 +                     || h->cur_chroma_format_idc != h->sps.chroma_format_idc
 +                     || av_cmp_q(h->sps.sar, s->avctx->sample_aspect_ratio)));
 +
 +    if(must_reinit && (h != h0 || (s->avctx->active_thread_type & FF_THREAD_FRAME))) {
 +        av_log_missing_feature(s->avctx,
 +                                "Width/height/bit depth/chroma idc changing with threads is", 0);
++        return AVERROR_PATCHWELCOME;   // width / height changed during parallelized decoding
 +    }
 +
      s->mb_width  = h->sps.mb_width;
      s->mb_height = h->sps.mb_height * (2 - h->sps.frame_mbs_only_flag);
  
Simple merge
Simple merge
@@@ -321,14 -301,7 +321,12 @@@ int ff_mjpeg_decode_sof(MJpegDecodeCont
          s->first_picture = 0;
      }
  
 -    if (!(s->interlaced && (s->bottom_field == !s->interlace_polarity))) {
 +    if (s->interlaced && (s->bottom_field == !s->interlace_polarity)) {
 +        if (s->progressive) {
 +            av_log_ask_for_sample(s->avctx, "progressively coded interlaced pictures not supported\n");
 +            return AVERROR_INVALIDDATA;
 +        }
-         return 0;
-     }
++    } else{
      /* XXX: not complete test ! */
      pix_fmt_id = (s->h_count[0] << 28) | (s->v_count[0] << 24) |
                   (s->h_count[1] << 20) | (s->v_count[1] << 16) |
Simple merge
@@@ -251,14 -270,12 +252,15 @@@ static av_cold int tta_decode_init(AVCo
          av_log(s->avctx, AV_LOG_DEBUG, "data_length: %d frame_length: %d last: %d total: %d\n",
              s->data_length, s->frame_length, s->last_frame_length, s->total_frames);
  
 +        if (s->total_frames < 0)
 +            return AVERROR_INVALIDDATA;
 +
          // FIXME: seek table
-         if (get_bits_left(&s->gb) < 32 * s->total_frames + 32)
+         if (avctx->extradata_size <= 26 || s->total_frames > INT_MAX / 4 ||
+             avctx->extradata_size - 26 < s->total_frames * 4)
              av_log(avctx, AV_LOG_WARNING, "Seek table missing or too small\n");
          else if (avctx->err_recognition & AV_EF_CRCCHECK) {
 -            if (tta_check_crc(s, avctx->extradata + 22, s->total_frames * 4))
 +            if (avctx->extradata_size < 26 + s->total_frames * 4 || tta_check_crc(s, avctx->extradata + 22, s->total_frames * 4))
                  return AVERROR_INVALIDDATA;
          }
          skip_bits_long(&s->gb, 32 * s->total_frames);
Simple merge
Simple merge