[FFmpeg-cvslog] avconv_opt: allocate an OutputFile before the streams.
Anton Khirnov
git at videolan.org
Wed May 1 12:17:32 CEST 2013
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Wed Apr 10 14:46:20 2013 +0200| [3d624420086ed3cd0c74f4510f0285968e21c117] | committer: Anton Khirnov
avconv_opt: allocate an OutputFile before the streams.
This way OutputFile variables like recording time can be used when
creating the streams.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3d624420086ed3cd0c74f4510f0285968e21c117
---
avconv_opt.c | 35 +++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/avconv_opt.c b/avconv_opt.c
index 1a4d891..b15c54f 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++) {
More information about the ffmpeg-cvslog
mailing list