]> git.sesse.net Git - vlc/commitdiff
Contribs: update VPX support
authorJean-Baptiste Kempf <jb@videolan.org>
Mon, 24 May 2010 21:56:40 +0000 (23:56 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Mon, 24 May 2010 21:56:40 +0000 (23:56 +0200)
extras/contrib/src/Makefile
extras/contrib/src/Patches/ffmpeg-libvpx.patch

index b8e44916aa4c6691e3f084f3d1ff1ff1090543e9..70b093ac24c9e913d8a684785ba40db6a9ce5fed 100644 (file)
@@ -1115,7 +1115,7 @@ ifdef HAVE_WIN64
 FFMPEGCONF += --disable-bzlib --disable-decoder=dca --disable-encoder=vorbis --enable-libmp3lame --enable-w32threads --disable-dxva2 --disable-bsfs 
 else
 ifdef HAVE_WIN32
-FFMPEGCONF += --disable-bzlib --disable-decoder=dca --disable-encoder=vorbis --enable-libmp3lame --enable-w32threads --enable-dxva2 --disable-bsfs
+FFMPEGCONF += --disable-bzlib --disable-decoder=dca --disable-encoder=vorbis --enable-libmp3lame --enable-w32threads --enable-dxva2 --disable-bsfs --enable-libvpx
 else
 FFMPEGCONF += --enable-pthreads
 endif
index 5791dab3203489d527ee3bb7c608fec33c43cce3..df84efb37ff28575b1467c5781e932b7b1b1fbf2 100644 (file)
@@ -1033,10 +1033,33 @@ Index: ffpresets/libvpx-720p.ffpreset
 +altref=1
 +maxrate=24M
 +minrate=100k
-Index: libavformat/matroskaenc.c
+Index: libavformat/Makefile
+===================================================================
+--- libavformat/Makefile       (revision 23210)
++++ libavformat/Makefile       (working copy)
+@@ -255,6 +255,8 @@ OBJS-$(CONFIG_W64_DEMUXER)              
+ OBJS-$(CONFIG_WAV_DEMUXER)               += wav.o riff.o raw.o
+ OBJS-$(CONFIG_WAV_MUXER)                 += wav.o riff.o
+ OBJS-$(CONFIG_WC3_DEMUXER)               += wc3movie.o
++OBJS-$(CONFIG_WEBM_MUXER)                += matroskaenc.o matroska.o \
++                                            riff.o
+ OBJS-$(CONFIG_WSAUD_DEMUXER)             += westwood.o
+ OBJS-$(CONFIG_WSVQA_DEMUXER)             += westwood.o
+ OBJS-$(CONFIG_WV_DEMUXER)                += wv.o apetag.o id3v1.o
+Index: libavformat/allformats.c
 ===================================================================
---- libavformat/matroskaenc.c  (revision 23210)
-+++ libavformat/matroskaenc.c  (working copy)
+--- libavformat/allformats.c   (revision 23210)
++++ libavformat/allformats.c   (working copy)
+@@ -203,6 +203,7 @@ void av_register_all(void)
+     REGISTER_DEMUXER  (W64, w64);
+     REGISTER_MUXDEMUX (WAV, wav);
+     REGISTER_DEMUXER  (WC3, wc3);
++    REGISTER_MUXER    (WEBM, webm);
+     REGISTER_DEMUXER  (WSAUD, wsaud);
+     REGISTER_DEMUXER  (WSVQA, wsvqa);
+     REGISTER_DEMUXER  (WV, wv);
+--- libavformat/matroskaenc.c.orig     2010-05-24 23:47:39.000000000 +0200
++++ libavformat/matroskaenc.c  2010-05-24 23:49:11.000000000 +0200
 @@ -20,15 +20,21 @@
   */
  
@@ -1059,7 +1082,7 @@ Index: libavformat/matroskaenc.c
  
  typedef struct ebml_master {
      int64_t         pos;                ///< absolute offset in the file where the master's elements start
-@@ -81,6 +87,12 @@ typedef struct MatroskaMuxContext {
+@@ -81,6 +87,12 @@
      mkv_track       *tracks;
  
      struct AVMD5    *md5_ctx;
@@ -1072,7 +1095,7 @@ Index: libavformat/matroskaenc.c
  } MatroskaMuxContext;
  
  
-@@ -429,6 +441,7 @@ static int put_xiph_codecpriv(AVFormatCo
+@@ -429,6 +441,7 @@
      return 0;
  }
  
@@ -1080,7 +1103,7 @@ Index: libavformat/matroskaenc.c
  static void get_aac_sample_rates(AVFormatContext *s, AVCodecContext *codec, int *sample_rate, int *output_sample_rate)
  {
      int sri;
-@@ -455,6 +468,7 @@ static void get_aac_sample_rates(AVForma
+@@ -455,6 +468,7 @@
          *output_sample_rate = ff_mpeg4audio_sample_rates[sri];
      }
  }
@@ -1088,7 +1111,7 @@ Index: libavformat/matroskaenc.c
  
  static int mkv_write_codecprivate(AVFormatContext *s, ByteIOContext *pb, AVCodecContext *codec, int native_id, int qt_id)
  {
-@@ -469,12 +483,15 @@ static int mkv_write_codecprivate(AVForm
+@@ -469,12 +483,15 @@
      if (native_id) {
          if (codec->codec_id == CODEC_ID_VORBIS || codec->codec_id == CODEC_ID_THEORA)
              ret = put_xiph_codecpriv(s, dyn_cp, codec);
@@ -1104,7 +1127,7 @@ Index: libavformat/matroskaenc.c
      } else if (codec->codec_type == AVMEDIA_TYPE_VIDEO) {
          if (qt_id) {
              if (!codec->codec_tag)
-@@ -503,6 +520,7 @@ static int mkv_write_codecprivate(AVForm
+@@ -503,6 +520,7 @@
              codec->codec_tag = tag;
  
          ff_put_wav_header(dyn_cp, codec);
@@ -1112,7 +1135,7 @@ Index: libavformat/matroskaenc.c
      }
  
      codecpriv_size = url_close_dyn_buf(dyn_cp, &codecpriv);
-@@ -537,8 +555,10 @@ static int mkv_write_tracks(AVFormatCont
+@@ -537,8 +555,10 @@
          if (!bit_depth)
              bit_depth = av_get_bits_per_sample_format(codec->sample_fmt);
  
@@ -1123,7 +1146,7 @@ Index: libavformat/matroskaenc.c
  
          track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY, 0);
          put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER     , i + 1);
-@@ -566,8 +586,16 @@ static int mkv_write_tracks(AVFormatCont
+@@ -565,9 +585,18 @@
  
          switch (codec->codec_type) {
              case AVMEDIA_TYPE_VIDEO:
@@ -1134,13 +1157,15 @@ Index: libavformat/matroskaenc.c
 +                    return -1;
 +                }
 +#endif
++
                  put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_VIDEO);
+                 put_ebml_uint(pb, MATROSKA_ID_TRACKDEFAULTDURATION, av_q2d(codec->time_base)*1E9);
  
 +#if CONFIG_MATROSKA_MUXER
                  if (!native_id &&
                        ff_codec_get_tag(codec_movvideo_tags, codec->codec_id) &&
                      (!ff_codec_get_tag(ff_codec_bmp_tags,   codec->codec_id)
-@@ -583,7 +611,7 @@ static int mkv_write_tracks(AVFormatCont
+@@ -583,7 +612,7 @@
                      put_ebml_string(pb, MATROSKA_ID_CODECID, "V_MS/VFW/FOURCC");
                      mkv->tracks[i].write_dts = 1;
                  }
@@ -1149,7 +1174,7 @@ Index: libavformat/matroskaenc.c
                  subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKVIDEO, 0);
                  // XXX: interlace flag?
                  put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELWIDTH , codec->width);
-@@ -597,6 +625,13 @@ static int mkv_write_tracks(AVFormatCont
+@@ -597,6 +626,13 @@
                  break;
  
              case AVMEDIA_TYPE_AUDIO:
@@ -1163,7 +1188,7 @@ Index: libavformat/matroskaenc.c
                  put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_AUDIO);
  
                  if (!native_id)
-@@ -693,7 +728,7 @@ static int mkv_write_header(AVFormatCont
+@@ -693,7 +729,7 @@
      put_ebml_uint   (pb, EBML_ID_EBMLREADVERSION    ,           1);
      put_ebml_uint   (pb, EBML_ID_EBMLMAXIDLENGTH    ,           4);
      put_ebml_uint   (pb, EBML_ID_EBMLMAXSIZELENGTH  ,           8);
@@ -1172,7 +1197,7 @@ Index: libavformat/matroskaenc.c
      put_ebml_uint   (pb, EBML_ID_DOCTYPEVERSION     ,           2);
      put_ebml_uint   (pb, EBML_ID_DOCTYPEREADVERSION ,           2);
      end_ebml_master(pb, ebml_header);
-@@ -746,6 +781,20 @@ static int mkv_write_header(AVFormatCont
+@@ -746,6 +782,20 @@
      if (mkv->cues == NULL)
          return AVERROR(ENOMEM);
  
@@ -1193,7 +1218,7 @@ Index: libavformat/matroskaenc.c
      put_flush_packet(pb);
      return 0;
  }
-@@ -831,10 +880,12 @@ static void mkv_write_block(AVFormatCont
+@@ -831,10 +881,12 @@
      av_log(s, AV_LOG_DEBUG, "Writing block at offset %" PRIu64 ", size %d, "
             "pts %" PRId64 ", dts %" PRId64 ", duration %d, flags %d\n",
             url_ftell(pb), pkt->size, pkt->pts, pkt->dts, pkt->duration, flags);
@@ -1206,7 +1231,7 @@ Index: libavformat/matroskaenc.c
          data = pkt->data;
      put_ebml_id(pb, blockid);
      put_ebml_num(pb, size+4, 0);
-@@ -910,9 +961,10 @@ static int mkv_write_packet(AVFormatCont
+@@ -910,9 +962,10 @@
          if (ret < 0) return ret;
      }
  
@@ -1219,7 +1244,7 @@ Index: libavformat/matroskaenc.c
          av_log(s, AV_LOG_DEBUG, "Starting new cluster at offset %" PRIu64
                 " bytes, pts %" PRIu64 "\n", url_ftell(pb), ts);
          end_ebml_master(pb, mkv->cluster);
-@@ -924,7 +976,59 @@ static int mkv_write_packet(AVFormatCont
+@@ -924,7 +977,59 @@
      mkv->duration = FFMAX(mkv->duration, ts + duration);
      return 0;
  }
@@ -1248,10 +1273,10 @@ Index: libavformat/matroskaenc.c
 +    if (codec->codec_type == AVMEDIA_TYPE_VIDEO && keyframe && mkv->cluster_pos) {
 +        // Start a new cluster when we get a key frame
 +        int64_t ts = mkv->tracks[pkt->stream_index].write_dts ? pkt->dts : pkt->pts;
++
 +        av_log(s, AV_LOG_DEBUG, "Starting new cluster at offset %" PRIu64
 +          " bytes, pts %" PRIu64 "\n", url_ftell(pb), ts);
-+
 +        end_ebml_master(pb, mkv->cluster);
 +        mkv->cluster_pos = 0;
 +        if (mkv->dyn_bc)
@@ -1279,7 +1304,7 @@ Index: libavformat/matroskaenc.c
  static int mkv_write_trailer(AVFormatContext *s)
  {
      MatroskaMuxContext *mkv = s->priv_data;
-@@ -932,6 +1036,18 @@ static int mkv_write_trailer(AVFormatCon
+@@ -932,6 +1037,18 @@
      int64_t currentpos, second_seekhead, cuespos;
      int ret;
  
@@ -1298,7 +1323,7 @@ Index: libavformat/matroskaenc.c
      if (mkv->dyn_bc) {
          end_ebml_master(mkv->dyn_bc, mkv->cluster);
          mkv_flush_dynbuf(s);
-@@ -970,10 +1086,15 @@ static int mkv_write_trailer(AVFormatCon
+@@ -970,10 +1087,15 @@
      end_ebml_master(pb, mkv->segment);
      av_free(mkv->md5_ctx);
      av_free(mkv->tracks);
@@ -1314,7 +1339,7 @@ Index: libavformat/matroskaenc.c
  AVOutputFormat matroska_muxer = {
      "matroska",
      NULL_IF_CONFIG_SMALL("Matroska file format"),
-@@ -989,7 +1110,23 @@ AVOutputFormat matroska_muxer = {
+@@ -989,7 +1111,23 @@
      .codec_tag = (const AVCodecTag* const []){ff_codec_bmp_tags, ff_codec_wav_tags, 0},
      .subtitle_codec = CODEC_ID_TEXT,
  };
@@ -1339,33 +1364,8 @@ Index: libavformat/matroskaenc.c
  AVOutputFormat matroska_audio_muxer = {
      "matroska",
      NULL_IF_CONFIG_SMALL("Matroska file format"),
-@@ -1004,3 +1141,4 @@ AVOutputFormat matroska_audio_muxer = {
+@@ -1004,3 +1142,4 @@
      .flags = AVFMT_GLOBALHEADER,
      .codec_tag = (const AVCodecTag* const []){ff_codec_wav_tags, 0},
  };
 +#endif
-Index: libavformat/Makefile
-===================================================================
---- libavformat/Makefile       (revision 23210)
-+++ libavformat/Makefile       (working copy)
-@@ -255,6 +255,8 @@ OBJS-$(CONFIG_W64_DEMUXER)              
- OBJS-$(CONFIG_WAV_DEMUXER)               += wav.o riff.o raw.o
- OBJS-$(CONFIG_WAV_MUXER)                 += wav.o riff.o
- OBJS-$(CONFIG_WC3_DEMUXER)               += wc3movie.o
-+OBJS-$(CONFIG_WEBM_MUXER)                += matroskaenc.o matroska.o \
-+                                            riff.o
- OBJS-$(CONFIG_WSAUD_DEMUXER)             += westwood.o
- OBJS-$(CONFIG_WSVQA_DEMUXER)             += westwood.o
- OBJS-$(CONFIG_WV_DEMUXER)                += wv.o apetag.o id3v1.o
-Index: libavformat/allformats.c
-===================================================================
---- libavformat/allformats.c   (revision 23210)
-+++ libavformat/allformats.c   (working copy)
-@@ -203,6 +203,7 @@ void av_register_all(void)
-     REGISTER_DEMUXER  (W64, w64);
-     REGISTER_MUXDEMUX (WAV, wav);
-     REGISTER_DEMUXER  (WC3, wc3);
-+    REGISTER_MUXER    (WEBM, webm);
-     REGISTER_DEMUXER  (WSAUD, wsaud);
-     REGISTER_DEMUXER  (WSVQA, wsvqa);
-     REGISTER_DEMUXER  (WV, wv);