Hi all, hi Michael! I have attached the solution I worked on. It is probably inferior to yours. I honestly don't know and didn't think to hard about it. It passes my basic tests and fate at least.
Just posting for completeness and maybe I will learn something new. Thank you, Alexander On 2015-03-27 02:11 +0100, Michael Niedermayer wrote: > Fixes Ticket4254 > > Signed-off-by: Michael Niedermayer <michae...@gmx.at> > --- > ffmpeg_opt.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c > index 39c5f49..fb7490a 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; > } > > --
From dbf318b0068d04fbe5d2890f6a7e376e092a8219 Mon Sep 17 00:00:00 2001 Message-Id: <dbf318b0068d04fbe5d2890f6a7e376e092a8219.1427509156.git.eclip...@gmx.net> From: Alexander Strasser <eclip...@gmx.net> Date: Sat, 28 Mar 2015 02:55:59 +0100 Subject: [PATCH] ffmpeg: Don't overwrite output files if no inputs are possibly given Fix ticket #4254 Signed-off-by: Alexander Strasser <eclip...@gmx.net> --- ffmpeg.c | 5 ----- ffmpeg_opt.c | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index 67ce1f3..e604de8 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -4027,11 +4027,6 @@ int main(int argc, char **argv) exit_program(1); } -// if (nb_input_files == 0) { -// av_log(NULL, AV_LOG_FATAL, "At least one input file must be specified\n"); -// exit_program(1); -// } - current_time = ti = getutime(); if (transcode() < 0) exit_program(1); diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index 39c5f49..fa1ffe8 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -2773,6 +2773,12 @@ int ffmpeg_parse_options(int argc, char **argv) goto fail; } + if (nb_input_files == 0 && nb_filtergraphs == 0) { + av_log(NULL, AV_LOG_FATAL, "At least one input file (or filter source) must be specified: "); + ret = AVERROR(EINVAL); + goto fail; + } + /* open output files */ ret = open_files(&octx.groups[GROUP_OUTFILE], "output", open_output_file); if (ret < 0) { --
pgp_VORuDMrGO.pgp
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel