]> git.sesse.net Git - ffmpeg/commitdiff
libavformat/dashenc.c: Support mpd update period
authorSiyuan Huang <saber.huang@samsung.com>
Tue, 30 Jun 2020 05:41:46 +0000 (13:41 +0800)
committerKarthick J <kjeyapal@akamai.com>
Thu, 9 Jul 2020 05:47:32 +0000 (11:17 +0530)
According ISO 23009-1, in live cases, mpd refresh period should be configurable

Signed-off-by: Siyuan Huang <saber.huang@samsung.com>
doc/muxers.texi
libavformat/dashenc.c

index b1389a32272abb0d13df36da921d69e10a7af54e..86976f4f617e213ea95711409dde69b1bc13f567 100644 (file)
@@ -366,6 +366,10 @@ adjusting playback latency and buffer occupancy during normal playback by client
 Set the maximum playback rate indicated as appropriate for the purposes of automatically
 adjusting playback latency and buffer occupancy during normal playback by clients.
 
+@item update_period @var{update_period}
+ Set the mpd update period ,for dynamic content.
+ The unit is second.
+
 @end table
 
 @anchor{framecrc}
index 62193058d786197e9c091f3b4930976ac5692186..dc3306a56a2b950c3955d429b0228229459544b9 100644 (file)
@@ -198,6 +198,7 @@ typedef struct DASHContext {
     int target_latency_refid;
     AVRational min_playback_rate;
     AVRational max_playback_rate;
+    int64_t update_period;
 } DASHContext;
 
 static struct codec_string {
@@ -1184,6 +1185,8 @@ static int write_manifest(AVFormatContext *s, int final)
         char now_str[100];
         if (c->use_template && !c->use_timeline)
             update_period = 500;
+        if (c->update_period)
+            update_period = c->update_period;
         avio_printf(out, "\tminimumUpdatePeriod=\"PT%"PRId64"S\"\n", update_period);
         if (!c->ldash)
             avio_printf(out, "\tsuggestedPresentationDelay=\"PT%"PRId64"S\"\n", c->last_duration / AV_TIME_BASE);
@@ -2380,6 +2383,7 @@ static const AVOption options[] = {
     { "target_latency", "Set desired target latency for Low-latency dash", OFFSET(target_latency), AV_OPT_TYPE_DURATION, { .i64 = 0 }, 0, INT_MAX, E },
     { "min_playback_rate", "Set desired minimum playback rate", OFFSET(min_playback_rate), AV_OPT_TYPE_RATIONAL, { .dbl = 1.0 }, 0.5, 1.5, E },
     { "max_playback_rate", "Set desired maximum playback rate", OFFSET(max_playback_rate), AV_OPT_TYPE_RATIONAL, { .dbl = 1.0 }, 0.5, 1.5, E },
+    { "update_period", "Set the mpd update interval", OFFSET(update_period), AV_OPT_TYPE_INT64, {.i64 = 0}, 0, INT64_MAX, E},
     { NULL },
 };