diff options
author | wm4 <nfxjfg@googlemail.com> | 2017-05-05 00:15:15 +0200 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2017-05-07 19:52:00 +0200 |
commit | 059db2204046c502f946ad6a80c6d76e428627fd (patch) | |
tree | 78754fad3261c703b91d638f4fbd4550251abe0f | |
parent | 329176adc52c51878160530a655f9c787fa338b3 (diff) | |
download | ffmpeg-059db2204046c502f946ad6a80c6d76e428627fd.tar.gz |
ffmpeg: check for unconnected outputs
Fixes e.g.:
ffmpeg -f lavfi -i testsrc -f lavfi -i testsrc -filter_complex "[0:v][1:v]psnr[out]" -f null none
Fixes ticket #6323.
(cherry picked from commit 974ee16d6a71c31d0b5db4f139a40831c2f45776)
-rw-r--r-- | ffmpeg.h | 1 | ||||
-rw-r--r-- | ffmpeg_filter.c | 15 | ||||
-rw-r--r-- | ffmpeg_opt.c | 2 |
3 files changed, 18 insertions, 0 deletions
@@ -638,6 +638,7 @@ void choose_sample_fmt(AVStream *st, AVCodec *codec); int configure_filtergraph(FilterGraph *fg); int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out); +void check_filter_outputs(void); int ist_in_filtergraph(FilterGraph *fg, InputStream *ist); int filtergraph_is_simple(FilterGraph *fg); int init_simple_filtergraph(InputStream *ist, OutputStream *ost); diff --git a/ffmpeg_filter.c b/ffmpeg_filter.c index 219e473f69..4d425eaff2 100644 --- a/ffmpeg_filter.c +++ b/ffmpeg_filter.c @@ -678,6 +678,21 @@ int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOu } } +void check_filter_outputs(void) +{ + int i; + for (i = 0; i < nb_filtergraphs; i++) { + int n; + for (n = 0; n < filtergraphs[i]->nb_outputs; n++) { + OutputFilter *output = filtergraphs[i]->outputs[n]; + if (!output->ost) { + av_log(NULL, AV_LOG_FATAL, "Filter %s has an unconnected output\n", output->name); + exit_program(1); + } + } + } +} + static int sub2video_prepare(InputStream *ist, InputFilter *ifilter) { AVFormatContext *avf = input_files[ist->file_index]->ctx; diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index d1fe8742ff..e73a61059f 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -3260,6 +3260,8 @@ int ffmpeg_parse_options(int argc, char **argv) goto fail; } + check_filter_outputs(); + fail: uninit_parse_context(&octx); if (ret < 0) { |