summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVishwanath Dixit <vdixit@akamai.com>2018-05-07 15:28:02 +0530
committerKarthick Jeyapal <kjeyapal@akamai.com>2018-05-15 11:13:36 +0530
commite3518821c95d3a90498e93e53dcc886b9d082ccf (patch)
tree098474f907b6876588601f6b91cae4c90d42e2f0
parent9a09f4c54ab829811c2dd041cfb7196000590b78 (diff)
avformat/dashenc: configuring container format options
-rw-r--r--doc/muxers.texi4
-rw-r--r--libavformat/dashenc.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/doc/muxers.texi b/doc/muxers.texi
index 57948cfb9a..59e20bf426 100644
--- a/doc/muxers.texi
+++ b/doc/muxers.texi
@@ -284,6 +284,10 @@ corrects that index value.
Typically this logic is needed in live streaming use cases. The network bandwidth
fluctuations are common during long run streaming. Each fluctuation can cause
the segment indexes fall behind the expected real time position.
+@item -format_options @var{options_list}
+Set container format (mp4/webm) options using a @code{:} separated list of
+key=value parameters. Values containing @code{:} special characters must be
+escaped.
@end table
@anchor{framecrc}
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index 1dd633365d..e27b61c096 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -125,6 +125,7 @@ typedef struct DASHContext {
int streaming;
int64_t timeout;
int index_correction;
+ char *format_options_str;
} DASHContext;
static struct codec_string {
@@ -1017,6 +1018,11 @@ static int dash_init(AVFormatContext *s)
av_dict_free(&opts);
os->init_start_pos = 0;
+ if (c->format_options_str) {
+ ret = av_dict_parse_string(&opts, c->format_options_str, "=", ":", 0);
+ if (ret < 0)
+ return ret;
+ }
if (!strcmp(os->format_name, "mp4")) {
if (c->streaming)
av_dict_set(&opts, "movflags", "frag_every_frame+dash+delay_moov", 0);
@@ -1538,6 +1544,7 @@ static const AVOption options[] = {
{ "streaming", "Enable/Disable streaming mode of output. Each frame will be moof fragment", OFFSET(streaming), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
{ "timeout", "set timeout for socket I/O operations", OFFSET(timeout), AV_OPT_TYPE_DURATION, { .i64 = -1 }, -1, INT_MAX, .flags = E },
{ "index_correction", "Enable/Disable segment index correction logic", OFFSET(index_correction), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
+ { "format_options","set list of options for the container format (mp4/webm) used for dash", OFFSET(format_options_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},
{ NULL },
};