Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 18 Feb 2012 01:20:19 +0000 (02:20 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 18 Feb 2012 01:20:19 +0000 (02:20 +0100)
* qatar/master: (22 commits)
  als: prevent infinite loop in zero_remaining().
  cook: prevent div-by-zero if channels is zero.
  pamenc: switch to encode2().
  svq1enc: switch to encode2().
  dvenc: switch to encode2().
  dpxenc: switch to encode2().
  pngenc: switch to encode2().
  v210enc: switch to encode2().
  xwdenc: switch to encode2().
  ttadec: use branchless unsigned-to-signed unfolding
  avcodec: add a Sun Rasterfile encoder
  sunrast: Move common defines to a new header file.
  cdxl: fix video decoding for some files
  cdxl: fix audio for some samples
  apetag: add proper support for binary tags
  ttadec: remove dead code
  swscale: make access to filter data conditional on filter type.
  swscale: update context offsets after removal of AlpMmxFilter.
  prores: initialise encoder and decoder parts only when needed
  swscale: make monowhite/black RGB-independent.
  ...

Conflicts:
Changelog
libavcodec/alsdec.c
libavcodec/dpxenc.c
libavcodec/golomb.h
libavcodec/pamenc.c
libavcodec/pngenc.c
libavformat/img2.c
libswscale/output.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
25 files changed:
1  2 
Changelog
doc/general.texi
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/cdxl.c
libavcodec/cook.c
libavcodec/dpxenc.c
libavcodec/dv.c
libavcodec/flacdec.c
libavcodec/golomb.h
libavcodec/pamenc.c
libavcodec/pngenc.c
libavcodec/sinewin.h
libavcodec/sinewin_tablegen.c
libavcodec/sinewin_tablegen.h
libavcodec/sunrast.c
libavcodec/svq1enc.c
libavcodec/tta.c
libavcodec/v210enc.c
libavcodec/wmaprodec.c
libavformat/apetag.c
libavformat/img2.c
libswscale/output.c
libswscale/swscale_internal.h
libswscale/x86/swscale_template.c

diff --cc Changelog
+++ b/Changelog
@@@ -1,60 -1,37 +1,61 @@@
  Entries are sorted chronologically from oldest to youngest within each release,
  releases are sorted from youngest to oldest.
  
 -version <next>:
 -
 -- XWD encoder and decoder
 -- Support for fragmentation in the mov/mp4 muxer
 -- ISMV (Smooth Streaming) muxer
 +version next:
 +- v408 Quicktime and Microsoft AYUV Uncompressed 4:4:4:4 encoder and decoder
 +- setfield filter
  - CDXL demuxer and decoder
  - Apple ProRes encoder
 +- ffprobe -count_packets and -count_frames options
+ - Sun Rasterfile Encoder
  
  
 -version 0.8:
 -
 +version 0.10:
 +- Fixes: CVE-2011-3929, CVE-2011-3934, CVE-2011-3935, CVE-2011-3936,
 +         CVE-2011-3937, CVE-2011-3940, CVE-2011-3941, CVE-2011-3944,
 +         CVE-2011-3945, CVE-2011-3946, CVE-2011-3947, CVE-2011-3949,
 +         CVE-2011-3950, CVE-2011-3951, CVE-2011-3952
 +- v410 Quicktime Uncompressed 4:4:4 10-bit encoder and decoder
 +- SBaGen (SBG) binaural beats script demuxer
 +- OpenMG Audio muxer
 +- Timecode extraction in DV and MOV
 +- thumbnail video filter
 +- XML output in ffprobe
 +- asplit audio filter
 +- tinterlace video filter
 +- astreamsync audio filter
 +- amerge audio filter
 +- ISMV (Smooth Streaming) muxer
  - GSM audio parser
  - SMJPEG muxer
 -
 -
 -version 0.8_beta2:
 -
 +- XWD encoder and decoder
  - Automatic thread count based on detection number of (available) CPU cores
 -- Deprecate libpostproc. If desired, the switch --enable-postproc will
 -  enable it but it may be removed in a later Libav release.
 +- y41p Brooktree Uncompressed 4:1:1 12-bit encoder and decoder
 +- ffprobe -show_error option
 +- Avid 1:1 10-bit RGB Packer codec
 +- v308 Quicktime Uncompressed 4:4:4 encoder and decoder
 +- yuv4 libquicktime packed 4:2:0 encoder and decoder
 +- ffprobe -show_frames option
 +- silencedetect audio filter
 +- ffprobe -show_program_version, -show_library_versions, -show_versions options
  - rv34: frame-level multi-threading
  - optimized iMDCT transform on x86 using SSE for for mpegaudiodec
 +- Improved PGS subtitle decoder
 +- dumpgraph option to lavfi device
 +- r210 and r10k encoders
 +- ffwavesynth decoder
 +- aviocat tool
 +- ffeval tool
  
  
 -version 0.8_beta1:
 +version 0.9:
  
 +- openal input device added
 +- boxblur filter added
  - BWF muxer
  - Flash Screen Video 2 decoder
 -- ffplay/ffprobe/ffserver renamed to avplay/avprobe/avserver
 -- ffmpeg deprecated, added avconv, which is almost the same for now, except
 +- lavfi input device added
 +- added avconv, which is almost the same for now, except
  for a few incompatible changes in the options, which will hopefully make them
  easier to use. The changes are:
      * The options placement is now strictly enforced! While in theory the
Simple merge
@@@ -386,13 -353,10 +386,14 @@@ OBJS-$(CONFIG_SNOW_ENCODER)            
                                            error_resilience.o ituh263enc.o  \
                                            mpegvideo_enc.o mpeg12data.o
  OBJS-$(CONFIG_SOL_DPCM_DECODER)        += dpcm.o
 +OBJS-$(CONFIG_SONIC_DECODER)           += sonic.o
 +OBJS-$(CONFIG_SONIC_ENCODER)           += sonic.o
 +OBJS-$(CONFIG_SONIC_LS_ENCODER)        += sonic.o
  OBJS-$(CONFIG_SP5X_DECODER)            += sp5xdec.o mjpegdec.o mjpeg.o
  OBJS-$(CONFIG_SRT_DECODER)             += srtdec.o ass.o
 +OBJS-$(CONFIG_SRT_ENCODER)             += srtenc.o ass_split.o
  OBJS-$(CONFIG_SUNRAST_DECODER)         += sunrast.o
+ OBJS-$(CONFIG_SUNRAST_ENCODER)         += sunrastenc.o
  OBJS-$(CONFIG_SVQ1_DECODER)            += svq1dec.o svq1.o h263.o \
                                            mpegvideo.o error_resilience.o
  OBJS-$(CONFIG_SVQ1_ENCODER)            += svq1enc.o svq1.o    \
Simple merge
Simple merge
Simple merge
@@@ -141,12 -144,12 +151,12 @@@ static int encode_frame(AVCodecContext 
      write32(buf + 1628, avctx->sample_aspect_ratio.num);
      write32(buf + 1632, avctx->sample_aspect_ratio.den);
  
 -    switch (s->bits_per_component) {
 +    switch(s->bits_per_component) {
      case 8:
      case 16:
-         size = avpicture_layout(data, avctx->pix_fmt,
+         size = avpicture_layout((const AVPicture*)frame, avctx->pix_fmt,
                                  avctx->width, avctx->height,
-                                 buf + HEADER_SIZE, buf_size - HEADER_SIZE);
+                                 buf + HEADER_SIZE, pkt->size - HEADER_SIZE);
          if (size < 0)
              return size;
          break;
diff --cc libavcodec/dv.c
Simple merge
Simple merge
@@@ -301,9 -301,7 +301,9 @@@ static inline int get_ur_golomb_jpegls(
          return buf;
      }else{
          int i;
-         for(i=0; SHOW_UBITS(re, gb, 1) == 0; i++){
+         for (i = 0; i < limit && SHOW_UBITS(re, gb, 1) == 0; i++) {
 +            if (gb->size_in_bits <= re_index)
 +                return -1;
              LAST_SKIP_BITS(re, gb, 1);
              UPDATE_CACHE(re, gb);
          }
@@@ -20,6 -20,8 +20,7 @@@
   */
  
  #include "avcodec.h"
 -#include "bytestream.h"
+ #include "internal.h"
  #include "pnm.h"
  
  
@@@ -132,7 -120,7 +138,7 @@@ AVCodec ff_pam_encoder = 
      .id             = CODEC_ID_PAM,
      .priv_data_size = sizeof(PNMContext),
      .init           = ff_pnm_init,
-     .encode         = pam_encode_frame,
+     .encode2        = pam_encode_frame,
 -    .pix_fmts  = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE},
 +    .pix_fmts  = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGBA, PIX_FMT_RGB48BE, PIX_FMT_RGBA64BE, PIX_FMT_GRAY8, PIX_FMT_GRAY8A, PIX_FMT_GRAY16BE, PIX_FMT_MONOBLACK, PIX_FMT_NONE},
      .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"),
  };
@@@ -425,12 -455,7 +438,12 @@@ AVCodec ff_png_encoder = 
      .id             = CODEC_ID_PNG,
      .priv_data_size = sizeof(PNGEncContext),
      .init           = png_enc_init,
-     .encode         = encode_frame,
+     .encode2        = encode_frame,
 -    .pix_fmts= (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_PAL8, PIX_FMT_GRAY8, PIX_FMT_MONOBLACK, PIX_FMT_NONE},
 +    .pix_fmts= (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGBA,
 +                                          PIX_FMT_RGB48BE, PIX_FMT_RGBA64BE,
 +                                          PIX_FMT_PAL8,
 +                                          PIX_FMT_GRAY8, PIX_FMT_GRAY8A,
 +                                          PIX_FMT_GRAY16BE,
 +                                          PIX_FMT_MONOBLACK, PIX_FMT_NONE},
      .long_name= NULL_IF_CONFIG_SMALL("PNG image"),
  };
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -519,8 -490,9 +519,9 @@@ static const AVClass img2mux_class = 
  AVOutputFormat ff_image2_muxer = {
      .name           = "image2",
      .long_name      = NULL_IF_CONFIG_SMALL("image2 sequence"),
 -    .extensions     = "bmp,dpx,jpeg,jpg,ljpg,pam,pbm,pcx,pgm,pgmyuv,png,"
 -                      "ppm,sgi,tga,tif,tiff,jp2,xwd,sun,ras,rs,im1,im8,im24,"
 +    .extensions     = "bmp,dpx,jls,jpeg,jpg,ljpg,pam,pbm,pcx,pgm,pgmyuv,png,"
-                       "ppm,sgi,tga,tif,tiff,jp2,j2c,xwd",
++                      "ppm,sgi,tga,tif,tiff,jp2,j2c,xwd,sun,ras,rs,im1,im8,im24,"
+                       "sunras",
      .priv_data_size = sizeof(VideoData),
      .video_codec    = CODEC_ID_MJPEG,
      .write_header   = write_header,
@@@ -377,15 -386,17 +389,17 @@@ yuv2mono_1_c_template(SwsContext *c, co
      int i;
  
      for (i = 0; i < dstW - 7; i += 8) {
-         int acc =    g[((buf0[i    ] + 64) >> 7) + d128[0]];
-         acc += acc + g[((buf0[i + 1] + 64) >> 7) + d128[1]];
-         acc += acc + g[((buf0[i + 2] + 64) >> 7) + d128[2]];
-         acc += acc + g[((buf0[i + 3] + 64) >> 7) + d128[3]];
-         acc += acc + g[((buf0[i + 4] + 64) >> 7) + d128[4]];
-         acc += acc + g[((buf0[i + 5] + 64) >> 7) + d128[5]];
-         acc += acc + g[((buf0[i + 6] + 64) >> 7) + d128[6]];
-         acc += acc + g[((buf0[i + 7] + 64) >> 7) + d128[7]];
+         int acc = 0;
 -        accumulate_bit(acc, (buf0[i + 0] >> 7) + d128[0]);
 -        accumulate_bit(acc, (buf0[i + 1] >> 7) + d128[1]);
 -        accumulate_bit(acc, (buf0[i + 2] >> 7) + d128[2]);
 -        accumulate_bit(acc, (buf0[i + 3] >> 7) + d128[3]);
 -        accumulate_bit(acc, (buf0[i + 4] >> 7) + d128[4]);
 -        accumulate_bit(acc, (buf0[i + 5] >> 7) + d128[5]);
 -        accumulate_bit(acc, (buf0[i + 6] >> 7) + d128[6]);
 -        accumulate_bit(acc, (buf0[i + 7] >> 7) + d128[7]);
++        accumulate_bit(acc, ((buf0[i + 0] + 64) >> 7) + d128[0]);
++        accumulate_bit(acc, ((buf0[i + 1] + 64) >> 7) + d128[1]);
++        accumulate_bit(acc, ((buf0[i + 2] + 64) >> 7) + d128[2]);
++        accumulate_bit(acc, ((buf0[i + 3] + 64) >> 7) + d128[3]);
++        accumulate_bit(acc, ((buf0[i + 4] + 64) >> 7) + d128[4]);
++        accumulate_bit(acc, ((buf0[i + 5] + 64) >> 7) + d128[5]);
++        accumulate_bit(acc, ((buf0[i + 6] + 64) >> 7) + d128[6]);
++        accumulate_bit(acc, ((buf0[i + 7] + 64) >> 7) + d128[7]);
          output_pixel(*dest++, acc);
      }
  }
@@@ -423,7 -415,6 +421,8 @@@ typedef struct SwsContext 
  #if HAVE_VIS
      DECLARE_ALIGNED(8, uint64_t, sparc_coeffs)[10];
  #endif
++    int32_t alpMmxFilter[4 * MAX_FILTER_SIZE];
 +    int use_mmx_vfilter;
  
      /* function pointers for swScale() */
      yuv2planar1_fn yuv2plane1;
Simple merge