Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 31 Jul 2012 20:41:00 +0000 (22:41 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 31 Jul 2012 20:41:00 +0000 (22:41 +0200)
* qatar/master:
  mpc8: return more meaningful error codes.
  mpc: return more meaningful error codes.
  wv,mpc8: don't return apetag data in packets.
  rtmp: do not warn about receiving metadata packets
  x86: h264dsp: Adjust YASM #ifdefs
  x86: yadif: Mark mmxext optimizations as such
  h264: convert loop filter strength dsp function to yasm.
  Improve descriptiveness of a number of codec and container long names

Conflicts:
libavcodec/flvdec.c
libavcodec/libopenjpegdec.c
libavformat/apetag.c
libavformat/mp3dec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
64 files changed:
1  2 
libavcodec/aacdec.c
libavcodec/aacenc.c
libavcodec/amrnbdec.c
libavcodec/amrwbdec.c
libavcodec/assdec.c
libavcodec/assenc.c
libavcodec/bmp.c
libavcodec/bmpenc.c
libavcodec/cavsdec.c
libavcodec/cook.c
libavcodec/flvdec.c
libavcodec/flvenc.c
libavcodec/libfaac.c
libavcodec/libilbc.c
libavcodec/libopencore-amr.c
libavcodec/libvo-aacenc.c
libavcodec/libvo-amrwbenc.c
libavcodec/libxavs.c
libavcodec/tta.c
libavcodec/x86/h264_deblock.asm
libavcodec/x86/h264dsp_mmx.c
libavdevice/oss_audio.c
libavfilter/x86/yadif.c
libavformat/aacdec.c
libavformat/adtsenc.c
libavformat/apetag.c
libavformat/apetag.h
libavformat/asfdec.c
libavformat/asfenc.c
libavformat/assdec.c
libavformat/assenc.c
libavformat/au.c
libavformat/avidec.c
libavformat/avienc.c
libavformat/cafdec.c
libavformat/cavsvideodec.c
libavformat/dv.c
libavformat/dvenc.c
libavformat/flvdec.c
libavformat/flvenc.c
libavformat/gxf.c
libavformat/gxfenc.c
libavformat/iff.c
libavformat/iv8.c
libavformat/mov.c
libavformat/movenc.c
libavformat/mp3dec.c
libavformat/mp3enc.c
libavformat/mpc.c
libavformat/mpc8.c
libavformat/mpeg.c
libavformat/mpegenc.c
libavformat/mpegts.c
libavformat/mpegtsenc.c
libavformat/mxfdec.c
libavformat/mxfenc.c
libavformat/rawenc.c
libavformat/rtmpproto.c
libavformat/segment.c
libavformat/swfdec.c
libavformat/swfenc.c
libavformat/tta.c
libavformat/wav.c
libavformat/wv.c

Simple merge
Simple merge
Simple merge
Simple merge
@@@ -59,16 -52,9 +59,16 @@@ static int ass_decode_frame(AVCodecCont
      return avpkt->size;
  }
  
 +static int ass_decode_close(AVCodecContext *avctx)
 +{
 +    ff_ass_split_free(avctx->priv_data);
 +    avctx->priv_data = NULL;
 +    return 0;
 +}
 +
  AVCodec ff_ass_decoder = {
      .name         = "ass",
-     .long_name    = NULL_IF_CONFIG_SMALL("Advanced SubStation Alpha subtitle"),
+     .long_name    = NULL_IF_CONFIG_SMALL("SSA (SubStation Alpha) subtitle"),
      .type         = AVMEDIA_TYPE_SUBTITLE,
      .id           = CODEC_ID_SSA,
      .init         = ass_decode_init,
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -127,7 -127,6 +127,7 @@@ AVCodec ff_flv_decoder = 
      .close          = ff_h263_decode_end,
      .decode         = ff_h263_decode_frame,
      .capabilities   = CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1,
-     .long_name      = NULL_IF_CONFIG_SMALL("Flash Video (FLV) / Sorenson Spark / Sorenson H.263"),
 +    .max_lowres     = 3,
+     .long_name      = NULL_IF_CONFIG_SMALL("FLV / Sorenson Spark / Sorenson H.263 (Flash Video)"),
      .pix_fmts       = ff_pixfmt_list_420,
  };
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
  ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  ;******************************************************************************
  
 -%include "x86inc.asm"
 -%include "x86util.asm"
 +%include "libavutil/x86/x86inc.asm"
 +%include "libavutil/x86/x86util.asm"
  
+ SECTION_RODATA
+ pb_3_1: times 4 db 3, 1
  SECTION .text
  
  cextern pb_0
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -125,8 -128,8 +126,8 @@@ int64_t ff_ape_parse_tag(AVFormatContex
      avio_seek(pb, file_size - APE_TAG_FOOTER_BYTES, SEEK_SET);
  
      avio_read(pb, buf, 8);     /* APETAGEX */
 -    if (strncmp(buf, "APETAGEX", 8)) {
 +    if (strncmp(buf, APE_TAG_PREAMBLE, 8)) {
-         return;
+         return 0;
      }
  
      val = avio_rl32(pb);       /* APE tag version */
  
  #include "avformat.h"
  
 +#define APE_TAG_PREAMBLE        "APETAGEX"
 +#define APE_TAG_VERSION         2000
 +#define APE_TAG_FOOTER_BYTES    32
 +
  /**
   * Read and parse an APE tag
+  *
+  * @return offset of the tag start in the file
   */
void ff_ape_parse_tag(AVFormatContext *s);
int64_t ff_ape_parse_tag(AVFormatContext *s);
  
 +/**
 + * Write an APEv2 tag
 + */
 +void ff_ape_write(AVFormatContext *s);
 +
  #endif /* AVFORMAT_APETAG_H */
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
@@@ -3176,24 -2890,9 +3176,24 @@@ static int mov_read_seek(AVFormatContex
      return 0;
  }
  
 +static const AVOption options[] = {
 +    {"use_absolute_path",
 +        "allow using absolute path when opening alias, this is a possible security issue",
 +        offsetof(MOVContext, use_absolute_path), FF_OPT_TYPE_INT, {.dbl = 0},
 +        0, 1, AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM},
 +    {NULL}
 +};
 +
 +static const AVClass class = {
 +    .class_name = "mov,mp4,m4a,3gp,3g2,mj2",
 +    .item_name  = av_default_item_name,
 +    .option     = options,
 +    .version    = LIBAVUTIL_VERSION_INT,
 +};
 +
  AVInputFormat ff_mov_demuxer = {
      .name           = "mov,mp4,m4a,3gp,3g2,mj2",
-     .long_name      = NULL_IF_CONFIG_SMALL("QuickTime/MPEG-4/Motion JPEG 2000 format"),
+     .long_name      = NULL_IF_CONFIG_SMALL("QuickTime / MOV"),
      .priv_data_size = sizeof(MOVContext),
      .read_probe     = mov_probe,
      .read_header    = mov_read_header,
Simple merge
@@@ -222,20 -203,9 +222,20 @@@ static int mp3_read_packet(AVFormatCont
      return ret;
  }
  
 +static int read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
 +{
 +    MP3Context *mp3 = s->priv_data;
 +    AVStream *st = s->streams[stream_index];
 +
 +    st->skip_samples = timestamp <= 0 ? mp3->start_pad + 528 + 1 : 0;
 +
 +    return -1;
 +}
 +
  AVInputFormat ff_mp3_demuxer = {
      .name           = "mp3",
-     .long_name      = NULL_IF_CONFIG_SMALL("MPEG audio layer 2/3"),
+     .long_name      = NULL_IF_CONFIG_SMALL("MP2/3 (MPEG audio layer 2/3)"),
 +    .priv_data_size = sizeof(MP3Context),
      .read_probe     = mp3_read_probe,
      .read_header    = mp3_read_header,
      .read_packet    = mp3_read_packet,
@@@ -491,23 -307,9 +491,23 @@@ static int mp3_write_header(struct AVFo
      return 0;
  }
  
 +static int mp3_write_trailer(AVFormatContext *s)
 +{
 +    MP3Context  *mp3 = s->priv_data;
 +    int ret=mp2_write_trailer(s);
 +
 +    if (ret < 0)
 +        return ret;
 +
 +    if (mp3->frames_offset)
 +        mp3_fix_xing(s);
 +
 +    return 0;
 +}
 +
  AVOutputFormat ff_mp3_muxer = {
      .name              = "mp3",
-     .long_name         = NULL_IF_CONFIG_SMALL("MPEG audio layer 3"),
+     .long_name         = NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
      .mime_type         = "audio/x-mpeg",
      .extensions        = "mp3",
      .priv_data_size    = sizeof(MP3Context),
Simple merge
@@@ -200,10 -202,10 +202,10 @@@ static int mpc8_read_header(AVFormatCon
      c->header_pos = avio_tell(pb);
      if(avio_rl32(pb) != TAG_MPCK){
          av_log(s, AV_LOG_ERROR, "Not a Musepack8 file\n");
-         return -1;
+         return AVERROR_INVALIDDATA;
      }
  
 -    while(!pb->eof_reached){
 +    while(!url_feof(pb)){
          pos = avio_tell(pb);
          mpc8_get_chunk_header(pb, &tag, &size);
          if(tag == TAG_STREAMHDR)
@@@ -258,8 -258,13 +260,13 @@@ static int mpc8_read_packet(AVFormatCon
      int tag;
      int64_t pos, size;
  
 -    while(!s->pb->eof_reached){
 +    while(!url_feof(s->pb)){
          pos = avio_tell(s->pb);
+         /* don't return bogus packets with the ape tag data */
+         if (c->apetag_start && pos >= c->apetag_start)
+             return AVERROR_EOF;
          mpc8_get_chunk_header(s->pb, &tag, &size);
          if (size < 0)
              return -1;
Simple merge
Simple merge
Simple merge
@@@ -1225,9 -1162,9 +1225,9 @@@ static int mpegts_write_end(AVFormatCon
  
  AVOutputFormat ff_mpegts_muxer = {
      .name              = "mpegts",
-     .long_name         = NULL_IF_CONFIG_SMALL("MPEG-2 transport stream format"),
+     .long_name         = NULL_IF_CONFIG_SMALL("MPEG-TS (MPEG-2 Transport Stream)"),
      .mime_type         = "video/x-mpegts",
 -    .extensions        = "ts,m2t",
 +    .extensions        = "ts,m2t,m2ts,mts",
      .priv_data_size    = sizeof(MpegTSWrite),
      .audio_codec       = CODEC_ID_MP2,
      .video_codec       = CODEC_ID_MPEG2VIDEO,
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -383,9 -261,10 +383,9 @@@ static const AVClass seg_class = 
      .version    = LIBAVUTIL_VERSION_INT,
  };
  
 -
  AVOutputFormat ff_segment_muxer = {
      .name           = "segment",
-     .long_name      = NULL_IF_CONFIG_SMALL("segment muxer"),
+     .long_name      = NULL_IF_CONFIG_SMALL("segment"),
      .priv_data_size = sizeof(SegmentContext),
      .flags          = AVFMT_GLOBALHEADER | AVFMT_NOFILE,
      .write_header   = seg_write_header,
@@@ -262,21 -209,9 +262,21 @@@ static int swf_read_packet(AVFormatCont
      }
  }
  
 +#if CONFIG_ZLIB
 +static av_cold int swf_read_close(AVFormatContext *avctx)
 +{
 +    SWFContext *s = avctx->priv_data;
 +    inflateEnd(&s->zstream);
 +    av_freep(&s->zbuf_in);
 +    av_freep(&s->zbuf_out);
 +    av_freep(&s->zpb);
 +    return 0;
 +}
 +#endif
 +
  AVInputFormat ff_swf_demuxer = {
      .name           = "swf",
-     .long_name      = NULL_IF_CONFIG_SMALL("Flash format"),
+     .long_name      = NULL_IF_CONFIG_SMALL("SWF (ShockWave Flash)"),
      .priv_data_size = sizeof(SWFContext),
      .read_probe     = swf_probe,
      .read_header    = swf_read_header,
Simple merge
Simple merge
@@@ -684,22 -586,9 +684,22 @@@ static int wav_read_seek(AVFormatContex
      return ff_pcm_read_seek(s, stream_index, timestamp, flags);
  }
  
 +#define OFFSET(x) offsetof(WAVContext, x)
 +#define DEC AV_OPT_FLAG_DECODING_PARAM
 +static const AVOption demux_options[] = {
 +    { "ignore_length", "Ignore length", OFFSET(ignore_length), AV_OPT_TYPE_INT, { 0 }, 0, 1, DEC },
 +    { NULL },
 +};
 +
 +static const AVClass wav_demuxer_class = {
 +    .class_name = "WAV demuxer",
 +    .item_name  = av_default_item_name,
 +    .option     = demux_options,
 +    .version    = LIBAVUTIL_VERSION_INT,
 +};
  AVInputFormat ff_wav_demuxer = {
      .name           = "wav",
-     .long_name      = NULL_IF_CONFIG_SMALL("WAV format"),
+     .long_name      = NULL_IF_CONFIG_SMALL("WAV / WAVE (Waveform Audio)"),
      .priv_data_size = sizeof(WAVContext),
      .read_probe     = wav_probe,
      .read_header    = wav_read_header,
Simple merge