Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 9 Nov 2012 09:29:51 +0000 (10:29 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 9 Nov 2012 09:29:51 +0000 (10:29 +0100)
* qatar/master:
  flacenc: ensure the order is within the min/max range in LPC order search
  avconv: rescale packet duration to muxer time base when flushing encoders
  add 24-bit FLAC encoding to Changelog
  rtpenc_aac: Fix calculation of the header size
  x86: h264_intrapred: port to cpuflags

Conflicts:
Changelog
libavformat/rtpenc_aac.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
libavcodec/flacenc.c
libavcodec/x86/h264_intrapred.asm
libavformat/rtpenc_aac.c

diff --combined Changelog
+++ b/Changelog
@@@ -2,36 -2,39 +2,37 @@@ Entries are sorted chronologically fro
  releases are sorted from youngest to oldest.
  
  version <next>:
 -- ashowinfo audio filter
 -- 24-bit FLAC encoding
 -
  
 -version 9_beta2:
 +- stream disposition information printing in ffprobe
 +- filter for loudness analysis following EBU R128
 +- Opus encoder using libopus
 +- ffprobe -select_streams option
 +- Pinnacle TARGA CineWave YUV16 decoder
 +- TAK demuxer, decoder and parser
 +- DTS-HD demuxer
 +- remove -same_quant, it hasn't worked for years
 +- FFM2 support
 +- X-Face image encoder and decoder
++- 24-bit FLAC encoding
  - metadata (INFO tag) support in WAV muxer
 +- subtitles raw text decoder
  - support for building DLLs using MSVC
 +- LVF demuxer
 +- ffescape tool
 +- metadata (info chunk) support in CAF muxer
 +- field filter ported from libmpcodecs
 +- AVR demuxer
  
  
 -version 9_beta1:
 +version 1.0:
  
 -- XWD encoder and decoder
 -- Support for fragmentation in the mov/mp4 muxer
 -- ISMV (Smooth Streaming) muxer
 -- CDXL demuxer and decoder
 -- Apple ProRes encoder
 -- Sun Rasterfile Encoder
 -- remove libpostproc
 -- ID3v2 attached pictures reading and writing
 -- WMA Lossless decoder
 -- XBM encoder
 -- RealAudio Lossless decoder
 -- ZeroCodec decoder
 -- drop support for avconv without libavfilter
 -- add libavresample audio conversion library
 -- audio filters support in libavfilter and avconv
 -- add fps filter
 -- audio split filter
 -- audio mix filter
 -- avprobe output is now standard INI or JSON. The old format can still
 -  be used with -of old.
 +- INI and flat output in ffprobe
 +- Scene detection in libavfilter
  - Indeo Audio decoder
  - channelsplit audio filter
 +- setnsamples audio filter
 +- atempo filter
 +- ffprobe -show_data option
  - RTMPT protocol support
  - iLBC encoding/decoding via libilbc
  - Microsoft Screen 1 decoder
  - Microsoft Expression Encoder Screen decoder
  - RTMPS protocol support
  - RTMPTS protocol support
 -- JPEG 2000 encoding support through OpenJPEG
 -- G.723.1 demuxer and decoder
  - RTMPE protocol support
  - RTMPTE protocol support
 +- showwaves and showspectrum filter
 +- LucasArts SMUSH playback support
 +- SAMI, RealText and SubViewer demuxers and decoders
 +- Heart Of Darkness PAF playback support
 +- iec61883 device
 +- asettb filter
 +- new option: -progress
 +- 3GPP Timed Text encoder/decoder
 +- GeoTIFF decoder support
 +- ffmpeg -(no)stdin option
 +- Opus decoder using libopus
 +- caca output device using libcaca
 +- alphaextract and alphamerge filters
 +- concat filter
 +- flite filter
  - Canopus Lossless Codec decoder
 -- avconv -shortest option is now per-output file,
 +- bitmap subtitles in filters (experimental and temporary)
 +- MP2 encoding via TwoLAME
 +- bmp parser
 +- smptebars source
 +- asetpts filter
 +- hue filter
 +- ICO muxer
 +- SubRip encoder and decoder without embedded timing
 +- edge detection filter
 +- framestep filter
 +- ffmpeg -shortest option is now per-output file
    -pass and -passlogfile are now per-output stream
 +- volume measurement filter
  - Ut Video encoder
  - Microsoft Screen 2 decoder
 +- smartblur filter ported from MPlayer
 +- CPiA decoder
 +- decimate filter ported from MPlayer
  - RTP depacketization of JPEG
  - Smooth Streaming live segmenter muxer
 +- F4V muxer
 +- sendcmd and asendcmd filters
 +- WebVTT demuxer and decoder (simple tags supported)
  - RTP packetization of JPEG
 -- Opus decoder and encoder using libopus
 -- remove -same_quant, it hasn't worked for years
 +- faststart option in the MOV/MP4 muxer
  - support for building with MSVC
  
  
 -version 0.8:
 +version 0.11:
  
 -- GSM audio parser
 -- SMJPEG muxer
 +- Fixes: CVE-2012-2772, CVE-2012-2774, CVE-2012-2775, CVE-2012-2776, CVE-2012-2777,
 +         CVE-2012-2779, CVE-2012-2782, CVE-2012-2783, CVE-2012-2784, CVE-2012-2785,
 +         CVE-2012-2786, CVE-2012-2787, CVE-2012-2788, CVE-2012-2789, CVE-2012-2790,
 +         CVE-2012-2791, CVE-2012-2792, CVE-2012-2793, CVE-2012-2794, CVE-2012-2795,
 +         CVE-2012-2796, CVE-2012-2797, CVE-2012-2798, CVE-2012-2799, CVE-2012-2800,
 +         CVE-2012-2801, CVE-2012-2802, CVE-2012-2803, CVE-2012-2804,
 +- 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
 +- ID3v2 attached pictures reading and writing
 +- WMA Lossless decoder
 +- bluray protocol
 +- blackdetect filter
 +- libutvideo encoder wrapper (--enable-libutvideo)
 +- swapuv filter
 +- bbox filter
 +- XBM encoder and decoder
 +- RealAudio Lossless decoder
 +- ZeroCodec decoder
 +- tile video filter
 +- Metal Gear Solid: The Twin Snakes demuxer
 +- OpenEXR image decoder
 +- removelogo filter
 +- drop support for ffmpeg without libavfilter
 +- drawtext video filter: fontconfig support
 +- ffmpeg -benchmark_all option
 +- super2xsai filter ported from libmpcodecs
 +- add libavresample audio conversion library for compatibility
 +- MicroDVD decoder
 +- Avid Meridien (AVUI) encoder and decoder
 +- accept + prefix to -pix_fmt option to disable automatic conversions.
 +- complete audio filtering in libavfilter and ffmpeg
 +- add fps filter
 +- vorbis parser
 +- png parser
 +- audio mix filter
  
  
 -version 0.8_beta2:
 +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
 +- 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
      * -vframes/-aframes/-dframes options are now aliases to the new -frames option.
      * -vtag/-atag/-stag options are now aliases to the new -tag option.
  - XMV demuxer
 +- LOAS demuxer
 +- ashowinfo filter added
  - Windows Media Image decoder
 +- amovie source added
  - LATM muxer/demuxer
 -- showinfo filter
 -- split filter
 +- Speex encoder via libspeex
 +- JSON output in ffprobe
 +- WTV muxer
 +- Optional C++ Support (needed for libstagefright)
 +- H.264 Decoding on Android via Stagefright
 +- Prores decoder
 +- BIN/XBIN/ADF/IDF text file decoder
 +- aconvert audio filter added
 +- audio support to lavfi input device added
  - libcdio-paranoia input device for audio CD grabbing
 -- select filter
  - Apple ProRes decoder
  - CELT in Ogg demuxing
 +- G.723.1 demuxer and decoder
 +- libmodplug support (--enable-libmodplug)
  - VC-1 interlaced decoding
 -- lut, lutrgb, and lutyuv filters
 -- boxblur filter
 +- libutvideo wrapper (--enable-libutvideo)
 +- aevalsrc audio source added
  - Ut Video decoder
  - Speex encoding via libspeex
  - 4:2:2 H.264 decoding support
  - 4:2:2 and 4:4:4 H.264 encoding with libx264
  - Pulseaudio input device
 +- Prores encoder
 +- Video Decoder Acceleration (VDA) HWAccel module.
  - replacement Indeo 3 decoder
 +- new ffmpeg option: -map_channel
 +- volume audio filter added
 +- earwax audio filter added
 +- libv4l2 support (--enable-libv4l2)
  - TLS/SSL and HTTPS protocol support
  - AVOptions API rewritten and documented
  - most of CODEC_FLAG2_*, some CODEC_FLAG_* and many codec-specific fields in
  - Discworld II BMV decoding support
  - VBLE Decoder
  - OS X Video Decoder Acceleration (VDA) support
 +- compact and csv output in ffprobe
 +- pan audio filter
 +- IFF Amiga Continuous Bitmap (ACBM) decoder
 +- ass filter
  - CRI ADX audio format muxer and demuxer
  - Playstation Portable PMP format demuxer
 +- Microsoft Windows ICO demuxer
 +- life source
  - PCM format support in OMA demuxer
  - CLJR encoder
 +- new option: -report
  - Dxtory capture format decoder
 -- v410 QuickTime uncompressed 4:4:4 10-bit encoder and decoder
 -- OpenMG Audio muxer
 +- cellauto source
  - Simple segmenting muxer
  - Indeo 4 decoder
  - SMJPEG demuxer
  
  
 -version 0.7:
 -
 -- E-AC-3 audio encoder
 -- ac3enc: add channel coupling support
 -- floating-point sample format support for (E-)AC-3, DCA, AAC, Vorbis decoders
 -- H.264/MPEG frame-level multithreading
 -- av_metadata_* functions renamed to av_dict_* and moved to libavutil
 -- 4:4:4 H.264 decoding support
 -- 10-bit H.264 optimizations for x86
 -- bump libswscale for recently reported ABI break
 -
 -
 -version 0.7_beta2:
 -
 -- VP8 frame-level multithreading
 -- NEON optimizations for VP8
 -- removed a lot of deprecated API cruft
 -- FFT and IMDCT optimizations for AVX (Sandy Bridge) processors
 -- DPX image encoder
 -- SMPTE 302M AES3 audio decoder
 -- ffmpeg no longer quits after the 'q' key is pressed; use 'ctrl+c' instead
 -- 9bit and 10bit per sample support in the H.264 decoder
 -
 -
 -version 0.7_beta1:
 +version 0.8:
  
 +- many many things we forgot because we rather write code than changelogs
  - WebM support in Matroska de/muxer
  - low overhead Ogg muxing
  - MMS-TCP support
  - Demuxer for On2's IVF format
  - Pictor/PC Paint decoder
  - HE-AAC v2 decoder
 +- HE-AAC v2 encoding with libaacplus
  - libfaad2 wrapper removed
  - DTS-ES extension (XCh) decoding support
  - native VP8 decoder
  - RTP depacketization of QDM2
  - ANSI/ASCII art playback system
  - Lego Mindstorms RSO de/muxer
 +- libavcore added (and subsequently removed)
  - SubRip subtitle file muxer and demuxer
  - Chinese AVS encoding via libxavs
  - ffprobe -show_packets option added
  - replace the ocv_smooth filter with a more generic ocv filter
  - Windows Televison (WTV) demuxer
  - FFmpeg metadata format muxer and demuxer
 -- SubRip (srt) subtitle decoder
 +- SubRip (srt) subtitle encoder and decoder
  - floating-point AC-3 encoder added
  - Lagarith decoder
  - ffmpeg -copytb option added
  - sndio support for playback and record
  - Linux framebuffer input device added
  - Chronomaster DFA decoder
 -- Mobotix MxPEG decoder
 +- DPX image encoder
 +- MicroDVD subtitle file muxer and demuxer
 +- Playstation Portable PMP format demuxer
 +- fieldorder video filter added
  - AAC encoding via libvo-aacenc
  - AMR-WB encoding via libvo-amrwbenc
  - xWMA demuxer
 -- fieldorder video filter added
 +- Mobotix MxPEG decoder
 +- VP8 frame-multithreading
 +- NEON optimizations for VP8
 +- Lots of deprecated API cruft removed
 +- fft and imdct optimizations for AVX (Sandy Bridge) processors
 +- showinfo filter added
 +- SMPTE 302M AES3 audio decoder
 +- Apple Core Audio Format muxer
 +- 9bit and 10bit per sample support in the H.264 decoder
 +- 9bit and 10bit FFV1 encoding / decoding
 +- split filter added
 +- select filter added
 +- sdl output device added
 +- libmpcodecs video filter support (3 times as many filters than before)
 +- mpeg2 aspect ratio dection fixed
 +- libxvid aspect pickiness fixed
 +- Frame multithreaded decoding
 +- E-AC-3 audio encoder
 +- ac3enc: add channel coupling support
 +- floating-point sample format support to the ac3, eac3, dca, aac, and vorbis decoders.
 +- H264/MPEG frame-level multi-threading
 +- All av_metadata_* functions renamed to av_dict_* and moved to libavutil
 +- 4:4:4 H.264 decoding support
 +- 10-bit H.264 optimizations for x86
 +- lut, lutrgb, and lutyuv filters added
 +- buffersink libavfilter sink added
 +- Bump libswscale for recently reported ABI break
 +- New J2K encoder (via OpenJPEG)
 +
 +
 +version 0.7:
 +
 +- all the changes for 0.8, but keeping API/ABI compatibility with the 0.6 release
  
  
  version 0.6:
@@@ -672,7 -540,6 +673,7 @@@ version 0.5
  - Gopher client support
  - MXF D-10 muxer
  - generic metadata API
 +- flash ScreenVideo2 encoder
  
  
  version 0.4.9-pre1:
@@@ -875,7 -742,7 +876,7 @@@ version 0.4.5
  - MPEG-4 vol header fixes (Jonathan Marsden <snmjbm at pacbell.net>)
  - ARM optimizations (Lionel Ulmer <lionel.ulmer at free.fr>).
  - Windows porting of file converter
 -- added MJPEG raw format (input/ouput)
 +- added MJPEG raw format (input/output)
  - added JPEG image format support (input/output)
  
  
diff --combined libavcodec/flacenc.c
@@@ -2,24 -2,23 +2,24 @@@
   * FLAC audio encoder
   * Copyright (c) 2006  Justin Ruggles <justin.ruggles@gmail.com>
   *
 - * 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.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * 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 Libav; if not, write to the Free Software
 + * 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/avassert.h"
  #include "libavutil/crc.h"
  #include "libavutil/intmath.h"
  #include "libavutil/md5.h"
@@@ -154,7 -153,7 +154,7 @@@ static int select_blocksize(int sampler
      int target;
      int blocksize;
  
 -    assert(samplerate > 0);
 +    av_assert0(samplerate > 0);
      blocksize = ff_flac_blocksize_table[1];
      target    = (samplerate * block_time_ms) / 1000;
      for (i = 0; i < 16; i++) {
@@@ -401,28 -400,6 +401,28 @@@ static av_cold int flac_encode_init(AVC
          return AVERROR(ENOMEM);
  #endif
  
 +    if (channels == 3 &&
 +            avctx->channel_layout != (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) ||
 +        channels == 4 &&
 +            avctx->channel_layout != AV_CH_LAYOUT_2_2 &&
 +            avctx->channel_layout != AV_CH_LAYOUT_QUAD ||
 +        channels == 5 &&
 +            avctx->channel_layout != AV_CH_LAYOUT_5POINT0 &&
 +            avctx->channel_layout != AV_CH_LAYOUT_5POINT0_BACK ||
 +        channels == 6 &&
 +            avctx->channel_layout != AV_CH_LAYOUT_5POINT1 &&
 +            avctx->channel_layout != AV_CH_LAYOUT_5POINT1_BACK) {
 +        if (avctx->channel_layout) {
 +            av_log(avctx, AV_LOG_ERROR, "Channel layout not supported by Flac, "
 +                                             "output stream will have incorrect "
 +                                             "channel layout.\n");
 +        } else {
 +            av_log(avctx, AV_LOG_WARNING, "No channel layout specified. The encoder "
 +                                               "will use Flac channel layout for "
 +                                               "%d channels.\n", channels);
 +        }
 +    }
 +
      ret = ff_lpc_init(&s->lpc_ctx, avctx->frame_size,
                        s->options.max_prediction_order, FF_LPC_TYPE_LEVINSON);
  
@@@ -645,9 -622,9 +645,9 @@@ static uint64_t calc_rice_params(RiceCo
      uint32_t *udata;
      uint64_t sums[MAX_PARTITION_ORDER+1][MAX_PARTITIONS];
  
 -    assert(pmin >= 0 && pmin <= MAX_PARTITION_ORDER);
 -    assert(pmax >= 0 && pmax <= MAX_PARTITION_ORDER);
 -    assert(pmin <= pmax);
 +    av_assert1(pmin >= 0 && pmin <= MAX_PARTITION_ORDER);
 +    av_assert1(pmax >= 0 && pmax <= MAX_PARTITION_ORDER);
 +    av_assert1(pmin <= pmax);
  
      tmp_rc.coding_mode = rc->coding_mode;
  
@@@ -822,14 -799,16 +822,16 @@@ static int encode_residual_ch(FlacEncod
          omethod == ORDER_METHOD_8LEVEL) {
          int levels = 1 << omethod;
          uint64_t bits[1 << ORDER_METHOD_8LEVEL];
-         int order;
+         int order       = -1;
          int opt_index   = levels-1;
          opt_order       = max_order-1;
          bits[opt_index] = UINT32_MAX;
          for (i = levels-1; i >= 0; i--) {
+             int last_order = order;
              order = min_order + (((max_order-min_order+1) * (i+1)) / levels)-1;
-             if (order < 0)
-                 order = 0;
+             order = av_clip(order, min_order - 1, max_order - 1);
+             if (order == last_order)
+                 continue;
              s->flac_dsp.lpc_encode(res, smp, n, order+1, coefs[order],
                                     shift[order]);
              bits[i] = find_subframe_rice_params(s, sub, order+1);
@@@ -1270,8 -1249,10 +1272,8 @@@ static int flac_encode_frame(AVCodecCon
          }
      }
  
 -    if ((ret = ff_alloc_packet(avpkt, frame_bytes))) {
 -        av_log(avctx, AV_LOG_ERROR, "Error getting output packet\n");
 +    if ((ret = ff_alloc_packet2(avctx, avpkt, frame_bytes)))
          return ret;
 -    }
  
      out_bytes = write_frame(s, avpkt);
  
@@@ -1352,7 -1333,7 +1354,7 @@@ AVCodec ff_flac_encoder = 
      .init           = flac_encode_init,
      .encode2        = flac_encode_frame,
      .close          = flac_encode_close,
 -    .capabilities   = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY,
 +    .capabilities   = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY | CODEC_CAP_LOSSLESS,
      .sample_fmts    = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16,
                                                       AV_SAMPLE_FMT_S32,
                                                       AV_SAMPLE_FMT_NONE },
@@@ -5,20 -5,20 +5,20 @@@
  ;* Copyright (c) 2010 Loren Merritt
  ;* Copyright (c) 2010 Ronald S. Bultje
  ;*
 -;* 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.
  ;*
 -;* Libav is distributed in the hope that it will be useful,
 +;* 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 Libav; if not, write to the Free Software
 +;* License along with FFmpeg; if not, write to the Free Software
  ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  ;******************************************************************************
  
@@@ -52,7 -52,8 +52,8 @@@ cextern pw_3
  ; void pred16x16_vertical(uint8_t *src, int stride)
  ;-----------------------------------------------------------------------------
  
- cglobal pred16x16_vertical_8_mmx, 2,3
+ INIT_MMX mmx
+ cglobal pred16x16_vertical_8, 2,3
      sub   r0, r1
      mov   r2, 8
      movq mm0, [r0+0]
@@@ -67,7 -68,8 +68,8 @@@
      jg .loop
      REP_RET
  
- cglobal pred16x16_vertical_8_sse, 2,3
+ INIT_XMM sse
+ cglobal pred16x16_vertical_8, 2,3
      sub   r0, r1
      mov   r2, 4
      movaps xmm0, [r0]
@@@ -122,7 -124,6 +124,6 @@@ INIT_MMX mmx
  PRED16x16_H
  INIT_XMM ssse3
  PRED16x16_H
- INIT_XMM
  
  ;-----------------------------------------------------------------------------
  ; void pred16x16_dc(uint8_t *src, int stride)
@@@ -185,13 -186,12 +186,12 @@@ INIT_XMM sse
  PRED16x16_DC
  INIT_XMM ssse3
  PRED16x16_DC
- INIT_XMM
  
  ;-----------------------------------------------------------------------------
  ; void pred16x16_tm_vp8(uint8_t *src, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED16x16_TM_MMX 0
+ %macro PRED16x16_TM 0
  cglobal pred16x16_tm_vp8_8, 2,5
      sub        r0, r1
      pxor      mm7, mm7
  %endmacro
  
  INIT_MMX mmx
- PRED16x16_TM_MMX
+ PRED16x16_TM
  INIT_MMX mmx2
- PRED16x16_TM_MMX
- INIT_MMX
+ PRED16x16_TM
  
- cglobal pred16x16_tm_vp8_8_sse2, 2,6,6
+ INIT_XMM sse2
+ cglobal pred16x16_tm_vp8_8, 2,6,6
      sub          r0, r1
      pxor       xmm2, xmm2
      movdqa     xmm0, [r0]
@@@ -548,7 -548,6 +548,6 @@@ INIT_XMM ssse
  H264_PRED16x16_PLANE h264
  H264_PRED16x16_PLANE rv40
  H264_PRED16x16_PLANE svq3
- INIT_XMM
  
  ;-----------------------------------------------------------------------------
  ; void pred8x8_plane(uint8_t *src, int stride)
@@@ -723,13 -722,13 +722,13 @@@ INIT_XMM sse
  H264_PRED8x8_PLANE
  INIT_XMM ssse3
  H264_PRED8x8_PLANE
- INIT_XMM
  
  ;-----------------------------------------------------------------------------
  ; void pred8x8_vertical(uint8_t *src, int stride)
  ;-----------------------------------------------------------------------------
  
- cglobal pred8x8_vertical_8_mmx, 2,2
+ INIT_MMX mmx
+ cglobal pred8x8_vertical_8, 2,2
      sub    r0, r1
      movq  mm0, [r0]
  %rep 3
@@@ -768,12 -767,12 +767,12 @@@ INIT_MMX mmx
  PRED8x8_H
  INIT_MMX ssse3
  PRED8x8_H
- INIT_MMX
  
  ;-----------------------------------------------------------------------------
  ; void pred8x8_top_dc_mmxext(uint8_t *src, int stride)
  ;-----------------------------------------------------------------------------
- cglobal pred8x8_top_dc_8_mmxext, 2,5
+ INIT_MMX mmxext
+ cglobal pred8x8_top_dc_8, 2,5
      sub         r0, r1
      movq       mm0, [r0]
      pxor       mm1, mm1
  ; void pred8x8_dc_mmxext(uint8_t *src, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
- cglobal pred8x8_dc_8_mmxext, 2,5
+ INIT_MMX mmxext
+ cglobal pred8x8_dc_8, 2,5
      sub       r0, r1
      pxor      m7, m7
      movd      m0, [r0+0]
  ; void pred8x8_dc_rv40(uint8_t *src, int stride)
  ;-----------------------------------------------------------------------------
  
- cglobal pred8x8_dc_rv40_8_mmxext, 2,7
+ INIT_MMX mmxext
+ cglobal pred8x8_dc_rv40_8, 2,7
      mov       r4, r0
      sub       r0, r1
      pxor      mm0, mm0
  ; void pred8x8_tm_vp8(uint8_t *src, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED8x8_TM_MMX 0
+ %macro PRED8x8_TM 0
  cglobal pred8x8_tm_vp8_8, 2,6
      sub        r0, r1
      pxor      mm7, mm7
  %endmacro
  
  INIT_MMX mmx
- PRED8x8_TM_MMX
+ PRED8x8_TM
  INIT_MMX mmx2
- PRED8x8_TM_MMX
- INIT_MMX
+ PRED8x8_TM
  
- cglobal pred8x8_tm_vp8_8_sse2, 2,6,4
+ INIT_XMM sse2
+ cglobal pred8x8_tm_vp8_8, 2,6,4
      sub          r0, r1
      pxor       xmm1, xmm1
      movq       xmm0, [r0]
      jg .loop
      REP_RET
  
- cglobal pred8x8_tm_vp8_8_ssse3, 2,3,6
+ INIT_XMM ssse3
+ cglobal pred8x8_tm_vp8_8, 2,3,6
      sub          r0, r1
      movdqa     xmm4, [tm_shuf]
      pxor       xmm1, xmm1
  ;-----------------------------------------------------------------------------
  ; void pred8x8l_top_dc(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
- %macro PRED8x8L_TOP_DC 1
- cglobal pred8x8l_top_dc_8_%1, 4,4
+ %macro PRED8x8L_TOP_DC 0
+ cglobal pred8x8l_top_dc_8, 4,4
      sub          r0, r3
      pxor        mm7, mm7
      movq        mm0, [r0-8]
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_TOP_DC mmxext
+ PRED8x8L_TOP_DC
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_TOP_DC ssse3
+ PRED8x8L_TOP_DC
  
  ;-----------------------------------------------------------------------------
  ;void pred8x8l_dc(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED8x8L_DC 1
- cglobal pred8x8l_dc_8_%1, 4,5
+ %macro PRED8x8L_DC 0
+ cglobal pred8x8l_dc_8, 4,5
      sub          r0, r3
      lea          r4, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      movq [r4+r3*2], mm0
      RET
  %endmacro
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_DC mmxext
+ PRED8x8L_DC
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_DC ssse3
+ PRED8x8L_DC
  
  ;-----------------------------------------------------------------------------
  ; void pred8x8l_horizontal(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED8x8L_HORIZONTAL 1
- cglobal pred8x8l_horizontal_8_%1, 4,4
+ %macro PRED8x8L_HORIZONTAL 0
+ cglobal pred8x8l_horizontal_8, 4,4
      sub          r0, r3
      lea          r2, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_HORIZONTAL mmxext
+ PRED8x8L_HORIZONTAL
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_HORIZONTAL ssse3
+ PRED8x8L_HORIZONTAL
  
  ;-----------------------------------------------------------------------------
  ; void pred8x8l_vertical(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED8x8L_VERTICAL 1
- cglobal pred8x8l_vertical_8_%1, 4,4
+ %macro PRED8x8L_VERTICAL 0
+ cglobal pred8x8l_vertical_8, 4,4
      sub          r0, r3
      movq        mm0, [r0-8]
      movq        mm3, [r0]
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_VERTICAL mmxext
+ PRED8x8L_VERTICAL
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_VERTICAL ssse3
+ PRED8x8L_VERTICAL
  
  ;-----------------------------------------------------------------------------
  ;void pred8x8l_down_left(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- cglobal pred8x8l_down_left_8_mmxext, 4,5
+ cglobal pred8x8l_down_left_8, 4,5
      sub          r0, r3
      movq        mm0, [r0-8]
      movq        mm3, [r0]
      movq  [r0+r3*1], mm1
      RET
  
- %macro PRED8x8L_DOWN_LEFT 1
- cglobal pred8x8l_down_left_8_%1, 4,4
+ %macro PRED8x8L_DOWN_LEFT 0
+ cglobal pred8x8l_down_left_8, 4,4
      sub          r0, r3
      movq        mm0, [r0-8]
      movq        mm3, [r0]
      lea         r2, [r1+r3*2]
      movdqa    xmm1, xmm3
      pslldq    xmm1, 1
- INIT_XMM
+ INIT_XMM cpuname
      PRED4x4_LOWPASS xmm0, xmm1, xmm2, xmm3, xmm4
      psrldq    xmm0, 1
      movq [r0+r3*1], xmm0
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX sse2
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_DOWN_LEFT sse2
- INIT_MMX
+ PRED8x8L_DOWN_LEFT
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_DOWN_LEFT ssse3
+ PRED8x8L_DOWN_LEFT
  
  ;-----------------------------------------------------------------------------
  ;void pred8x8l_down_right_mmxext(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- cglobal pred8x8l_down_right_8_mmxext, 4,5
+ cglobal pred8x8l_down_right_8, 4,5
      sub          r0, r3
      lea          r4, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      movq [r0+r3*1], mm0
      RET
  
- %macro PRED8x8L_DOWN_RIGHT 1
- cglobal pred8x8l_down_right_8_%1, 4,5
+ %macro PRED8x8L_DOWN_RIGHT 0
+ cglobal pred8x8l_down_right_8, 4,5
      sub          r0, r3
      lea          r4, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      lea         r0, [r2+r3*2]
      movdqa    xmm2, xmm3
      psrldq    xmm2, 1
- INIT_XMM
+ INIT_XMM cpuname
      PRED4x4_LOWPASS xmm0, xmm1, xmm2, xmm3, xmm4
      movdqa    xmm1, xmm0
      psrldq    xmm1, 1
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX sse2
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_DOWN_RIGHT sse2
- INIT_MMX
+ PRED8x8L_DOWN_RIGHT
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_DOWN_RIGHT ssse3
+ PRED8x8L_DOWN_RIGHT
  
  ;-----------------------------------------------------------------------------
  ; void pred8x8l_vertical_right(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- cglobal pred8x8l_vertical_right_8_mmxext, 4,5
+ cglobal pred8x8l_vertical_right_8, 4,5
      sub          r0, r3
      lea          r4, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      movq [r4+r3*2], mm5
      RET
  
- %macro PRED8x8L_VERTICAL_RIGHT 1
- cglobal pred8x8l_vertical_right_8_%1, 4,5,7
+ %macro PRED8x8L_VERTICAL_RIGHT 0
+ cglobal pred8x8l_vertical_right_8, 4,5,7
      ; manually spill XMM registers for Win64 because
      ; the code here is initialized with INIT_MMX
      WIN64_SPILL_XMM 7
      pslldq      xmm0, 1
      pslldq      xmm1, 2
      pavgb       xmm2, xmm0
- INIT_XMM
+ INIT_XMM cpuname
      PRED4x4_LOWPASS xmm4, xmm3, xmm1, xmm0, xmm5
      pandn       xmm6, xmm4
      movdqa      xmm5, xmm4
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX sse2
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_VERTICAL_RIGHT sse2
- INIT_MMX
+ PRED8x8L_VERTICAL_RIGHT
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_VERTICAL_RIGHT ssse3
+ PRED8x8L_VERTICAL_RIGHT
  
  ;-----------------------------------------------------------------------------
  ;void pred8x8l_vertical_left(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED8x8L_VERTICAL_LEFT 1
- cglobal pred8x8l_vertical_left_8_%1, 4,4
+ %macro PRED8x8L_VERTICAL_LEFT 0
+ cglobal pred8x8l_vertical_left_8, 4,4
      sub          r0, r3
      movq        mm0, [r0-8]
      movq        mm3, [r0]
      pslldq    xmm1, 1
      pavgb     xmm3, xmm2
      lea         r2, [r1+r3*2]
- INIT_XMM
+ INIT_XMM cpuname
      PRED4x4_LOWPASS xmm0, xmm1, xmm2, xmm4, xmm5
      psrldq    xmm0, 1
      movq [r0+r3*1], xmm3
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX sse2
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_VERTICAL_LEFT sse2
+ PRED8x8L_VERTICAL_LEFT
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- INIT_MMX
- PRED8x8L_VERTICAL_LEFT ssse3
+ PRED8x8L_VERTICAL_LEFT
  
  ;-----------------------------------------------------------------------------
  ; void pred8x8l_horizontal_up(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED8x8L_HORIZONTAL_UP 1
- cglobal pred8x8l_horizontal_up_8_%1, 4,4
+ %macro PRED8x8L_HORIZONTAL_UP 0
+ cglobal pred8x8l_horizontal_up_8, 4,4
      sub          r0, r3
      lea          r2, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_HORIZONTAL_UP mmxext
+ PRED8x8L_HORIZONTAL_UP
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_HORIZONTAL_UP ssse3
+ PRED8x8L_HORIZONTAL_UP
  
  ;-----------------------------------------------------------------------------
  ;void pred8x8l_horizontal_down(uint8_t *src, int has_topleft, int has_topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- cglobal pred8x8l_horizontal_down_8_mmxext, 4,5
+ cglobal pred8x8l_horizontal_down_8, 4,5
      sub          r0, r3
      lea          r4, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      movq [r0+r3*1], mm3
      RET
  
- %macro PRED8x8L_HORIZONTAL_DOWN 1
- cglobal pred8x8l_horizontal_down_8_%1, 4,5
+ %macro PRED8x8L_HORIZONTAL_DOWN 0
+ cglobal pred8x8l_horizontal_down_8, 4,5
      sub          r0, r3
      lea          r4, [r0+r3*2]
      movq        mm0, [r0+r3*1-8]
      movq2dq    xmm5, mm1
      pslldq     xmm5, 8
      por        xmm1, xmm5
- INIT_XMM
+ INIT_XMM cpuname
      lea         r2, [r4+r3*2]
      movdqa    xmm2, xmm1
      movdqa    xmm3, xmm1
      RET
  %endmacro
  
- INIT_MMX
+ INIT_MMX sse2
  %define PALIGNR PALIGNR_MMX
- PRED8x8L_HORIZONTAL_DOWN sse2
- INIT_MMX
+ PRED8x8L_HORIZONTAL_DOWN
+ INIT_MMX ssse3
  %define PALIGNR PALIGNR_SSSE3
- PRED8x8L_HORIZONTAL_DOWN ssse3
+ PRED8x8L_HORIZONTAL_DOWN
  
  ;-----------------------------------------------------------------------------
  ; void pred4x4_dc_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- cglobal pred4x4_dc_8_mmxext, 3,5
+ INIT_MMX mmxext
+ cglobal pred4x4_dc_8, 3,5
      pxor   mm7, mm7
      mov     r4, r0
      sub     r0, r2
  ; void pred4x4_tm_vp8_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- %macro PRED4x4_TM_MMX 0
+ %macro PRED4x4_TM 0
  cglobal pred4x4_tm_vp8_8, 3,6
      sub        r0, r2
      pxor      mm7, mm7
  %endmacro
  
  INIT_MMX mmx
- PRED4x4_TM_MMX
+ PRED4x4_TM
  INIT_MMX mmx2
- PRED4x4_TM_MMX
- INIT_MMX
+ PRED4x4_TM
  
- cglobal pred4x4_tm_vp8_8_ssse3, 3,3
+ INIT_XMM ssse3
+ cglobal pred4x4_tm_vp8_8, 3,3
      sub         r0, r2
      movq       mm6, [tm_shuf]
      pxor       mm1, mm1
  ; void pred4x4_vertical_vp8_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
- cglobal pred4x4_vertical_vp8_8_mmxext, 3,3
+ INIT_MMX mmxext
+ cglobal pred4x4_vertical_vp8_8, 3,3
      sub       r0, r2
      movd      m1, [r0-1]
      movd      m0, [r0]
  ;-----------------------------------------------------------------------------
  ; void pred4x4_down_left_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
- INIT_MMX
- cglobal pred4x4_down_left_8_mmxext, 3,3
+ INIT_MMX mmxext
+ cglobal pred4x4_down_left_8, 3,3
      sub       r0, r2
      movq      m1, [r0]
      punpckldq m1, [r1]
  ; void pred4x4_vertical_left_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
- cglobal pred4x4_vertical_left_8_mmxext, 3,3
+ INIT_MMX mmxext
+ cglobal pred4x4_vertical_left_8, 3,3
      sub       r0, r2
      movq      m1, [r0]
      punpckldq m1, [r1]
  ; void pred4x4_horizontal_up_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
- cglobal pred4x4_horizontal_up_8_mmxext, 3,3
+ INIT_MMX mmxext
+ cglobal pred4x4_horizontal_up_8, 3,3
      sub       r0, r2
      lea       r1, [r0+r2*2]
      movd      m0, [r0+r2*1-4]
  ; void pred4x4_horizontal_down_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- cglobal pred4x4_horizontal_down_8_mmxext, 3,3
+ cglobal pred4x4_horizontal_down_8, 3,3
      sub       r0, r2
      lea       r1, [r0+r2*2]
      movh      m0, [r0-4]      ; lt ..
  ; void pred4x4_vertical_right_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- cglobal pred4x4_vertical_right_8_mmxext, 3,3
+ cglobal pred4x4_vertical_right_8, 3,3
      sub     r0, r2
      lea     r1, [r0+r2*2]
      movh    m0, [r0]                    ; ........t3t2t1t0
  ; void pred4x4_down_right_mmxext(uint8_t *src, const uint8_t *topright, int stride)
  ;-----------------------------------------------------------------------------
  
- INIT_MMX
+ INIT_MMX mmxext
  %define PALIGNR PALIGNR_MMX
- cglobal pred4x4_down_right_8_mmxext, 3,3
+ cglobal pred4x4_down_right_8, 3,3
      sub       r0, r2
      lea       r1, [r0+r2*2]
      movq      m1, [r1-8]
diff --combined libavformat/rtpenc_aac.c
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * copyright (c) 2007 Luca Abeni
   *
 - * 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.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * 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 Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -47,7 -47,7 +47,7 @@@ void ff_rtp_send_aac(AVFormatContext *s
              memmove(p + 2, s->buf + 2, au_size);
          }
          /* Write the AU header size */
-         p[0] = au_size >> 5;
+         p[0] =  au_size >> 5;
          p[1] = (au_size & 0x1F) << 3;
  
          ff_rtp_send_data(s1, p, s->buf_ptr - p, 1);