summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2013-04-15 11:24:04 +0200
committerLionel Landwerlin <llandwerlin@gmail.com>2013-04-23 18:10:39 +0100
commita02ee9a4bcb9be06491258d3dedec10bd2d08a2c (patch)
treec76f5124cf2d740ced3562ff0dcfbaf91e812f06
parentdcdbbeb7b1bfa13c7438cd7004b6f7885b76901e (diff)
downloadclutter-gst-a02ee9a4bcb9be06491258d3dedec10bd2d08a2c.tar.gz
Add HW decoder support back.
-rw-r--r--clutter-gst/clutter-gst-video-sink.c12
-rw-r--r--configure.ac17
2 files changed, 15 insertions, 14 deletions
diff --git a/clutter-gst/clutter-gst-video-sink.c b/clutter-gst/clutter-gst-video-sink.c
index 347329d..1a93f8f 100644
--- a/clutter-gst/clutter-gst-video-sink.c
+++ b/clutter-gst/clutter-gst-video-sink.c
@@ -357,6 +357,9 @@ clutter_gst_parse_caps (GstCaps * caps,
format = CLUTTER_GST_RGB32;
bgr = TRUE;
break;
+ case GST_VIDEO_FORMAT_ENCODED:
+ format = CLUTTER_GST_SURFACE;
+ break;
default:
goto unhandled_format;
}
@@ -1088,13 +1091,13 @@ clutter_gst_hw_deinit (ClutterGstVideoSink * sink)
priv->converter = NULL;
}
-static void
+static gboolean
clutter_gst_hw_upload (ClutterGstVideoSink * sink, GstBuffer * buffer)
{
ClutterGstVideoSinkPrivate *priv = sink->priv;
GstSurfaceMeta *surface = gst_buffer_get_surface_meta (buffer);
- g_return_if_fail (surface != NULL);
+ g_return_val_if_fail (surface != NULL, FALSE);
if (G_UNLIKELY (priv->converter == NULL)) {
CoglHandle tex;
@@ -1110,20 +1113,21 @@ clutter_gst_hw_upload (ClutterGstVideoSink * sink, GstBuffer * buffer)
priv->converter =
gst_surface_meta_create_converter (surface, "opengl", &value);
- g_return_if_fail (priv->converter);
+ g_return_val_if_fail (priv->converter, FALSE);
}
gst_surface_converter_upload (priv->converter, buffer);
/* The texture is dirty, schedule a redraw */
clutter_actor_queue_redraw (CLUTTER_ACTOR (priv->texture));
+ return TRUE;
}
static ClutterGstRenderer hw_renderer = {
"HW surface",
CLUTTER_GST_SURFACE,
0,
- GST_STATIC_CAPS ("x-video/surface, opengl=true"),
+ GST_STATIC_CAPS ("video/x-surface, opengl=true"),
clutter_gst_hw_init,
clutter_gst_hw_deinit,
clutter_gst_hw_upload,
diff --git a/configure.ac b/configure.ac
index 1b38725..6e13c84 100644
--- a/configure.ac
+++ b/configure.ac
@@ -209,16 +209,13 @@ AS_IF([test "x$have_cogl_osx" = xyes],
dnl ========================================================================
dnl Experimental support for hardware accelerated decoders.
-dnl Temporarily disabling for GStreamer 1.0 since it's causing too many issues
-dnl and the API for hw support isn't yet put in stone
-have_hw_decoder_support=no
-# PKG_CHECK_MODULES(HW,
-# [gstreamer-basevideo-$GST_MAJORMINOR >= $GST_PLUGINS_BAD_REQ_VERSION],
-# [
-# have_hw_decoder_support=yes
-# AC_DEFINE([HAVE_HW_DECODER_SUPPORT], [1],
-# ["Defined if building Clutter with HW decoder support"])
-# ],[ have_hw_decoder_support=no ])
+PKG_CHECK_MODULES(HW,
+ [gstreamer-basevideo-$GST_MAJORMINOR >= $GST_PLUGINS_BAD_REQ_VERSION],
+ [
+ have_hw_decoder_support=yes
+ AC_DEFINE([HAVE_HW_DECODER_SUPPORT], [1],
+ ["Defined if building Clutter with HW decoder support"])
+ ],[ have_hw_decoder_support=no ])
dnl ========================================================================