diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2013-12-19 10:39:50 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2013-12-19 10:42:26 +0100 |
commit | 163a4c8740f20bb0b602223b1877b97885eafc5c (patch) | |
tree | 080a9855122d84d26a09856bde8f41e9a230822c | |
parent | 1df60be1de0b15dea13ce0d6a7232ded26fbc83e (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.ac | 4 | ||||
-rw-r--r-- | src/examples/ecore/Makefile.examples | 9 | ||||
-rw-r--r-- | src/examples/ecore/ecore_pipe_gstreamer_example.c | 18 |
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); } |