From 3d624420086ed3cd0c74f4510f0285968e21c117 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 10 Apr 2013 14:46:20 +0200 Subject: avconv_opt: allocate an OutputFile before the streams. This way OutputFile variables like recording time can be used when creating the streams. --- avconv_opt.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'avconv_opt.c') diff --git a/avconv_opt.c b/avconv_opt.c index 1a4d891a0b..b15c54f4ee 100644 --- a/avconv_opt.c +++ b/avconv_opt.c @@ -820,7 +820,7 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e exit(1); output_streams[nb_output_streams - 1] = ost; - ost->file_index = nb_output_files; + ost->file_index = nb_output_files - 1; ost->index = idx; ost->st = st; st->codec->codec_type = type; @@ -1294,6 +1294,19 @@ static int open_output_file(OptionsContext *o, const char *filename) exit(1); } + GROW_ARRAY(output_files, nb_output_files); + of = av_mallocz(sizeof(*of)); + if (!of) + exit(1); + output_files[nb_output_files - 1] = of; + + of->ost_index = nb_output_streams; + of->recording_time = o->recording_time; + of->start_time = o->start_time; + of->limit_filesize = o->limit_filesize; + of->shortest = o->shortest; + av_dict_copy(&of->opts, o->g->format_opts, 0); + if (!strcmp(filename, "-")) filename = "pipe:"; @@ -1302,6 +1315,9 @@ static int open_output_file(OptionsContext *o, const char *filename) print_error(filename, AVERROR(ENOMEM)); exit(1); } + of->ctx = oc; + if (o->recording_time != INT64_MAX) + oc->duration = o->recording_time; if (o->format) { file_oformat = av_guess_format(o->format, NULL, NULL); @@ -1477,23 +1493,6 @@ loop_end: avio_close(pb); } - GROW_ARRAY(output_files, nb_output_files); - of = av_mallocz(sizeof(*of)); - if (!of) - exit(1); - output_files[nb_output_files - 1] = of; - - of->ctx = oc; - of->ost_index = nb_output_streams - oc->nb_streams; - of->recording_time = o->recording_time; - if (o->recording_time != INT64_MAX) - oc->duration = o->recording_time; - of->start_time = o->start_time; - of->limit_filesize = o->limit_filesize; - of->shortest = o->shortest; - av_dict_copy(&of->opts, o->g->format_opts, 0); - - /* check if all codec options have been used */ unused_opts = strip_specifiers(o->g->codec_opts); for (i = of->ost_index; i < nb_output_streams; i++) { -- cgit v1.2.3