[Pkg-gstreamer-commits] [gstreamer-vaapi] 63/176: plugins: factor out GstImplementsInterface.

Vincent Cheng vcheng at moszumanska.debian.org
Tue Jun 3 08:09:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

vcheng pushed a commit to branch upstream
in repository gstreamer-vaapi.

commit e5f066b719aad015bf76c93f0c7b6d0c3c7d5fa6
Author: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Date:   Fri Dec 13 13:24:24 2013 +0100

    plugins: factor out GstImplementsInterface.
---
 gst/vaapi/gstvaapidecode.c     | 23 +----------------------
 gst/vaapi/gstvaapidownload.c   | 19 +------------------
 gst/vaapi/gstvaapiencode.c     | 21 +--------------------
 gst/vaapi/gstvaapipluginbase.c | 34 +++++++++++++++++++++++++++++++++-
 gst/vaapi/gstvaapipluginbase.h |  8 ++++++++
 gst/vaapi/gstvaapipostproc.c   | 23 +----------------------
 gst/vaapi/gstvaapisink.c       | 31 ++++++++-----------------------
 gst/vaapi/gstvaapiupload.c     | 20 +-------------------
 8 files changed, 54 insertions(+), 125 deletions(-)

diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c
index 2228122..851659b 100644
--- a/gst/vaapi/gstvaapidecode.c
+++ b/gst/vaapi/gstvaapidecode.c
@@ -95,24 +95,6 @@ static GstStaticPadTemplate gst_vaapidecode_src_factory =
         GST_PAD_ALWAYS,
         GST_STATIC_CAPS(gst_vaapidecode_src_caps_str));
 
-/* GstImplementsInterface interface */
-#if !GST_CHECK_VERSION(1,0,0)
-static gboolean
-gst_vaapidecode_implements_interface_supported(
-    GstImplementsInterface *iface,
-    GType                   type
-)
-{
-    return (type == GST_TYPE_VIDEO_CONTEXT);
-}
-
-static void
-gst_vaapidecode_implements_iface_init(GstImplementsInterfaceClass *iface)
-{
-    iface->supported = gst_vaapidecode_implements_interface_supported;
-}
-#endif
-
 /* GstVideoContext interface */
 #if !GST_CHECK_VERSION(1,1,0)
 static void
@@ -136,10 +118,7 @@ G_DEFINE_TYPE_WITH_CODE(
     GstVaapiDecode,
     gst_vaapidecode,
     GST_TYPE_VIDEO_DECODER,
-#if !GST_CHECK_VERSION(1,0,0)
-    G_IMPLEMENT_INTERFACE(GST_TYPE_IMPLEMENTS_INTERFACE,
-                          gst_vaapidecode_implements_iface_init);
-#endif
+    GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
 #if !GST_CHECK_VERSION(1,1,0)
     G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
                           gst_video_context_interface_init)
diff --git a/gst/vaapi/gstvaapidownload.c b/gst/vaapi/gstvaapidownload.c
index ed33bc4..a7bb9f2 100644
--- a/gst/vaapi/gstvaapidownload.c
+++ b/gst/vaapi/gstvaapidownload.c
@@ -91,22 +91,6 @@ struct _GstVaapiDownloadClass {
     GstVaapiPluginBaseClass parent_class;
 };
 
-/* GstImplementsInterface interface */
-static gboolean
-gst_vaapidownload_implements_interface_supported(
-    GstImplementsInterface *iface,
-    GType                   type
-)
-{
-    return (type == GST_TYPE_VIDEO_CONTEXT);
-}
-
-static void
-gst_vaapidownload_implements_iface_init(GstImplementsInterfaceClass *iface)
-{
-    iface->supported = gst_vaapidownload_implements_interface_supported;
-}
-
 /* GstVideoContext interface */
 static void
 gst_vaapidownload_set_video_context(GstVideoContext *context, const gchar *type,
@@ -127,8 +111,7 @@ G_DEFINE_TYPE_WITH_CODE(
     GstVaapiDownload,
     gst_vaapidownload,
     GST_TYPE_BASE_TRANSFORM,
-    G_IMPLEMENT_INTERFACE(GST_TYPE_IMPLEMENTS_INTERFACE,
-                          gst_vaapidownload_implements_iface_init);
+    GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
     G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
                           gst_video_context_interface_init))
 
diff --git a/gst/vaapi/gstvaapiencode.c b/gst/vaapi/gstvaapiencode.c
index c8b670b..b4d49ef 100644
--- a/gst/vaapi/gstvaapiencode.c
+++ b/gst/vaapi/gstvaapiencode.c
@@ -42,22 +42,6 @@
 GST_DEBUG_CATEGORY_STATIC (gst_vaapiencode_debug);
 #define GST_CAT_DEFAULT gst_vaapiencode_debug
 
-/* GstImplementsInterface interface */
-#if !GST_CHECK_VERSION(1,0,0)
-static gboolean
-gst_vaapiencode_implements_interface_supported (GstImplementsInterface * iface,
-    GType type)
-{
-  return (type == GST_TYPE_VIDEO_CONTEXT);
-}
-
-static void
-gst_vaapiencode_implements_iface_init (GstImplementsInterfaceClass * iface)
-{
-  iface->supported = gst_vaapiencode_implements_interface_supported;
-}
-#endif
-
 /* GstContext interface */
 #if GST_CHECK_VERSION(1,1,0)
 static void
@@ -93,10 +77,7 @@ gst_video_context_interface_init (GstVideoContextInterface * iface)
 
 G_DEFINE_TYPE_WITH_CODE (GstVaapiEncode,
     gst_vaapiencode, GST_TYPE_VIDEO_ENCODER,
-#if !GST_CHECK_VERSION(1,0,0)
-    G_IMPLEMENT_INTERFACE (GST_TYPE_IMPLEMENTS_INTERFACE,
-        gst_vaapiencode_implements_iface_init);
-#endif
+    GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
 #if !GST_CHECK_VERSION(1,1,0)
     G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_CONTEXT,
         gst_video_context_interface_init)
diff --git a/gst/vaapi/gstvaapipluginbase.c b/gst/vaapi/gstvaapipluginbase.c
index 1f106de..35fadf5 100644
--- a/gst/vaapi/gstvaapipluginbase.c
+++ b/gst/vaapi/gstvaapipluginbase.c
@@ -29,6 +29,38 @@
 /* Default debug category is from the subclass */
 #define GST_CAT_DEFAULT (plugin->debug_category)
 
+/* GstImplementsInterface interface */
+#if !GST_CHECK_VERSION(1,0,0)
+static gboolean
+implements_interface_supported (GstImplementsInterface * iface, GType type)
+{
+  GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (iface);
+
+  return GST_VAAPI_PLUGIN_BASE_GET_CLASS (plugin)->has_interface (plugin, type);
+}
+
+static void
+implements_interface_init (GstImplementsInterfaceClass * iface)
+{
+  iface->supported = implements_interface_supported;
+}
+#endif
+
+void
+gst_vaapi_plugin_base_init_interfaces (GType g_define_type_id)
+{
+#if !GST_CHECK_VERSION(1,0,0)
+  G_IMPLEMENT_INTERFACE (GST_TYPE_IMPLEMENTS_INTERFACE,
+      implements_interface_init);
+#endif
+}
+
+static gboolean
+default_has_interface (GstVaapiPluginBase * plugin, GType type)
+{
+  return FALSE;
+}
+
 static void
 default_display_changed (GstVaapiPluginBase * plugin)
 {
@@ -37,6 +69,7 @@ default_display_changed (GstVaapiPluginBase * plugin)
 void
 gst_vaapi_plugin_base_class_init (GstVaapiPluginBaseClass * klass)
 {
+  klass->has_interface = default_has_interface;
   klass->display_changed = default_display_changed;
 }
 
@@ -45,7 +78,6 @@ gst_vaapi_plugin_base_init (GstVaapiPluginBase * plugin,
     GstDebugCategory * debug_category)
 {
   plugin->debug_category = debug_category;
-
   plugin->display_type = GST_VAAPI_DISPLAY_TYPE_ANY;
   plugin->display_type_req = GST_VAAPI_DISPLAY_TYPE_ANY;
 }
diff --git a/gst/vaapi/gstvaapipluginbase.h b/gst/vaapi/gstvaapipluginbase.h
index 952d309..0f80ea6 100644
--- a/gst/vaapi/gstvaapipluginbase.h
+++ b/gst/vaapi/gstvaapipluginbase.h
@@ -68,6 +68,9 @@ typedef struct _GstVaapiPluginBaseClass GstVaapiPluginBaseClass;
 #define GST_VAAPI_PLUGIN_BASE_SINK_CLASS(plugin) \
   (&GST_VAAPI_PLUGIN_BASE_PARENT_CLASS(plugin)->sink)
 
+#define GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES \
+  gst_vaapi_plugin_base_init_interfaces(g_define_type_id);
+
 #define GST_VAAPI_PLUGIN_BASE_DISPLAY(plugin) \
   (GST_VAAPI_PLUGIN_BASE(plugin)->display)
 #define GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(plugin) \
@@ -107,11 +110,16 @@ struct _GstVaapiPluginBaseClass
     GstVideoSinkClass sink;
   } parent_class;
 
+  gboolean  (*has_interface) (GstVaapiPluginBase * plugin, GType type);
   void (*display_changed) (GstVaapiPluginBase * plugin);
 };
 
 G_GNUC_INTERNAL
 void
+gst_vaapi_plugin_base_init_interfaces (GType type);
+
+G_GNUC_INTERNAL
+void
 gst_vaapi_plugin_base_class_init (GstVaapiPluginBaseClass * klass);
 
 G_GNUC_INTERNAL
diff --git a/gst/vaapi/gstvaapipostproc.c b/gst/vaapi/gstvaapipostproc.c
index f269b70..36afd2d 100755
--- a/gst/vaapi/gstvaapipostproc.c
+++ b/gst/vaapi/gstvaapipostproc.c
@@ -89,24 +89,6 @@ static GstStaticPadTemplate gst_vaapipostproc_src_factory =
         GST_PAD_ALWAYS,
         GST_STATIC_CAPS(gst_vaapipostproc_src_caps_str));
 
-/* GstImplementsInterface interface */
-#if !GST_CHECK_VERSION(1,0,0)
-static gboolean
-gst_vaapipostproc_implements_interface_supported(
-    GstImplementsInterface *iface,
-    GType                   type
-)
-{
-    return (type == GST_TYPE_VIDEO_CONTEXT);
-}
-
-static void
-gst_vaapipostproc_implements_iface_init(GstImplementsInterfaceClass *iface)
-{
-    iface->supported = gst_vaapipostproc_implements_interface_supported;
-}
-#endif
-
 /* GstVideoContext interface */
 #if !GST_CHECK_VERSION(1,1,0)
 static void
@@ -137,10 +119,7 @@ G_DEFINE_TYPE_WITH_CODE(
     GstVaapiPostproc,
     gst_vaapipostproc,
     GST_TYPE_BASE_TRANSFORM,
-#if !GST_CHECK_VERSION(1,0,0)
-    G_IMPLEMENT_INTERFACE(GST_TYPE_IMPLEMENTS_INTERFACE,
-                          gst_vaapipostproc_implements_iface_init);
-#endif
+    GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
 #if !GST_CHECK_VERSION(1,1,0)
     G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
                           gst_video_context_interface_init)
diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c
index fd89804..86fd91b 100644
--- a/gst/vaapi/gstvaapisink.c
+++ b/gst/vaapi/gstvaapisink.c
@@ -107,25 +107,6 @@ static GstStaticPadTemplate gst_vaapisink_sink_factory =
         GST_PAD_ALWAYS,
         GST_STATIC_CAPS(gst_vaapisink_sink_caps_str));
 
-/* GstImplementsInterface interface */
-#if !GST_CHECK_VERSION(1,0,0)
-static gboolean
-gst_vaapisink_implements_interface_supported(
-    GstImplementsInterface *iface,
-    GType                   type
-)
-{
-    return (type == GST_TYPE_VIDEO_CONTEXT ||
-            type == GST_TYPE_VIDEO_OVERLAY);
-}
-
-static void
-gst_vaapisink_implements_iface_init(GstImplementsInterfaceClass *iface)
-{
-    iface->supported = gst_vaapisink_implements_interface_supported;
-}
-#endif
-
 /* GstVideoContext interface */
 #if !GST_CHECK_VERSION(1,1,0)
 static void
@@ -143,6 +124,12 @@ gst_vaapisink_video_context_iface_init(GstVideoContextInterface *iface)
 }
 #endif
 
+static gboolean
+gst_vaapisink_has_interface(GstVaapiPluginBase *plugin, GType type)
+{
+    return type == GST_TYPE_VIDEO_OVERLAY;
+}
+
 static void
 gst_vaapisink_video_overlay_iface_init(GstVideoOverlayInterface *iface);
 
@@ -150,10 +137,7 @@ G_DEFINE_TYPE_WITH_CODE(
     GstVaapiSink,
     gst_vaapisink,
     GST_TYPE_VIDEO_SINK,
-#if !GST_CHECK_VERSION(1,0,0)
-    G_IMPLEMENT_INTERFACE(GST_TYPE_IMPLEMENTS_INTERFACE,
-                          gst_vaapisink_implements_iface_init);
-#endif
+    GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
 #if !GST_CHECK_VERSION(1,1,0)
     G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
                           gst_vaapisink_video_context_iface_init);
@@ -1489,6 +1473,7 @@ gst_vaapisink_class_init(GstVaapiSinkClass *klass)
                             GST_PLUGIN_NAME, 0, GST_PLUGIN_DESC);
 
     gst_vaapi_plugin_base_class_init(base_plugin_class);
+    base_plugin_class->has_interface    = gst_vaapisink_has_interface;
     base_plugin_class->display_changed  = gst_vaapisink_display_changed;
 
     object_class->finalize       = gst_vaapisink_finalize;
diff --git a/gst/vaapi/gstvaapiupload.c b/gst/vaapi/gstvaapiupload.c
index 25ebcd0..e74b0ca 100644
--- a/gst/vaapi/gstvaapiupload.c
+++ b/gst/vaapi/gstvaapiupload.c
@@ -68,23 +68,6 @@ static GstStaticPadTemplate gst_vaapiupload_src_factory =
         GST_PAD_ALWAYS,
         GST_STATIC_CAPS(gst_vaapiupload_vaapi_caps_str));
 
-
-/* GstImplementsInterface interface */
-static gboolean
-gst_vaapiupload_implements_interface_supported(
-    GstImplementsInterface *iface,
-    GType                   type
-)
-{
-    return (type == GST_TYPE_VIDEO_CONTEXT);
-}
-
-static void
-gst_vaapiupload_implements_iface_init(GstImplementsInterfaceClass *iface)
-{
-    iface->supported = gst_vaapiupload_implements_interface_supported;
-}
-
 /* GstVideoContext interface */
 static void
 gst_vaapiupload_set_video_context(GstVideoContext *context, const gchar *type,
@@ -110,8 +93,7 @@ G_DEFINE_TYPE_WITH_CODE(
     GstVaapiUpload,
     gst_vaapiupload,
     GST_TYPE_BASE_TRANSFORM,
-    G_IMPLEMENT_INTERFACE(GST_TYPE_IMPLEMENTS_INTERFACE,
-                          gst_vaapiupload_implements_iface_init);
+    GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
     G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
                           gst_video_context_interface_init))
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gstreamer/gstreamer-vaapi.git



More information about the Pkg-gstreamer-commits mailing list