From 0c58a626113a914e33436e86d259a98807bac74f Mon Sep 17 00:00:00 2001
From: SiyuanHuang <saber.huang@samsung.com>
Date: Wed, 10 Jun 2020 13:45:27 +0800
Subject: [PATCH] libavformat/dashenc.c:add support to change mpd update
 interval

according iso 23009-1 , in live cases , mpd refresh period should be changeable

Signed-off-by: SiyuanHuang <saber.huang@samsung.com>
---
 doc/muxers.texi       | 4 ++++
 libavformat/dashenc.c | 4 ++++
 2 files changed, 8 insertions(+)
 mode change 100644 => 100755 doc/muxers.texi
 mode change 100644 => 100755 libavformat/dashenc.c

diff --git a/doc/muxers.texi b/doc/muxers.texi
old mode 100644
new mode 100755
index d6f9de3702..4bbc134f1f
--- a/doc/muxers.texi
+++ b/doc/muxers.texi
@@ -364,6 +364,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 intervals ,for dynamic content. 
+The unit is second.
+
 @end table
 
 @anchor{framecrc}
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
old mode 100644
new mode 100755
index 00a37b175d..1ee4b7e5a3
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -196,6 +196,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 {
@@ -1178,6 +1179,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);
@@ -2370,6 +2373,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 },
 };
 
-- 
2.17.1

