anonymous contribution for much improved ChromakeyHSV plugin menu with boxes to set...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / pluginfclient.C
index 32c3f4aae9846aa4ac76b8759fd6c4eb536260e7..2d57743ca3447ef22473bc47fa698505879098cf 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * CINELERRA
+ * Copyright (C) 2016-2020 William Morrow
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
@@ -17,6 +37,8 @@
 #include "vframe.h"
 #include "filexml.h"
 
+#include "libavfilter/version.h"
+
 #ifdef FFMPEG3
 #define av_filter_iterate(p) ((*(const AVFilter**)(p))=avfilter_next(*(const AVFilter **)(p)))
 #endif
@@ -642,11 +664,19 @@ PluginFClient::~PluginFClient()
 bool PluginFClient::is_audio(const AVFilter *fp)
 {
        if( !fp->outputs ) return 0;
+#if LIBAVFILTER_VERSION_MINOR > 2 && LIBAVFILTER_VERSION_MAJOR > 7
+       if( avfilter_filter_pad_count(fp, 1) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->outputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->outputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->outputs, 0) != AVMEDIA_TYPE_AUDIO ) return 0;
        if( !fp->inputs ) return 1;
+#if LIBAVFILTER_VERSION_MINOR > 2 && LIBAVFILTER_VERSION_MAJOR > 7
+       if( avfilter_filter_pad_count(fp, 0) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->inputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->inputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->inputs, 0) != AVMEDIA_TYPE_AUDIO ) return 0;
        return 1;
@@ -654,11 +684,19 @@ bool PluginFClient::is_audio(const AVFilter *fp)
 bool PluginFClient::is_video(const AVFilter *fp)
 {
        if( !fp->outputs ) return 0;
+#if LIBAVFILTER_VERSION_MINOR > 2 && LIBAVFILTER_VERSION_MAJOR > 7
+       if( avfilter_filter_pad_count(fp, 1) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->outputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->outputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->outputs, 0) != AVMEDIA_TYPE_VIDEO ) return 0;
        if( !fp->inputs ) return 1;
+#if LIBAVFILTER_VERSION_MINOR > 2 && LIBAVFILTER_VERSION_MAJOR > 7
+       if( avfilter_filter_pad_count(fp, 0) > 1 ) return 0;
+#else
        if( avfilter_pad_count(fp->inputs) > 1 ) return 0;
+#endif
        if( !avfilter_pad_get_name(fp->inputs, 0) ) return 0;
        if( avfilter_pad_get_type(fp->inputs, 0) != AVMEDIA_TYPE_VIDEO ) return 0;
        return 1;