|
|
|
@@ -75,7 +75,6 @@ typedef struct SegmentContext { |
|
|
|
ff_const59 AVOutputFormat *oformat; |
|
|
|
AVFormatContext *avf; |
|
|
|
char *format; ///< format to use for output segment files |
|
|
|
char *format_options_str; ///< format options to use for output segment files |
|
|
|
AVDictionary *format_options; |
|
|
|
char *list; ///< filename for the segment list file |
|
|
|
int list_flags; ///< flags affecting list generation |
|
|
|
@@ -720,15 +719,6 @@ static int seg_init(AVFormatContext *s) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (seg->format_options_str) { |
|
|
|
ret = av_dict_parse_string(&seg->format_options, seg->format_options_str, "=", ":", 0); |
|
|
|
if (ret < 0) { |
|
|
|
av_log(s, AV_LOG_ERROR, "Could not parse format options list '%s'\n", |
|
|
|
seg->format_options_str); |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (seg->list) { |
|
|
|
if (seg->list_type == LIST_TYPE_UNDEFINED) { |
|
|
|
if (av_match_ext(seg->list, "csv" )) seg->list_type = LIST_TYPE_CSV; |
|
|
|
@@ -791,7 +781,7 @@ static int seg_init(AVFormatContext *s) |
|
|
|
ret = avformat_init_output(oc, &options); |
|
|
|
if (av_dict_count(options)) { |
|
|
|
av_log(s, AV_LOG_ERROR, |
|
|
|
"Some of the provided format options in '%s' are not recognized\n", seg->format_options_str); |
|
|
|
"Some of the provided format options are not recognized\n"); |
|
|
|
av_dict_free(&options); |
|
|
|
return AVERROR(EINVAL); |
|
|
|
} |
|
|
|
@@ -1017,7 +1007,6 @@ fail: |
|
|
|
if (seg->list) |
|
|
|
ff_format_io_close(s, &seg->list_pb); |
|
|
|
|
|
|
|
av_dict_free(&seg->format_options); |
|
|
|
av_opt_free(seg); |
|
|
|
av_freep(&seg->times); |
|
|
|
av_freep(&seg->frames); |
|
|
|
@@ -1060,7 +1049,7 @@ static int seg_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt) |
|
|
|
static const AVOption options[] = { |
|
|
|
{ "reference_stream", "set reference stream", OFFSET(reference_stream_specifier), AV_OPT_TYPE_STRING, {.str = "auto"}, CHAR_MIN, CHAR_MAX, E }, |
|
|
|
{ "segment_format", "set container format used for the segments", OFFSET(format), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E }, |
|
|
|
{ "segment_format_options", "set list of options for the container format used for the segments", OFFSET(format_options_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E }, |
|
|
|
{ "segment_format_options", "set list of options for the container format used for the segments", OFFSET(format_options), AV_OPT_TYPE_DICT, {.str = NULL}, 0, 0, E }, |
|
|
|
{ "segment_list", "set the segment list filename", OFFSET(list), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E }, |
|
|
|
{ "segment_header_filename", "write a single file containing the header", OFFSET(header_filename), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E }, |
|
|
|
|
|
|
|
|