[FFmpeg-cvslog] mpegenc: add preload private option.

Anton Khirnov git at videolan.org
Wed Oct 26 02:46:27 CEST 2011


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sun Oct  9 15:04:38 2011 +0200| [f172132f825cec4e446a5bdde4ffa9065ba9061f] | committer: Anton Khirnov

mpegenc: add preload private option.

Deprecate AVFormatContext.preload.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f172132f825cec4e446a5bdde4ffa9065ba9061f
---

 avconv.c               |    7 +++++--
 libavformat/avformat.h |    4 +++-
 libavformat/mpegenc.c  |   10 +++++++++-
 libavformat/version.h  |    3 +++
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/avconv.c b/avconv.c
index 8fc6fd1..742695b 100644
--- a/avconv.c
+++ b/avconv.c
@@ -375,7 +375,6 @@ static void reset_options(OptionsContext *o)
 
     memset(o, 0, sizeof(*o));
 
-    o->mux_preload    = 0.5;
     o->mux_max_delay  = 0.7;
     o->recording_time = INT64_MAX;
     o->limit_filesize = UINT64_MAX;
@@ -3572,7 +3571,11 @@ static void opt_output_file(void *optctx, const char *filename)
         }
     }
 
-    oc->preload   = (int)(o->mux_preload   * AV_TIME_BASE);
+    if (o->mux_preload) {
+        uint8_t buf[64];
+        snprintf(buf, sizeof(buf), "%d", (int)(o->mux_preload*AV_TIME_BASE));
+        av_dict_set(&output_files[nb_output_files - 1].opts, "preload", buf, 0);
+    }
     oc->max_delay = (int)(o->mux_max_delay * AV_TIME_BASE);
     oc->flags |= AVFMT_FLAG_NONBLOCK;
 
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 65f66d8..74c7140 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -743,7 +743,9 @@ typedef struct AVFormatContext {
     attribute_deprecated int mux_rate;
 #endif
     unsigned int packet_size;
-    int preload;
+#if FF_API_PRELOAD
+    attribute_deprecated int preload;
+#endif
     int max_delay;
 
 #if FF_API_LOOP_OUTPUT
diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
index 5e8954c..f824d6c 100644
--- a/libavformat/mpegenc.c
+++ b/libavformat/mpegenc.c
@@ -77,6 +77,7 @@ typedef struct {
     double vcd_padding_bitrate; //FIXME floats
     int64_t vcd_padding_bytes_written;
 
+    int preload;
 } MpegMuxContext;
 
 extern AVOutputFormat ff_mpeg1vcd_muxer;
@@ -1158,9 +1159,15 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
     StreamInfo *stream = st->priv_data;
     int64_t pts, dts;
     PacketDesc *pkt_desc;
-    const int preload= av_rescale(ctx->preload, 90000, AV_TIME_BASE);
+    int preload;
     const int is_iframe = st->codec->codec_type == AVMEDIA_TYPE_VIDEO && (pkt->flags & AV_PKT_FLAG_KEY);
 
+#if FF_API_PRELOAD
+    if (ctx->preload)
+        s->preload = ctx->preload;
+#endif
+    preload = av_rescale(s->preload, 90000, AV_TIME_BASE);
+
     pts= pkt->pts;
     dts= pkt->dts;
 
@@ -1237,6 +1244,7 @@ static int mpeg_mux_end(AVFormatContext *ctx)
 #define E AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
     { "muxrate", NULL, OFFSET(mux_rate), AV_OPT_TYPE_INT, {0}, 0, INT_MAX, E },
+    { "preload", "Initial demux-decode delay in microseconds.", OFFSET(preload),  AV_OPT_TYPE_INT, {500000}, 0, INT_MAX, E},
     { NULL },
 };
 
diff --git a/libavformat/version.h b/libavformat/version.h
index 9de30ea..3a6a4f6 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -98,5 +98,8 @@
 #ifndef FF_API_NEW_STREAM
 #define FF_API_NEW_STREAM              (LIBAVFORMAT_VERSION_MAJOR < 54)
 #endif
+#ifndef FF_API_PRELOAD
+#define FF_API_PRELOAD                 (LIBAVFORMAT_VERSION_MAJOR < 54)
+#endif
 
 #endif /* AVFORMAT_VERSION_H */



More information about the ffmpeg-cvslog mailing list