OSDN Git Service

Merge remote branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 12 May 2011 02:51:24 +0000 (04:51 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 12 May 2011 02:51:24 +0000 (04:51 +0200)
* qatar/master: (32 commits)
  10-bit H.264 x86 chroma v loopfilter asm
  Port SMPTE S302M audio decoder from FFmbc 0.3. [Copyright headers corrected]
  Fix crash of interlaced MPEG2 decoding
  h264pred: fix one more aliasing violation.
  doc/APIchanges: fill in missing hashes and dates.
  flacenc: use proper initializers for AVOption default values.
  lavc: deprecate named constants for deprecated antialias_algo.
  aac: workaround for compilation on cygwin
  swscale: extend YUV422p support to 10bits depth
  tiff: add support for inverted FillOrder for uncompressed data
  Remove unused softfloat implementation.
  h264pred: fix aliasing violations.
  rotozoom: Eliminate French variable name.
  rotozoom: Check return value of fread().
  rotozoom: Return an error value instead of calling exit().
  rotozoom: Make init_demo() return int and check for errors on invocation.
  rotozoom: Drop silly UINT8 typedef.
  rotozoom: Drop some unnecessary parentheses.
  rotozoom: K&R coding style cosmetics
  rtsp: Only do keepalive using GET_PARAMETER if the server supports it
  ...

Conflicts:
Changelog
cmdutils.c
doc/APIchanges
doc/general.texi
ffmpeg.c
ffplay.c
libavcodec/h264pred_template.c
libavcodec/resample.c
libavutil/pixfmt.h
libavutil/softfloat.c
libavutil/softfloat.h
tests/rotozoom.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
23 files changed:
1  2 
Changelog
doc/APIchanges
doc/general.texi
ffmpeg.c
libavcodec/Makefile
libavcodec/aaccoder.c
libavcodec/allcodecs.c
libavcodec/avcodec.h
libavcodec/flacenc.c
libavcodec/options.c
libavcodec/resample.c
libavcodec/s302m.c
libavcodec/tiff.c
libavcodec/x86/Makefile
libavcodec/x86/dsputil_mmx.c
libavcodec/x86/h264_deblock.asm
libavcodec/x86/h264dsp_mmx.c
libavcodec/x86/x86util.asm
libavformat/mpegts.c
libavformat/rtsp.c
libavformat/rtsp.h
libavformat/rtspdec.c
tests/rotozoom.c

diff --cc Changelog
+++ b/Changelog
@@@ -4,14 -4,10 +4,16 @@@ releases are sorted from youngest to ol
  
  version <next>:
  
 +- many many things we forgot because we rather write code than changelogs
 +- libmpcodecs video filter support (3 times as many filters than before)
 +- mpeg2 aspect ratio dection fixed
 +- libxvid aspect pickiness fixed
 +- Frame multithreaded decoding
  - Lots of deprecated API cruft removed
  - fft and imdct optimizations for AVX (Sandy Bridge) processors
 +- showinfo filter added
+ - DPX image encoder
+ - SMPTE 302M AES3 audio decoder
  
  
  version 0.7_beta1:
diff --cc doc/APIchanges
@@@ -19,31 -19,7 +19,31 @@@ API changes, most recent first
    min_partition_order, max_partition_order, lpc_type, lpc_passes.
    Corresponding FLAC encoder options should be used instead.
  
- 2011-04-XX - bebe72f - lavu 51.1.0 - avutil.h
 +2011-05-07 - xxxxxxx - lavfi 2.5.0 - avcodec.h
 +  Add libavfilter/avcodec.h header and avfilter_copy_frame_props()
 +  function.
 +
 +2011-05-07 - xxxxxxx - lavc 53.5.0 - AVFrame
 +  Add format field to AVFrame.
 +
 +2011-05-07 - xxxxxxx - lavc 53.4.0 - AVFrame
 +  Add width and height fields to AVFrame.
 +
 +2011-05-01 - xxxxxxx - lavfi 2.4.0 - avfilter.h
 +  Rename AVFilterBufferRefVideoProps.pixel_aspect to
 +  sample_aspect_ratio.
 +
 +2011-05-01 - xxxxxxx - lavc 53.3.0 - AVFrame
 +  Add a sample_aspect_ratio field to AVFrame.
 +
 +2011-05-01 - xxxxxxx - lavc 53.2.0 - AVFrame
 +  Add a pkt_pos field to AVFrame.
 +
 +2011-04-xx - xxxxxxx - lavu 51.2.0 - mem.h
 +  Add av_dynarray_add function for adding
 +  an element to a dynamic array.
 +
+ 2011-04-26 - bebe72f - lavu 51.1.0 - avutil.h
    Add AVPictureType enum and av_get_picture_type_char(), deprecate
    FF_*_TYPE defines and av_get_pict_type_char() defined in
    libavcodec/avcodec.h.
@@@ -677,10 -673,7 +677,11 @@@ following image formats are supported
  @item Sierra VMD audio       @tab     @tab  X
      @tab Used in Sierra VMD files.
  @item Smacker audio          @tab     @tab  X
+ @item SMPTE 302M AES3 audio  @tab     @tab  X
 +@item Sonic                  @tab  X  @tab  X
 +    @tab experimental codec
 +@item Sonic lossless         @tab  X  @tab  X
 +    @tab experimental codec
  @item Speex                  @tab     @tab  E
      @tab supported through external library libspeex
  @item True Audio (TTA)       @tab     @tab  X
diff --cc ffmpeg.c
Simple merge
Simple merge
   * add sane pulse detection
   ***********************************/
  
+ #include "libavutil/libm.h" // brought forward to work around cygwin header breakage
  #include <float.h>
 +#include <math.h>
  #include "avcodec.h"
  #include "put_bits.h"
  #include "aac.h"
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -260,10 -266,10 +266,10 @@@ int audio_resample(ReSampleContext *s, 
              return 0;
          }
  
-         input  = s->buffer[0];
+         input = s->buffer[0];
      }
  
 -    lenout = 4 * nb_samples * s->ratio + 16;
 +    lenout= 2*s->output_channels*nb_samples * s->ratio + 16;
  
      if (s->sample_fmt[1] != AV_SAMPLE_FMT_S16) {
          output_bak = output;
index 0000000,fb1fd86..dd0ec2e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,141 +1,141 @@@
 - * This file is part of Libav.
+ /*
+  * SMPTE 302M decoder
+  * Copyright (c) 2008 Laurent Aimar <fenrir@videolan.org>
+  * Copyright (c) 2009 Baptiste Coudurier <baptiste.coudurier@gmail.com>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #include "libavutil/intreadwrite.h"
+ #include "avcodec.h"
+ #define AES3_HEADER_LEN 4
+ static int s302m_parse_frame_header(AVCodecContext *avctx, const uint8_t *buf,
+                                     int buf_size)
+ {
+     uint32_t h;
+     int frame_size, channels, id, bits;
+     if (buf_size <= AES3_HEADER_LEN) {
+         av_log(avctx, AV_LOG_ERROR, "frame is too short\n");
+         return AVERROR_INVALIDDATA;
+     }
+     /*
+      * AES3 header :
+      * size:            16
+      * number channels   2
+      * channel_id        8
+      * bits per samples  2
+      * alignments        4
+      */
+     h = AV_RB32(buf);
+     frame_size =  (h >> 16) & 0xffff;
+     channels   = ((h >> 14) & 0x0003) * 2 +  2;
+     id         =  (h >>  6) & 0x00ff;
+     bits       = ((h >>  4) & 0x0003) * 4 + 16;
+     if (AES3_HEADER_LEN + frame_size != buf_size || bits > 24) {
+         av_log(avctx, AV_LOG_ERROR, "frame has invalid header\n");
+         return AVERROR_INVALIDDATA;
+     }
+     /* Set output properties */
+     avctx->bits_per_coded_sample = bits;
+     if (bits > 16)
+         avctx->sample_fmt = SAMPLE_FMT_S32;
+     else
+         avctx->sample_fmt = SAMPLE_FMT_S16;
+     avctx->channels    = channels;
+     avctx->sample_rate = 48000;
+     avctx->bit_rate    = 48000 * avctx->channels * (avctx->bits_per_coded_sample + 4) +
+                          32 * (48000 / (buf_size * 8 /
+                                         (avctx->channels *
+                                          (avctx->bits_per_coded_sample + 4))));
+     return frame_size;
+ }
+ static int s302m_decode_frame(AVCodecContext *avctx, void *data,
+                               int *data_size, AVPacket *avpkt)
+ {
+     const uint8_t *buf = avpkt->data;
+     int buf_size       = avpkt->size;
+     int frame_size = s302m_parse_frame_header(avctx, buf, buf_size);
+     if (frame_size < 0)
+         return frame_size;
+     buf_size -= AES3_HEADER_LEN;
+     buf      += AES3_HEADER_LEN;
+     if (*data_size < 4 * buf_size * 8 / (avctx->bits_per_coded_sample + 4))
+         return -1;
+     if (avctx->bits_per_coded_sample == 24) {
+         uint32_t *o = data;
+         for (; buf_size > 6; buf_size -= 7) {
+             *o++ = (av_reverse[buf[2]]        << 24) |
+                    (av_reverse[buf[1]]        << 16) |
+                    (av_reverse[buf[0]]        <<  8);
+             *o++ = (av_reverse[buf[6] & 0xf0] << 28) |
+                    (av_reverse[buf[5]]        << 20) |
+                    (av_reverse[buf[4]]        << 12) |
+                    (av_reverse[buf[3] & 0x0f] <<  8);
+             buf += 7;
+         }
+         *data_size = (uint8_t*) o - (uint8_t*) data;
+     } else if (avctx->bits_per_coded_sample == 20) {
+         uint32_t *o = data;
+         for (; buf_size > 5; buf_size -= 6) {
+             *o++ = (av_reverse[buf[2] & 0xf0] << 28) |
+                    (av_reverse[buf[1]]        << 20) |
+                    (av_reverse[buf[0]]        << 12);
+             *o++ = (av_reverse[buf[5] & 0xf0] << 28) |
+                    (av_reverse[buf[4]]        << 20) |
+                    (av_reverse[buf[3]]        << 12);
+             buf += 6;
+         }
+         *data_size = (uint8_t*) o - (uint8_t*) data;
+     } else {
+         uint16_t *o = data;
+         for (; buf_size > 4; buf_size -= 5) {
+             *o++ = (av_reverse[buf[1]]        <<  8) |
+                     av_reverse[buf[0]];
+             *o++ = (av_reverse[buf[4] & 0xf0] << 12) |
+                    (av_reverse[buf[3]]        <<  4) |
+                     av_reverse[buf[2] & 0x0f];
+             buf += 5;
+         }
+         *data_size = (uint8_t*) o - (uint8_t*) data;
+     }
+     return buf - avpkt->data;
+ }
+ AVCodec ff_s302m_decoder = {
+     .name           = "s302m",
+     .type           = AVMEDIA_TYPE_AUDIO,
+     .id             = CODEC_ID_S302M,
+     .priv_data_size = 0,
+     .decode         = s302m_decode_frame,
+     .long_name      = NULL_IF_CONFIG_SMALL("SMPTE 302M"),
+ };
Simple merge
Simple merge
Simple merge
@@@ -5,10 -5,11 +5,11 @@@
  ;*
  ;* Authors: Loren Merritt <lorenm@u.washington.edu>
  ;*          Jason Garrett-Glaser <darkshikari@gmail.com>
+ ;*          Oskar Arvidsson <oskar@irock.se>
  ;*
 -;* This file is part of Libav.
 +;* This file is part of FFmpeg.
  ;*
 -;* Libav is free software; you can redistribute it and/or
 +;* FFmpeg is free software; you can redistribute it and/or
  ;* modify it under the terms of the GNU Lesser General Public
  ;* License as published by the Free Software Foundation; either
  ;* version 2.1 of the License, or (at your option) any later version.
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge