Merge commit '3d624420086ed3cd0c74f4510f0285968e21c117'
* commit '3d624420086ed3cd0c74f4510f0285968e21c117': avconv_opt: allocate an OutputFile before the streams. Conflicts: ffmpeg_opt.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
1924a61a0a
65
ffmpeg_opt.c
65
ffmpeg_opt.c
@ -986,7 +986,7 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e
|
|||||||
exit(1);
|
exit(1);
|
||||||
output_streams[nb_output_streams - 1] = ost;
|
output_streams[nb_output_streams - 1] = ost;
|
||||||
|
|
||||||
ost->file_index = nb_output_files;
|
ost->file_index = nb_output_files - 1;
|
||||||
ost->index = idx;
|
ost->index = idx;
|
||||||
ost->st = st;
|
ost->st = st;
|
||||||
st->codec->codec_type = type;
|
st->codec->codec_type = type;
|
||||||
@ -1573,6 +1573,33 @@ static int open_output_file(OptionsContext *o, const char *filename)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (o->stop_time != INT64_MAX && o->recording_time != INT64_MAX) {
|
||||||
|
o->stop_time = INT64_MAX;
|
||||||
|
av_log(NULL, AV_LOG_WARNING, "-t and -to cannot be used together; using -t.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (o->stop_time != INT64_MAX && o->recording_time == INT64_MAX) {
|
||||||
|
if (o->stop_time <= o->start_time) {
|
||||||
|
av_log(NULL, AV_LOG_WARNING, "-to value smaller than -ss; ignoring -to.\n");
|
||||||
|
o->stop_time = INT64_MAX;
|
||||||
|
} else {
|
||||||
|
o->recording_time = o->stop_time - o->start_time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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, "-"))
|
if (!strcmp(filename, "-"))
|
||||||
filename = "pipe:";
|
filename = "pipe:";
|
||||||
|
|
||||||
@ -1581,6 +1608,11 @@ static int open_output_file(OptionsContext *o, const char *filename)
|
|||||||
print_error(filename, err);
|
print_error(filename, err);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
of->ctx = oc;
|
||||||
|
if (o->recording_time != INT64_MAX)
|
||||||
|
oc->duration = o->recording_time;
|
||||||
|
|
||||||
file_oformat= oc->oformat;
|
file_oformat= oc->oformat;
|
||||||
oc->interrupt_callback = int_cb;
|
oc->interrupt_callback = int_cb;
|
||||||
|
|
||||||
@ -1786,37 +1818,6 @@ loop_end:
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (o->stop_time != INT64_MAX && o->recording_time != INT64_MAX) {
|
|
||||||
o->stop_time = INT64_MAX;
|
|
||||||
av_log(NULL, AV_LOG_WARNING, "-t and -to cannot be used together; using -t.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (o->stop_time != INT64_MAX && o->recording_time == INT64_MAX) {
|
|
||||||
if (o->stop_time <= o->start_time) {
|
|
||||||
av_log(NULL, AV_LOG_WARNING, "-to value smaller than -ss; ignoring -to.\n");
|
|
||||||
o->stop_time = INT64_MAX;
|
|
||||||
} else {
|
|
||||||
o->recording_time = o->stop_time - o->start_time;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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 */
|
/* check if all codec options have been used */
|
||||||
unused_opts = strip_specifiers(o->g->codec_opts);
|
unused_opts = strip_specifiers(o->g->codec_opts);
|
||||||
for (i = of->ost_index; i < nb_output_streams; i++) {
|
for (i = of->ost_index; i < nb_output_streams; i++) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user