pad-monitor: do not enforce caps querying rules for converters
authorThiago Santos <thiagoss@osg.samsung.com>
Wed, 19 Nov 2014 20:16:02 +0000 (17:16 -0300)
committerThiago Santos <thiagoss@osg.samsung.com>
Fri, 28 Nov 2014 20:21:23 +0000 (17:21 -0300)
Some encoders/decoders can also be converters, do not enforce
caps proxying rules for them

validate/gst/validate/gst-validate-element-monitor.c
validate/gst/validate/gst-validate-element-monitor.h
validate/gst/validate/gst-validate-pad-monitor.c

index a7690ec..e8b078f 100644 (file)
@@ -181,6 +181,7 @@ gst_validate_element_monitor_inspect (GstValidateElementMonitor * monitor)
     monitor->is_decoder = strstr (klassname, "Decoder") != NULL;
     monitor->is_encoder = strstr (klassname, "Encoder") != NULL;
     monitor->is_demuxer = strstr (klassname, "Demuxer") != NULL;
+    monitor->is_converter = strstr (klassname, "Converter") != NULL;
   } else
     GST_ERROR_OBJECT (element, "no klassname");
 }
index d113e22..8ee499b 100644 (file)
@@ -42,6 +42,7 @@ G_BEGIN_DECLS
 #define GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_DECODER(m) (GST_VALIDATE_ELEMENT_MONITOR_CAST (m)->is_decoder)
 #define GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_ENCODER(m) (GST_VALIDATE_ELEMENT_MONITOR_CAST (m)->is_encoder)
 #define GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_DEMUXER(m) (GST_VALIDATE_ELEMENT_MONITOR_CAST (m)->is_demuxer)
+#define GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_CONVERTER(m) (GST_VALIDATE_ELEMENT_MONITOR_CAST (m)->is_converter)
 
 typedef struct _GstValidateElementMonitor GstValidateElementMonitor;
 typedef struct _GstValidateElementMonitorClass GstValidateElementMonitorClass;
@@ -63,6 +64,7 @@ struct _GstValidateElementMonitor {
   gboolean       is_decoder;
   gboolean       is_encoder;
   gboolean       is_demuxer;
+  gboolean       is_converter;
 };
 
 /**
index e6dee86..ea342d8 100644 (file)
@@ -530,8 +530,9 @@ gst_validate_pad_monitor_pad_should_proxy_othercaps (GstValidatePadMonitor *
     return FALSE;
 
   /* We only know how to handle othercaps checks for codecs so far */
-  return GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_DECODER (parent) ||
-      GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_ENCODER (parent);
+  return (GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_DECODER (parent) ||
+      GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_ENCODER (parent)) &&
+      !GST_VALIDATE_ELEMENT_MONITOR_ELEMENT_IS_CONVERTER (parent);
 }