Commit 6a3833e1 authored by Michael Niedermayer's avatar Michael Niedermayer

ffmpeg_opt: Do not overwrite output if there is no input

Fixes Ticket4254
Reviewed-by: 's avatarNicolas George <george@nsup.org>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent dcac15a8
...@@ -110,6 +110,7 @@ static int no_file_overwrite = 0; ...@@ -110,6 +110,7 @@ static int no_file_overwrite = 0;
static int do_psnr = 0; static int do_psnr = 0;
static int input_sync; static int input_sync;
static int override_ffserver = 0; static int override_ffserver = 0;
static int input_stream_potentially_available = 0;
static void uninit_options(OptionsContext *o) static void uninit_options(OptionsContext *o)
{ {
...@@ -1008,6 +1009,8 @@ static int open_input_file(OptionsContext *o, const char *filename) ...@@ -1008,6 +1009,8 @@ static int open_input_file(OptionsContext *o, const char *filename)
av_dict_free(&opts[i]); av_dict_free(&opts[i]);
av_freep(&opts); av_freep(&opts);
input_stream_potentially_available = 1;
return 0; return 0;
} }
...@@ -2104,6 +2107,12 @@ loop_end: ...@@ -2104,6 +2107,12 @@ loop_end:
} }
} }
if (!(oc->oformat->flags & AVFMT_NOSTREAMS) && !input_stream_potentially_available) {
av_log(NULL, AV_LOG_ERROR,
"No input streams but output needs an input stream\n");
exit_program(1);
}
if (!(oc->oformat->flags & AVFMT_NOFILE)) { if (!(oc->oformat->flags & AVFMT_NOFILE)) {
/* test if it already exists to avoid losing precious files */ /* test if it already exists to avoid losing precious files */
assert_file_overwrite(filename); assert_file_overwrite(filename);
...@@ -2608,6 +2617,9 @@ static int opt_filter_complex(void *optctx, const char *opt, const char *arg) ...@@ -2608,6 +2617,9 @@ static int opt_filter_complex(void *optctx, const char *opt, const char *arg)
filtergraphs[nb_filtergraphs - 1]->graph_desc = av_strdup(arg); filtergraphs[nb_filtergraphs - 1]->graph_desc = av_strdup(arg);
if (!filtergraphs[nb_filtergraphs - 1]->graph_desc) if (!filtergraphs[nb_filtergraphs - 1]->graph_desc)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
input_stream_potentially_available = 1;
return 0; return 0;
} }
...@@ -2622,6 +2634,9 @@ static int opt_filter_complex_script(void *optctx, const char *opt, const char * ...@@ -2622,6 +2634,9 @@ static int opt_filter_complex_script(void *optctx, const char *opt, const char *
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
filtergraphs[nb_filtergraphs - 1]->index = nb_filtergraphs - 1; filtergraphs[nb_filtergraphs - 1]->index = nb_filtergraphs - 1;
filtergraphs[nb_filtergraphs - 1]->graph_desc = graph_desc; filtergraphs[nb_filtergraphs - 1]->graph_desc = graph_desc;
input_stream_potentially_available = 1;
return 0; return 0;
} }
......
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