mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-14 22:22:59 +02:00
ffmpeg_opt: Do not overwrite output if there is no input
Fixes Ticket4254 Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
dcac15a84c
commit
6a3833e141
15
ffmpeg_opt.c
15
ffmpeg_opt.c
@ -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)
|
|||||||
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:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
|||||||
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 *
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user