Browse code

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)

wm4 authored on 2017/05/05 07:15:15
Showing 3 changed files
... ...
@@ -638,6 +638,7 @@ void choose_sample_fmt(AVStream *st, AVCodec *codec);
638 638
 
639 639
 int configure_filtergraph(FilterGraph *fg);
640 640
 int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out);
641
+void check_filter_outputs(void);
641 642
 int ist_in_filtergraph(FilterGraph *fg, InputStream *ist);
642 643
 int filtergraph_is_simple(FilterGraph *fg);
643 644
 int init_simple_filtergraph(InputStream *ist, OutputStream *ost);
... ...
@@ -678,6 +678,21 @@ int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOu
678 678
     }
679 679
 }
680 680
 
681
+void check_filter_outputs(void)
682
+{
683
+    int i;
684
+    for (i = 0; i < nb_filtergraphs; i++) {
685
+        int n;
686
+        for (n = 0; n < filtergraphs[i]->nb_outputs; n++) {
687
+            OutputFilter *output = filtergraphs[i]->outputs[n];
688
+            if (!output->ost) {
689
+                av_log(NULL, AV_LOG_FATAL, "Filter %s has an unconnected output\n", output->name);
690
+                exit_program(1);
691
+            }
692
+        }
693
+    }
694
+}
695
+
681 696
 static int sub2video_prepare(InputStream *ist, InputFilter *ifilter)
682 697
 {
683 698
     AVFormatContext *avf = input_files[ist->file_index]->ctx;
... ...
@@ -3260,6 +3260,8 @@ int ffmpeg_parse_options(int argc, char **argv)
3260 3260
         goto fail;
3261 3261
     }
3262 3262
 
3263
+    check_filter_outputs();
3264
+
3263 3265
 fail:
3264 3266
     uninit_parse_context(&octx);
3265 3267
     if (ret < 0) {