[Pkg-gstreamer-commits] [gstreamer-vaapi] 64/176: plugins: factor out video context sharing code.
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 01a3fc44c01628ff854f10b3ee8e1f64cc9bf660
Author: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Date: Fri Dec 13 16:03:08 2013 +0100
plugins: factor out video context sharing code.
---
gst/vaapi/gstvaapidecode.c | 46 +-----------------------------------
gst/vaapi/gstvaapidownload.c | 21 +----------------
gst/vaapi/gstvaapiencode.c | 48 +-------------------------------------
gst/vaapi/gstvaapipluginbase.c | 44 +++++++++++++++++++++++++++++++++++
gst/vaapi/gstvaapipostproc.c | 53 +-----------------------------------------
gst/vaapi/gstvaapisink.c | 41 --------------------------------
gst/vaapi/gstvaapiupload.c | 26 +--------------------
7 files changed, 49 insertions(+), 230 deletions(-)
diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c
index 851659b..9cc5f78 100644
--- a/gst/vaapi/gstvaapidecode.c
+++ b/gst/vaapi/gstvaapidecode.c
@@ -35,7 +35,6 @@
#include "gstvaapidecode.h"
#include "gstvaapipluginutil.h"
-#include "gstvaapivideocontext.h"
#include "gstvaapivideobuffer.h"
#if GST_CHECK_VERSION(1,1,0) && USE_GLX
#include "gstvaapivideometa_texture.h"
@@ -95,35 +94,11 @@ static GstStaticPadTemplate gst_vaapidecode_src_factory =
GST_PAD_ALWAYS,
GST_STATIC_CAPS(gst_vaapidecode_src_caps_str));
-/* GstVideoContext interface */
-#if !GST_CHECK_VERSION(1,1,0)
-static void
-gst_vaapidecode_set_video_context(GstVideoContext *context, const gchar *type,
- const GValue *value)
-{
- GstVaapiDecode *decode = GST_VAAPIDECODE (context);
- gst_vaapi_set_display (type, value, &GST_VAAPI_PLUGIN_BASE_DISPLAY(decode));
-}
-
-static void
-gst_video_context_interface_init(GstVideoContextInterface *iface)
-{
- iface->set_context = gst_vaapidecode_set_video_context;
-}
-
-#define GstVideoContextClass GstVideoContextInterface
-#endif
-
G_DEFINE_TYPE_WITH_CODE(
GstVaapiDecode,
gst_vaapidecode,
GST_TYPE_VIDEO_DECODER,
- 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)
-#endif
- )
+ GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES)
static gboolean
gst_vaapidecode_update_src_caps(GstVaapiDecode *decode,
@@ -564,21 +539,6 @@ error_create_pool:
}
#endif
-#if GST_CHECK_VERSION(1,1,0)
-static void
-gst_vaapidecode_set_context(GstElement *element, GstContext *context)
-{
- GstVaapiDecode * const decode = GST_VAAPIDECODE(element);
- GstVaapiDisplay *display = NULL;
-
- if (gst_vaapi_video_context_get_display(context, &display)) {
- GST_INFO_OBJECT(element, "set display %p", display);
- GST_VAAPI_PLUGIN_BASE_DISPLAY_REPLACE(decode, display);
- gst_vaapi_display_unref(display);
- }
-}
-#endif
-
static inline gboolean
gst_vaapidecode_ensure_display(GstVaapiDecode *decode)
{
@@ -833,10 +793,6 @@ gst_vaapidecode_class_init(GstVaapiDecodeClass *klass)
GST_DEBUG_FUNCPTR(gst_vaapidecode_decide_allocation);
#endif
-#if GST_CHECK_VERSION(1,1,0)
- element_class->set_context = GST_DEBUG_FUNCPTR(gst_vaapidecode_set_context);
-#endif
-
gst_element_class_set_static_metadata(element_class,
"VA-API decoder",
"Codec/Decoder/Video",
diff --git a/gst/vaapi/gstvaapidownload.c b/gst/vaapi/gstvaapidownload.c
index a7bb9f2..ff2a25a 100644
--- a/gst/vaapi/gstvaapidownload.c
+++ b/gst/vaapi/gstvaapidownload.c
@@ -32,7 +32,6 @@
#include "gst/vaapi/sysdeps.h"
#include <gst/gst.h>
#include <gst/video/video.h>
-#include <gst/video/videocontext.h>
#include "gstvaapidownload.h"
#include "gstvaapipluginutil.h"
@@ -91,29 +90,11 @@ struct _GstVaapiDownloadClass {
GstVaapiPluginBaseClass parent_class;
};
-/* GstVideoContext interface */
-static void
-gst_vaapidownload_set_video_context(GstVideoContext *context, const gchar *type,
- const GValue *value)
-{
- GstVaapiDownload *download = GST_VAAPIDOWNLOAD (context);
- gst_vaapi_set_display (type, value, &GST_VAAPI_PLUGIN_BASE_DISPLAY(download));
-}
-
-static void
-gst_video_context_interface_init(GstVideoContextInterface *iface)
-{
- iface->set_context = gst_vaapidownload_set_video_context;
-}
-
-#define GstVideoContextClass GstVideoContextInterface
G_DEFINE_TYPE_WITH_CODE(
GstVaapiDownload,
gst_vaapidownload,
GST_TYPE_BASE_TRANSFORM,
- GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
- G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
- gst_video_context_interface_init))
+ GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES)
static gboolean
gst_vaapidownload_start(GstBaseTransform *trans);
diff --git a/gst/vaapi/gstvaapiencode.c b/gst/vaapi/gstvaapiencode.c
index b4d49ef..87fadc0 100644
--- a/gst/vaapi/gstvaapiencode.c
+++ b/gst/vaapi/gstvaapiencode.c
@@ -23,7 +23,6 @@
#include <gst/vaapi/gstvaapivalue.h>
#include <gst/vaapi/gstvaapidisplay.h>
#include "gstvaapiencode.h"
-#include "gstvaapivideocontext.h"
#include "gstvaapipluginutil.h"
#include "gstvaapivideometa.h"
#if GST_CHECK_VERSION(1,0,0)
@@ -42,47 +41,9 @@
GST_DEBUG_CATEGORY_STATIC (gst_vaapiencode_debug);
#define GST_CAT_DEFAULT gst_vaapiencode_debug
-/* GstContext interface */
-#if GST_CHECK_VERSION(1,1,0)
-static void
-gst_vaapiencode_set_context (GstElement * element, GstContext * context)
-{
- GstVaapiEncode *const encode = GST_VAAPIENCODE_CAST (element);
- GstVaapiDisplay *display = NULL;
-
- if (gst_vaapi_video_context_get_display (context, &display)) {
- GST_INFO_OBJECT (element, "set display %p", display);
- GST_VAAPI_PLUGIN_BASE_DISPLAY_REPLACE (encode, display);
- gst_vaapi_display_unref (display);
- }
-}
-#else
-static void
-gst_vaapiencode_set_video_context (GstVideoContext * context,
- const gchar * type, const GValue * value)
-{
- GstVaapiEncode *const encode = GST_VAAPIENCODE_CAST (context);
-
- gst_vaapi_set_display (type, value, &GST_VAAPI_PLUGIN_BASE_DISPLAY (encode));
-}
-
-static void
-gst_video_context_interface_init (GstVideoContextInterface * iface)
-{
- iface->set_context = gst_vaapiencode_set_video_context;
-}
-
-#define GstVideoContextClass GstVideoContextInterface
-#endif
-
G_DEFINE_TYPE_WITH_CODE (GstVaapiEncode,
gst_vaapiencode, GST_TYPE_VIDEO_ENCODER,
- 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)
-#endif
- )
+ GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES)
enum
{
@@ -917,9 +878,6 @@ static void
gst_vaapiencode_class_init (GstVaapiEncodeClass * klass)
{
GObjectClass *const object_class = G_OBJECT_CLASS (klass);
-#if GST_CHECK_VERSION(1,1,0)
- GstElementClass *const element_class = GST_ELEMENT_CLASS (klass);
-#endif
GstVideoEncoderClass *const venc_class = GST_VIDEO_ENCODER_CLASS (klass);
GST_DEBUG_CATEGORY_INIT (gst_vaapiencode_debug,
@@ -931,10 +889,6 @@ gst_vaapiencode_class_init (GstVaapiEncodeClass * klass)
object_class->set_property = gst_vaapiencode_set_property;
object_class->get_property = gst_vaapiencode_get_property;
-#if GST_CHECK_VERSION(1,1,0)
- element_class->set_context = GST_DEBUG_FUNCPTR (gst_vaapiencode_set_context);
-#endif
-
venc_class->open = GST_DEBUG_FUNCPTR (gst_vaapiencode_open);
venc_class->close = GST_DEBUG_FUNCPTR (gst_vaapiencode_close);
venc_class->set_format = GST_DEBUG_FUNCPTR (gst_vaapiencode_set_format);
diff --git a/gst/vaapi/gstvaapipluginbase.c b/gst/vaapi/gstvaapipluginbase.c
index 35fadf5..09e6b4b 100644
--- a/gst/vaapi/gstvaapipluginbase.c
+++ b/gst/vaapi/gstvaapipluginbase.c
@@ -25,6 +25,7 @@
#include "gst/vaapi/sysdeps.h"
#include "gstvaapipluginbase.h"
#include "gstvaapipluginutil.h"
+#include "gstvaapivideocontext.h"
/* Default debug category is from the subclass */
#define GST_CAT_DEFAULT (plugin->debug_category)
@@ -36,6 +37,8 @@ implements_interface_supported (GstImplementsInterface * iface, GType type)
{
GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (iface);
+ if (type == GST_TYPE_VIDEO_CONTEXT)
+ return TRUE;
return GST_VAAPI_PLUGIN_BASE_GET_CLASS (plugin)->has_interface (plugin, type);
}
@@ -46,6 +49,39 @@ implements_interface_init (GstImplementsInterfaceClass * iface)
}
#endif
+/* GstVideoContext interface */
+#if GST_CHECK_VERSION(1,1,0)
+static void
+plugin_set_context (GstElement * element, GstContext * context)
+{
+ GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (element);
+ GstVaapiDisplay *display = NULL;
+
+ if (gst_vaapi_video_context_get_display (context, &display)) {
+ GST_INFO_OBJECT (element, "set display %p", display);
+ gst_vaapi_display_replace (&plugin->display, display);
+ gst_vaapi_display_unref (display);
+ }
+}
+#else
+static void
+plugin_set_context (GstVideoContext * context, const gchar * type,
+ const GValue * value)
+{
+ GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (context);
+
+ gst_vaapi_set_display (type, value, &plugin->display);
+}
+
+static void
+video_context_interface_init (GstVideoContextInterface * iface)
+{
+ iface->set_context = plugin_set_context;
+}
+
+#define GstVideoContextClass GstVideoContextInterface
+#endif
+
void
gst_vaapi_plugin_base_init_interfaces (GType g_define_type_id)
{
@@ -53,6 +89,9 @@ gst_vaapi_plugin_base_init_interfaces (GType g_define_type_id)
G_IMPLEMENT_INTERFACE (GST_TYPE_IMPLEMENTS_INTERFACE,
implements_interface_init);
#endif
+#if !GST_CHECK_VERSION(1,1,0)
+ G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_CONTEXT, video_context_interface_init);
+#endif
}
static gboolean
@@ -71,6 +110,11 @@ gst_vaapi_plugin_base_class_init (GstVaapiPluginBaseClass * klass)
{
klass->has_interface = default_has_interface;
klass->display_changed = default_display_changed;
+
+#if GST_CHECK_VERSION(1,1,0)
+ GstElementClass *const element_class = GST_ELEMENT_CLASS (klass);
+ element_class->set_context = GST_DEBUG_FUNCPTR (plugin_set_context);
+#endif
}
void
diff --git a/gst/vaapi/gstvaapipostproc.c b/gst/vaapi/gstvaapipostproc.c
index 36afd2d..700c55e 100755
--- a/gst/vaapi/gstvaapipostproc.c
+++ b/gst/vaapi/gstvaapipostproc.c
@@ -34,7 +34,6 @@
#include "gstvaapipostproc.h"
#include "gstvaapipluginutil.h"
-#include "gstvaapivideocontext.h"
#include "gstvaapivideobuffer.h"
#if GST_CHECK_VERSION(1,0,0)
#include "gstvaapivideobufferpool.h"
@@ -89,42 +88,11 @@ static GstStaticPadTemplate gst_vaapipostproc_src_factory =
GST_PAD_ALWAYS,
GST_STATIC_CAPS(gst_vaapipostproc_src_caps_str));
-/* GstVideoContext interface */
-#if !GST_CHECK_VERSION(1,1,0)
-static void
-gst_vaapipostproc_set_video_context(
- GstVideoContext *context,
- const gchar *type,
- const GValue *value
-)
-{
- GstVaapiPostproc * const postproc = GST_VAAPIPOSTPROC(context);
-
- gst_vaapi_set_display(type, value, &GST_VAAPI_PLUGIN_BASE_DISPLAY(postproc));
-
- if (postproc->uploader)
- gst_vaapi_uploader_ensure_display(postproc->uploader, GST_VAAPI_PLUGIN_BASE_DISPLAY(postproc));
-}
-
-static void
-gst_video_context_interface_init(GstVideoContextInterface *iface)
-{
- iface->set_context = gst_vaapipostproc_set_video_context;
-}
-
-#define GstVideoContextClass GstVideoContextInterface
-#endif
-
G_DEFINE_TYPE_WITH_CODE(
GstVaapiPostproc,
gst_vaapipostproc,
GST_TYPE_BASE_TRANSFORM,
- 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)
-#endif
- )
+ GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES)
enum {
PROP_0,
@@ -233,21 +201,6 @@ find_filter_op(GPtrArray *filter_ops, GstVaapiFilterOp op)
return NULL;
}
-#if GST_CHECK_VERSION(1,1,0)
-static void
-gst_vaapipostproc_set_context(GstElement *element, GstContext *context)
-{
- GstVaapiPostproc * const postproc = GST_VAAPIPOSTPROC(element);
- GstVaapiDisplay *display = NULL;
-
- if (gst_vaapi_video_context_get_display(context, &display)) {
- GST_INFO_OBJECT(element, "set display %p", display);
- GST_VAAPI_PLUGIN_BASE_DISPLAY_REPLACE(postproc, display);
- gst_vaapi_display_unref(display);
- }
-}
-#endif
-
static inline gboolean
gst_vaapipostproc_ensure_display(GstVaapiPostproc *postproc)
{
@@ -1627,10 +1580,6 @@ gst_vaapipostproc_class_init(GstVaapiPostprocClass *klass)
trans_class->prepare_output_buffer =
gst_vaapipostproc_prepare_output_buffer;
-#if GST_CHECK_VERSION(1,1,0)
- element_class->set_context = gst_vaapipostproc_set_context;
-#endif
-
gst_element_class_set_static_metadata(element_class,
"VA-API video postprocessing",
"Filter/Converter/Video",
diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c
index 86fd91b..2f081df 100644
--- a/gst/vaapi/gstvaapisink.c
+++ b/gst/vaapi/gstvaapisink.c
@@ -71,7 +71,6 @@
#include "gstvaapisink.h"
#include "gstvaapipluginutil.h"
-#include "gstvaapivideocontext.h"
#include "gstvaapivideometa.h"
#if GST_CHECK_VERSION(1,0,0)
#include "gstvaapivideobufferpool.h"
@@ -107,23 +106,6 @@ static GstStaticPadTemplate gst_vaapisink_sink_factory =
GST_PAD_ALWAYS,
GST_STATIC_CAPS(gst_vaapisink_sink_caps_str));
-/* GstVideoContext interface */
-#if !GST_CHECK_VERSION(1,1,0)
-static void
-gst_vaapisink_set_video_context(GstVideoContext *context, const gchar *type,
- const GValue *value)
-{
- GstVaapiSink *sink = GST_VAAPISINK (context);
- gst_vaapi_set_display (type, value, &GST_VAAPI_PLUGIN_BASE_DISPLAY(sink));
-}
-
-static void
-gst_vaapisink_video_context_iface_init(GstVideoContextInterface *iface)
-{
- iface->set_context = gst_vaapisink_set_video_context;
-}
-#endif
-
static gboolean
gst_vaapisink_has_interface(GstVaapiPluginBase *plugin, GType type)
{
@@ -138,10 +120,6 @@ G_DEFINE_TYPE_WITH_CODE(
gst_vaapisink,
GST_TYPE_VIDEO_SINK,
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);
-#endif
G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_OVERLAY,
gst_vaapisink_video_overlay_iface_init))
@@ -1342,21 +1320,6 @@ gst_vaapisink_buffer_alloc(
}
#endif
-#if GST_CHECK_VERSION(1,1,0)
-static void
-gst_vaapisink_set_context(GstElement *element, GstContext *context)
-{
- GstVaapiSink * const sink = GST_VAAPISINK(element);
- GstVaapiDisplay *display = NULL;
-
- if (gst_vaapi_video_context_get_display(context, &display)) {
- GST_INFO_OBJECT(element, "set display %p", display);
- GST_VAAPI_PLUGIN_BASE_DISPLAY_REPLACE(sink, display);
- gst_vaapi_display_unref(display);
- }
-}
-#endif
-
static gboolean
gst_vaapisink_query(GstBaseSink *base_sink, GstQuery *query)
{
@@ -1493,10 +1456,6 @@ gst_vaapisink_class_init(GstVaapiSinkClass *klass)
basesink_class->buffer_alloc = gst_vaapisink_buffer_alloc;
#endif
-#if GST_CHECK_VERSION(1,1,0)
- element_class->set_context = gst_vaapisink_set_context;
-#endif
-
gst_element_class_set_static_metadata(element_class,
"VA-API sink",
"Sink/Video",
diff --git a/gst/vaapi/gstvaapiupload.c b/gst/vaapi/gstvaapiupload.c
index e74b0ca..d4b52b7 100644
--- a/gst/vaapi/gstvaapiupload.c
+++ b/gst/vaapi/gstvaapiupload.c
@@ -33,7 +33,6 @@
#include "gst/vaapi/sysdeps.h"
#include <gst/gst.h>
#include <gst/video/video.h>
-#include <gst/video/videocontext.h>
#include "gstvaapiupload.h"
#include "gstvaapipluginutil.h"
@@ -68,34 +67,11 @@ static GstStaticPadTemplate gst_vaapiupload_src_factory =
GST_PAD_ALWAYS,
GST_STATIC_CAPS(gst_vaapiupload_vaapi_caps_str));
-/* GstVideoContext interface */
-static void
-gst_vaapiupload_set_video_context(GstVideoContext *context, const gchar *type,
- const GValue *value)
-{
- GstVaapiUpload * const upload = GST_VAAPIUPLOAD(context);
-
- gst_vaapi_set_display(type, value, &GST_VAAPI_PLUGIN_BASE_DISPLAY(upload));
-
- if (upload->uploader)
- gst_vaapi_uploader_ensure_display(upload->uploader,
- GST_VAAPI_PLUGIN_BASE_DISPLAY(upload));
-}
-
-static void
-gst_video_context_interface_init(GstVideoContextInterface *iface)
-{
- iface->set_context = gst_vaapiupload_set_video_context;
-}
-
-#define GstVideoContextClass GstVideoContextInterface
G_DEFINE_TYPE_WITH_CODE(
GstVaapiUpload,
gst_vaapiupload,
GST_TYPE_BASE_TRANSFORM,
- GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES
- G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
- gst_video_context_interface_init))
+ GST_VAAPI_PLUGIN_BASE_INIT_INTERFACES)
static gboolean
gst_vaapiupload_start(GstBaseTransform *trans);
--
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