Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 12 Dec 2011 00:25:37 +0000 (01:25 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 12 Dec 2011 00:25:37 +0000 (01:25 +0100)
* qatar/master:
  x86: cabac: replace explicit memory references with "m" operands
  avplay: don't request a stereo downmix
  wmapro: use av_float2int()
  lavc: avoid invalid memcpy() in avcodec_default_release_buffer()
  lavu: replace int/float punning functions
  lavfi: install libavfilter/vsrc_buffer.h
  Remove extraneous semicolons
  sdp: Restore the original mp4 format h264 extradata if converted
  rtpenc: Add support for mp4 format h264
  rtpenc: Simplify code by introducing a separate end pointer
  movenc: Use the actual converted sample for RTP hinting
  Fix a bunch of common typos.

Conflicts:
doc/developer.texi
doc/eval.texi
doc/filters.texi
doc/protocols.texi
ffmpeg.c
ffplay.c
libavcodec/mpegvideo.h
libavcodec/x86/cabac.h
libavfilter/Makefile
libavformat/avformat.h
libavformat/cafdec.c
libavformat/flvdec.c
libavformat/flvenc.c
libavformat/gxfenc.c
libavformat/img2.c
libavformat/movenc.c
libavformat/mpegts.c
libavformat/rtpenc_h264.c
libavformat/utils.c
libavformat/wtv.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
74 files changed:
1  2 
avconv.c
cmdutils.h
doc/avconv.texi
doc/ffserver.texi
doc/protocols.texi
doc/soc.txt
ffmpeg.c
ffplay.c
ffserver.c
libavcodec/avcodec.h
libavcodec/binkaudio.c
libavcodec/bitstream.c
libavcodec/eatgv.c
libavcodec/error_resilience.c
libavcodec/h264.c
libavcodec/h264pred_template.c
libavcodec/lpc.h
libavcodec/mjpegdec.c
libavcodec/proresdec_lgpl.c
libavcodec/tscc.c
libavcodec/utils.c
libavcodec/vaapi_mpeg4.c
libavcodec/vc1dec.c
libavcodec/vc1dsp.c
libavcodec/wmaprodec.c
libavcodec/wmavoice.c
libavcodec/x86/h264_i386.h
libavcodec/x86/vc1dsp_yasm.asm
libavdevice/jack_audio.c
libavdevice/timefilter.h
libavformat/4xm.c
libavformat/aiffdec.c
libavformat/aiffenc.c
libavformat/avformat.h
libavformat/cafdec.c
libavformat/ffmdec.c
libavformat/ffmenc.c
libavformat/flvdec.c
libavformat/flvenc.c
libavformat/gxfenc.c
libavformat/http.c
libavformat/id3v2.c
libavformat/img2.c
libavformat/iv8.c
libavformat/matroskadec.c
libavformat/matroskaenc.c
libavformat/mms.h
libavformat/mov.c
libavformat/movenc.c
libavformat/movenc.h
libavformat/movenchint.c
libavformat/mpegts.c
libavformat/mpegtsenc.c
libavformat/mxfenc.c
libavformat/nuv.c
libavformat/rdt.c
libavformat/rtmppkt.c
libavformat/rtmpproto.c
libavformat/rtp.h
libavformat/rtpenc_h264.c
libavformat/sdp.c
libavformat/soxdec.c
libavformat/soxenc.c
libavformat/thp.c
libavformat/udp.c
libavformat/utils.c
libavutil/eval.h
libavutil/intfloat_readwrite.h
libpostproc/postprocess.c
libpostproc/postprocess_internal.h
libswscale/rgb2rgb.c
libswscale/swscale.c
libswscale/x86/swscale_mmx.c
tools/patcheck

diff --cc avconv.c
Simple merge
diff --cc cmdutils.h
Simple merge
diff --cc doc/avconv.texi
Simple merge
@@@ -145,9 -148,9 +145,9 @@@ set up correctly. Maybe the sound card 
  input source. Maybe you have a really awful audio interface (like I do)
  that only captures in stereo and also requires that one channel be flipped.
  If you are one of these people, then export 'AUDIO_FLIP_LEFT=1' before
 -starting avconv.
 +starting ffmpeg.
  
- @subsection The audio and video loose sync after a while.
+ @subsection The audio and video lose sync after a while.
  
  Yes, they do.
  
Simple merge
diff --cc doc/soc.txt
@@@ -18,7 -18,7 +18,7 @@@ essential that changes to their codebas
  easy reviewable that again leads us to:
  * use of a revision control system like git
  * separation of cosmetic from non-cosmetic changes (this is almost entirely
-   ignored by mentors and students in soc 2006 which might lead to a suprise
+   ignored by mentors and students in soc 2006 which might lead to a surprise
    when the code will be reviewed at the end before a possible inclusion in
 -  Libav, individual changes were generally not reviewable due to cosmetics).
 +  FFmpeg, individual changes were generally not reviewable due to cosmetics).
  * frequent commits, so that comments can be provided early
diff --cc ffmpeg.c
+++ b/ffmpeg.c
@@@ -4162,13 -3797,29 +4162,13 @@@ static void opt_output_file(void *optct
      }
  
      if (!(oc->oformat->flags & AVFMT_NOFILE)) {
-         /* test if it already exists to avoid loosing precious files */
+         /* test if it already exists to avoid losing precious files */
 -        if (!file_overwrite &&
 -            (strchr(filename, ':') == NULL ||
 -             filename[1] == ':' ||
 -             av_strstart(filename, "file:", NULL))) {
 -            if (avio_check(filename, 0) == 0) {
 -                if (!using_stdin) {
 -                    fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
 -                    fflush(stderr);
 -                    if (!read_yesno()) {
 -                        fprintf(stderr, "Not overwriting - exiting\n");
 -                        exit_program(1);
 -                    }
 -                }
 -                else {
 -                    fprintf(stderr,"File '%s' already exists. Exiting.\n", filename);
 -                    exit_program(1);
 -                }
 -            }
 -        }
 +        assert_file_overwrite(filename);
  
          /* open the file */
 -        if ((err = avio_open(&oc->pb, filename, AVIO_FLAG_WRITE)) < 0) {
 +        if ((err = avio_open2(&oc->pb, filename, AVIO_FLAG_WRITE,
 +                              &oc->interrupt_callback,
 +                              &output_files[nb_output_files - 1].opts)) < 0) {
              print_error(filename, err);
              exit_program(1);
          }
diff --cc ffplay.c
Simple merge
diff --cc ffserver.c
@@@ -473,9 -473,9 +473,9 @@@ static void start_children(FFStream *fe
                      slash = pathname;
                  else
                      slash++;
 -                strcpy(slash, "avconv");
 +                strcpy(slash, "ffmpeg");
  
-                 http_log("Launch commandline: ");
+                 http_log("Launch command line: ");
                  http_log("%s ", pathname);
                  for (i = 1; feed->child_argv[i] && feed->child_argv[i][0]; i++)
                      http_log("%s ", feed->child_argv[i]);
Simple merge
Simple merge
@@@ -103,10 -103,10 +103,10 @@@ static int alloc_table(VLC *vlc, int si
      vlc->table_size += size;
      if (vlc->table_size > vlc->table_allocated) {
          if(use_static)
-             abort(); //cant do anything, init_vlc() is used with too little memory
+             abort(); // cannot do anything, init_vlc() is used with too little memory
          vlc->table_allocated += (1 << vlc->bits);
 -        vlc->table = av_realloc(vlc->table,
 -                                sizeof(VLC_TYPE) * 2 * vlc->table_allocated);
 +        vlc->table = av_realloc_f(vlc->table,
 +                                  vlc->table_allocated, sizeof(VLC_TYPE) * 2);
          if (!vlc->table)
              return -1;
      }
Simple merge
Simple merge
Simple merge
@@@ -388,11 -388,11 +388,11 @@@ static void FUNCC(pred16x16_##n##_dc)(u
      PREDICT_16x16_DC(PIXEL_SPLAT_X4(v));\
  }
  
- PRED16x16_X(127, (1<<(BIT_DEPTH-1))-1);
- PRED16x16_X(128, (1<<(BIT_DEPTH-1))+0);
- PRED16x16_X(129, (1<<(BIT_DEPTH-1))+1);
+ PRED16x16_X(127, (1<<(BIT_DEPTH-1))-1)
+ PRED16x16_X(128, (1<<(BIT_DEPTH-1))+0)
+ PRED16x16_X(129, (1<<(BIT_DEPTH-1))+1)
  
 -static inline void FUNCC(pred16x16_plane_compat)(uint8_t *_src, int _stride, const int svq3, const int rv40){
 +static inline void FUNCC(pred16x16_plane_compat)(uint8_t *p_src, int p_stride, const int svq3, const int rv40){
    int i, j, k;
    int a;
    INIT_CLIP
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -721,17 -710,7 +722,17 @@@ typedef struct AVStream 
      int codec_info_nb_frames;
  
      /**
-      * Stream informations used internally by av_find_stream_info()
 +     * Stream Identifier
 +     * This is the MPEG-TS stream identifier +1
 +     * 0 means unknown
 +     */
 +    int stream_identifier;
 +
 +    int64_t interleaver_chunk_size;
 +    int64_t interleaver_chunk_duration;
 +
 +    /**
+      * Stream information used internally by av_find_stream_info()
       */
  #define MAX_STD_TIMEBASES (60*12+5)
      struct {
@@@ -68,8 -68,8 +68,8 @@@ static int read_desc_chunk(AVFormatCont
  
      /* parse format description */
      st->codec->codec_type  = AVMEDIA_TYPE_AUDIO;
-     st->codec->sample_rate = av_int2dbl(avio_rb64(pb));
+     st->codec->sample_rate = av_int2double(avio_rb64(pb));
 -    st->codec->codec_tag   = avio_rb32(pb);
 +    st->codec->codec_tag   = avio_rl32(pb);
      flags = avio_rb32(pb);
      caf->bytes_per_packet  = avio_rb32(pb);
      st->codec->block_align = caf->bytes_per_packet;
@@@ -355,11 -350,10 +355,11 @@@ static int ffm_read_header(AVFormatCont
              codec->keyint_min = avio_rb32(pb);
              codec->scenechange_threshold = avio_rb32(pb);
              codec->b_frame_strategy = avio_rb32(pb);
-             codec->qcompress = av_int2dbl(avio_rb64(pb));
-             codec->qblur = av_int2dbl(avio_rb64(pb));
+             codec->qcompress = av_int2double(avio_rb64(pb));
+             codec->qblur = av_int2double(avio_rb64(pb));
              codec->max_qdiff = avio_rb32(pb);
              codec->refs = avio_rb32(pb);
 +            codec->directpred = avio_rb32(pb);
              break;
          case AVMEDIA_TYPE_AUDIO:
              codec->sample_rate = avio_rb32(pb);
@@@ -163,11 -162,10 +163,11 @@@ static int ffm_write_header(AVFormatCon
              avio_wb32(pb, codec->keyint_min);
              avio_wb32(pb, codec->scenechange_threshold);
              avio_wb32(pb, codec->b_frame_strategy);
-             avio_wb64(pb, av_dbl2int(codec->qcompress));
-             avio_wb64(pb, av_dbl2int(codec->qblur));
+             avio_wb64(pb, av_double2int(codec->qcompress));
+             avio_wb64(pb, av_double2int(codec->qblur));
              avio_wb32(pb, codec->max_qdiff);
              avio_wb32(pb, codec->refs);
 +            avio_wb32(pb, codec->directpred);
              break;
          case AVMEDIA_TYPE_AUDIO:
              avio_wb32(pb, codec->sample_rate);
@@@ -187,7 -189,8 +187,7 @@@ static int parse_keyframes_index(AVForm
          for (i = 0; i < arraylen && avio_tell(ioc) < max_pos - 1; i++) {
              if (avio_r8(ioc) != AMF_DATA_TYPE_NUMBER)
                  goto finish;
-             current_array[0][i] = av_int2dbl(avio_rb64(ioc));
 -            num_val = av_int2double(avio_rb64(ioc));
 -            current_array[i] = num_val;
++            current_array[0][i] = av_int2double(avio_rb64(ioc));
          }
          if (times && filepositions) {
              // All done, exiting at a position allowing amf_parse_object
@@@ -19,8 -19,7 +19,8 @@@
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
- #include "libavutil/intfloat_readwrite.h"
 +#include "libavutil/intreadwrite.h"
+ #include "libavutil/intfloat.h"
  #include "avformat.h"
  #include "flv.h"
  #include "internal.h"
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
- #include "libavutil/intfloat_readwrite.h"
+ #include "libavutil/intfloat.h"
 +#include "libavutil/opt.h"
  #include "libavutil/mathematics.h"
 +#include "libavcodec/timecode.h"
  #include "avformat.h"
  #include "internal.h"
  #include "gxf.h"
Simple merge
Simple merge
@@@ -446,7 -432,7 +446,7 @@@ static int write_packet(AVFormatContex
                       (!st->codec->extradata_size &&
                        AV_RL32(pkt->data+4) != MKTAG('j','P',' ',' '))){ // signature
              error:
-                 av_log(s, AV_LOG_ERROR, "malformated jpeg2000 codestream %X\n", AV_RB32(pkt->data));
 -                av_log(s, AV_LOG_ERROR, "malformed JPEG 2000 codestream\n");
++                av_log(s, AV_LOG_ERROR, "malformed JPEG 2000 codestream %X\n", AV_RB32(pkt->data));
                  return -1;
              }
          }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -2252,25 -2036,13 +2253,35 @@@ int ff_mov_write_packet(AVFormatContex
      if (enc->codec_id == CODEC_ID_H264 && trk->vosLen > 0 && *(uint8_t *)trk->vosData != 1) {
          /* from x264 or from bytestream h264 */
          /* nal reformating needed */
 -        if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
 +        if(mov->frag_seq_num>0){
 +            uint8_t *buf=NULL;
 +            size= pkt->size;
++
 +            if(ff_avc_parse_nal_units_buf(pkt->data, &buf, &size) < 0){
 +                av_log(s, AV_LOG_ERROR, "malformated H264 bitstream\n");
 +                return -1;
 +            }
 +            trk->cluster[trk->entry].data= buf;
-         }else
++            if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
++                reformatted_data= av_malloc(size);
++                memcpy(reformatted_data, buf, size);
++            }
++        }else if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
+             ff_avc_parse_nal_units_buf(pkt->data, &reformatted_data,
+                                        &size);
+             avio_write(pb, reformatted_data, size);
+         } else {
              size = ff_avc_parse_nal_units(pb, pkt->data, pkt->size);
+         }
 +    } else if (enc->codec_id == CODEC_ID_AAC && pkt->size > 2 &&
 +               (AV_RB16(pkt->data) & 0xfff0) == 0xfff0) {
 +        av_log(s, AV_LOG_ERROR, "malformated aac bitstream, use -absf aac_adtstoasc\n");
 +        return -1;
 +    } else if (mov->frag_seq_num>0){
 +        trk->cluster[trk->entry].data = av_malloc(size);
 +        if (!trk->cluster[trk->entry].data)
 +            return AVERROR(ENOMEM);
 +        memcpy(trk->cluster[trk->entry].data, pkt->data, size);
      } else {
          avio_write(pb, pkt->data, size);
      }
Simple merge
Simple merge
@@@ -1939,12 -1892,9 +1939,12 @@@ static int mpegts_read_header(AVFormatC
      if (s->iformat == &ff_mpegts_demuxer) {
          /* normal demux */
  
-         /* first do a scanning to get all the services */
+         /* first do a scan to get all the services */
 -        if (pb->seekable && avio_seek(pb, pos, SEEK_SET) < 0)
 -            av_log(s, AV_LOG_ERROR, "Unable to seek back to the start\n");
 +        /* NOTE: We attempt to seek on non-seekable files as well, as the
 +         * probe buffer usually is big enough. Only warn if the seek failed
 +         * on files where the seek should work. */
 +        if (avio_seek(pb, pos, SEEK_SET) < 0)
 +            av_log(s, pb->seekable ? AV_LOG_ERROR : AV_LOG_INFO, "Unable to seek back to the start\n");
  
          mpegts_open_section_filter(ts, SDT_PID, sdt_cb, ts, 1);
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -1655,43 -1555,20 +1655,43 @@@ static void name ## ToUV_half_c(uint8_
                                   maskr, maskg, maskb, rsh, gsh, bsh, S); \
  }
  
- rgb16_32_wrapper(PIX_FMT_BGR32,    bgr32,  16, 0,  0, 0, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR32_1,  bgr321, 16, 0,  0, 8, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB32,    rgb32,   0, 0, 16, 0,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB32_1,  rgb321,  0, 0, 16, 8,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR565LE, bgr16le, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR555LE, bgr15le, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7);
- rgb16_32_wrapper(PIX_FMT_RGB565LE, rgb16le, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB555LE, rgb15le, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7);
- rgb16_32_wrapper(PIX_FMT_BGR565BE, bgr16be, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR555BE, bgr15be, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7);
- rgb16_32_wrapper(PIX_FMT_RGB565BE, rgb16be, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB555BE, rgb15be, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7);
+ rgb16_32_wrapper(PIX_FMT_BGR32,    bgr32,  16, 0,  0, 0, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR32_1,  bgr321, 16, 0,  0, 8, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB32,    rgb32,   0, 0, 16, 0,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB32_1,  rgb321,  0, 0, 16, 8,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR565LE, bgr16le, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR555LE, bgr15le, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7)
+ rgb16_32_wrapper(PIX_FMT_RGB565LE, rgb16le, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB555LE, rgb15le, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7)
+ rgb16_32_wrapper(PIX_FMT_BGR565BE, bgr16be, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR555BE, bgr15be, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7)
+ rgb16_32_wrapper(PIX_FMT_RGB565BE, rgb16be, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB555BE, rgb15be, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7)
  
 -static void abgrToA_c(uint8_t *dst, const uint8_t *src, int width, uint32_t *unused)
 +static void gbr24pToUV_half_c(uint16_t *dstU, uint16_t *dstV,
 +                         const uint8_t *gsrc, const uint8_t *bsrc, const uint8_t *rsrc,
 +                         int width, enum PixelFormat origin)
 +{
 +    int i;
 +    for (i = 0; i < width; i++) {
 +        unsigned int g   = gsrc[2*i] + gsrc[2*i+1];
 +        unsigned int b   = bsrc[2*i] + bsrc[2*i+1];
 +        unsigned int r   = rsrc[2*i] + rsrc[2*i+1];
 +
 +        dstU[i] = (RU*r + GU*g + BU*b + (0x4001<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-6+1);
 +        dstV[i] = (RV*r + GV*g + BV*b + (0x4001<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-6+1);
 +    }
 +}
 +
 +static void abgrToA_c(int16_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, int width, uint32_t *unused)
 +{
 +    int i;
 +    for (i=0; i<width; i++) {
 +        dst[i]= src[4*i]<<6;
 +    }
 +}
 +
 +static void rgbaToA_c(int16_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, int width, uint32_t *unused)
  {
      int i;
      for (i=0; i<width; i++) {
Simple merge
diff --cc tools/patcheck
Simple merge