summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2013-12-19 10:39:50 +0100
committerSebastian Dröge <sebastian@centricular.com>2013-12-19 10:42:26 +0100
commit163a4c8740f20bb0b602223b1877b97885eafc5c (patch)
tree080a9855122d84d26a09856bde8f41e9a230822c
parent1df60be1de0b15dea13ce0d6a7232ded26fbc83e (diff)
Port ecore example to GStreamer 1.0
Still falls back to GStreamer 0.10 automatically if 1.0 is not available
-rw-r--r--configure.ac4
-rw-r--r--src/examples/ecore/Makefile.examples9
-rw-r--r--src/examples/ecore/ecore_pipe_gstreamer_example.c18
3 files changed, 26 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index 788d39224..082ffb534 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1883,9 +1883,11 @@ fi
# not EFL_OPTIONAL_DEPEND_PKG() because it's only used for ecore examples
if test "${want_gstreamer}" = "yes"; then
- PKG_CHECK_MODULES([GSTREAMER], [gstreamer-0.10])
+ have_gstreamer_1="no"
+ PKG_CHECK_MODULES([GSTREAMER], [gstreamer-1.0], [have_gstreamer_1="yes"], [PKG_CHECK_MODULES([GSTREAMER], [gstreamer-0.10])])
fi
AM_CONDITIONAL([HAVE_GSTREAMER], [test "${want_gstreamer}" = "yes"])
+AM_CONDITIONAL([HAVE_GSTREAMER_1], [test "${have_gstreamer_1}" = "yes"])
EFL_EVAL_PKGS([ECORE])
diff --git a/src/examples/ecore/Makefile.examples b/src/examples/ecore/Makefile.examples
index f8ac82d50..63e5f6b79 100644
--- a/src/examples/ecore/Makefile.examples
+++ b/src/examples/ecore/Makefile.examples
@@ -1,6 +1,13 @@
CC=gcc
+
+if HAVE_GSTREAMER_1
+ GSTREAMER_DEP="gstreamer-1.0"
+else
+ GSTREAMER_DEP="gstreamer-0.10"
+endif
+
COMMON_FLAGS=`pkg-config --libs --cflags eina,ecore,evas,ecore-evas,ecore-audio,ecore-con,ecore-file, \
- eo,evas-software-buffer,gnutls,ecore-imf,ecore-imf-evas,gstreamer-0.10` -lm
+ eo,evas-software-buffer,gnutls,ecore-imf,ecore-imf-evas,$(GSTREAMER_DEP)` -lm
EXAMPLES= ecore_animator_example \
ecore_audio_custom \
diff --git a/src/examples/ecore/ecore_pipe_gstreamer_example.c b/src/examples/ecore/ecore_pipe_gstreamer_example.c
index 008b96e5d..20d3fa116 100644
--- a/src/examples/ecore/ecore_pipe_gstreamer_example.c
+++ b/src/examples/ecore/ecore_pipe_gstreamer_example.c
@@ -1,4 +1,6 @@
//Compile with:
+// gcc -o ecore_pipe_gstreamer_example ecore_pipe_gstreamer_example.c `pkg-config --libs --cflags ecore gstreamer-1.0`
+// or
// gcc -o ecore_pipe_gstreamer_example ecore_pipe_gstreamer_example.c `pkg-config --libs --cflags ecore gstreamer-0.10`
#include <gst/gst.h>
@@ -98,23 +100,33 @@ new_decoded_pad_cb(GstElement *demuxer,
GstElement *decoder;
GstPad *pad;
GstCaps *caps;
- gchar *str;
+ GstStructure *s;
+ const gchar *str;
+#if GST_CHECK_VERSION(1,0,0)
+ caps = gst_pad_get_current_caps(new_pad);
+#else
caps = gst_pad_get_caps(new_pad);
- str = gst_caps_to_string(caps);
+#endif
+ s = gst_caps_get_structure(caps, 0);
+ str = gst_structure_get_name(s);
if (g_str_has_prefix(str, "video/"))
{
decoder = GST_ELEMENT(user_data);
+#if GST_CHECK_VERSION(1,0,0)
+ pad = gst_element_get_static_pad(decoder, "sink");
+#else
pad = gst_element_get_pad(decoder, "sink");
+#endif
if (GST_PAD_LINK_FAILED(gst_pad_link(new_pad, pad)))
{
g_warning("Failed to link %s:%s to %s:%s", GST_DEBUG_PAD_NAME(new_pad),
GST_DEBUG_PAD_NAME(pad));
}
+ gst_object_unref(pad);
}
- g_free(str);
gst_caps_unref(caps);
}