From 6a3833e1411e788819fd132aa60cf3f66acbbe03 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 27 Mar 2015 00:42:26 +0100 Subject: [PATCH] ffmpeg_opt: Do not overwrite output if there is no input Fixes Ticket4254 Reviewed-by: Nicolas George Signed-off-by: Michael Niedermayer --- ffmpeg_opt.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index 39c5f49d67..fb7490adf6 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -110,6 +110,7 @@ static int no_file_overwrite = 0; static int do_psnr = 0; static int input_sync; static int override_ffserver = 0; +static int input_stream_potentially_available = 0; static void uninit_options(OptionsContext *o) { @@ -1008,6 +1009,8 @@ static int open_input_file(OptionsContext *o, const char *filename) av_dict_free(&opts[i]); av_freep(&opts); + input_stream_potentially_available = 1; + return 0; } @@ -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)) { /* test if it already exists to avoid losing precious files */ assert_file_overwrite(filename); @@ -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); if (!filtergraphs[nb_filtergraphs - 1]->graph_desc) return AVERROR(ENOMEM); + + input_stream_potentially_available = 1; + return 0; } @@ -2622,6 +2634,9 @@ static int opt_filter_complex_script(void *optctx, const char *opt, const char * return AVERROR(ENOMEM); filtergraphs[nb_filtergraphs - 1]->index = nb_filtergraphs - 1; filtergraphs[nb_filtergraphs - 1]->graph_desc = graph_desc; + + input_stream_potentially_available = 1; + return 0; }