summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 1738cc4a24..e37fc96beb 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -205,6 +205,8 @@ static int audio_codec_tag = 0;
static int mux_rate= 0;
static int mux_packet_size= 0;
+static float mux_preload= 0.5;
+static float mux_max_delay= 0.7;
static int64_t recording_time = 0;
static int64_t start_time = 0;
@@ -3328,6 +3330,8 @@ static void opt_output_file(const char *filename)
oc->packet_size= mux_packet_size;
oc->mux_rate= mux_rate;
+ oc->preload= (int)(mux_preload*AV_TIME_BASE);
+ oc->max_delay= (int)(mux_max_delay*AV_TIME_BASE);
/* reset some options */
file_oformat = NULL;
@@ -3692,6 +3696,12 @@ static void opt_target(const char *arg)
mux_packet_size= 2324;
mux_rate= 2352 * 75 * 8;
+ /* We have to offset the PTS, so that it is consistent with the SCR.
+ SCR starts at 36000, but the first two packs contain only padding
+ and the first pack from the other stream, respectively, may also have
+ been written before.
+ So the real data starts at SCR 36000+3*1200. */
+ mux_preload= (36000+3*1200) / 90000.0; //0.44
} else if(!strcmp(arg, "svcd")) {
opt_video_codec("mpeg2video");
@@ -3916,6 +3926,8 @@ const OptionDef options[] = {
/* muxer options */
{ "muxrate", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&mux_rate}, "set mux rate", "rate" },
{ "packetsize", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&mux_packet_size}, "set packet size", "size" },
+ { "muxdelay", OPT_FLOAT | HAS_ARG | OPT_EXPERT, {(void*)&mux_max_delay}, "set the maximum demux-decode delay", "seconds" },
+ { "muxpreload", OPT_FLOAT | HAS_ARG | OPT_EXPERT, {(void*)&mux_preload}, "set the initial demux-decode delay", "seconds" },
{ NULL, },
};