Commit e3518821 authored by Vishwanath Dixit's avatar Vishwanath Dixit Committed by Karthick Jeyapal

avformat/dashenc: configuring container format options

parent 9a09f4c5
...@@ -284,6 +284,10 @@ corrects that index value. ...@@ -284,6 +284,10 @@ corrects that index value.
Typically this logic is needed in live streaming use cases. The network bandwidth Typically this logic is needed in live streaming use cases. The network bandwidth
fluctuations are common during long run streaming. Each fluctuation can cause fluctuations are common during long run streaming. Each fluctuation can cause
the segment indexes fall behind the expected real time position. 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 @end table
@anchor{framecrc} @anchor{framecrc}
......
...@@ -125,6 +125,7 @@ typedef struct DASHContext { ...@@ -125,6 +125,7 @@ typedef struct DASHContext {
int streaming; int streaming;
int64_t timeout; int64_t timeout;
int index_correction; int index_correction;
char *format_options_str;
} DASHContext; } DASHContext;
static struct codec_string { static struct codec_string {
...@@ -1017,6 +1018,11 @@ static int dash_init(AVFormatContext *s) ...@@ -1017,6 +1018,11 @@ static int dash_init(AVFormatContext *s)
av_dict_free(&opts); av_dict_free(&opts);
os->init_start_pos = 0; 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 (!strcmp(os->format_name, "mp4")) {
if (c->streaming) if (c->streaming)
av_dict_set(&opts, "movflags", "frag_every_frame+dash+delay_moov", 0); av_dict_set(&opts, "movflags", "frag_every_frame+dash+delay_moov", 0);
...@@ -1538,6 +1544,7 @@ static const AVOption options[] = { ...@@ -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 }, { "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 }, { "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 }, { "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 }, { NULL },
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment