[tracker] tracker-extract: Remove obsolete GStreamer fallbacks
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] tracker-extract: Remove obsolete GStreamer fallbacks
- Date: Tue, 18 Mar 2014 17:10:42 +0000 (UTC)
commit 93866423c6a0e37bf18179299d2f989bf76bb07d
Author: Bastien Nocera <hadess hadess net>
Date: Tue Mar 18 15:26:52 2014 +0100
tracker-extract: Remove obsolete GStreamer fallbacks
Remove the tagbin and decodebin2 GStreamer fallback backends,
GstDiscoverer is easier to use, and less prone to problems.
https://bugzilla.gnome.org/show_bug.cgi?id=726639
configure.ac | 10 +-
src/tracker-extract/tracker-extract-gstreamer.c | 584 +----------------------
2 files changed, 2 insertions(+), 592 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 175b906..a249bdd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1641,7 +1641,7 @@ fi
AC_ARG_WITH([gstreamer-backend],
AS_HELP_STRING([--with-gstreamer-backend],
- [enables one of the (gupnp-dlna, discoverer, decodebin2, tagreadbin) GStreamer
backends [[default=discoverer]]]),,
+ [enables one of the (gupnp-dlna, discoverer) GStreamer backends
[[default=discoverer]]]),,
[with_gstreamer_backend=discoverer])
if test "$have_generic_media_handler_app" != "GStreamer"; then
@@ -1649,14 +1649,6 @@ if test "$have_generic_media_handler_app" != "GStreamer"; then
gstreamer_backend="N/A"
else
case "x$with_gstreamer_backend" in
- "xdecodebin2")
- gstreamer_backend="Decodebin2"
- AC_DEFINE(GSTREAMER_BACKEND_DECODEBIN2, [], [Define that GStreamer Decodebin2 should be used])
- ;;
- "xtagreadbin")
- gstreamer_backend="Tagreadbin"
- AC_DEFINE(GSTREAMER_BACKEND_TAGREADBIN, [], [Define that GStreamer Tagreadbin should be used])
- ;;
"xdiscoverer")
PKG_CHECK_MODULES(GSTREAMER_PBUTILS,
[gstreamer-pbutils-1.0 >= $GSTREAMER_REQUIRED],
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index 441c287..ca03d1f 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -22,9 +22,7 @@
#include "config.h"
/* Ensure we have a valid backend enabled */
-#if !defined(GSTREAMER_BACKEND_TAGREADBIN) && \
- !defined(GSTREAMER_BACKEND_DECODEBIN2) && \
- !defined(GSTREAMER_BACKEND_DISCOVERER) && \
+#if !defined(GSTREAMER_BACKEND_DISCOVERER) && \
!defined(GSTREAMER_BACKEND_GUPNP_DLNA)
#error Not a valid GStreamer backend defined
#endif
@@ -122,17 +120,6 @@ typedef struct {
GstSample *sample;
GstMapInfo info;
-#if defined(GSTREAMER_BACKEND_TAGREADBIN) || \
- defined(GSTREAMER_BACKEND_DECODEBIN2)
- GstElement *pipeline;
- GstBus *bus;
-#endif
-
-#if defined(GSTREAMER_BACKEND_DECODEBIN2)
- GstElement *bin;
- GList *fsinks;
-#endif
-
#if defined(GSTREAMER_BACKEND_DISCOVERER) || \
defined(GSTREAMER_BACKEND_GUPNP_DLNA)
gboolean has_image;
@@ -152,7 +139,6 @@ typedef struct {
#endif
#if defined(GSTREAMER_BACKEND_DISCOVERER) || \
- defined(GSTREAMER_BACKEND_DECODEBIN2) || \
defined(GSTREAMER_BACKEND_GUPNP_DLNA)
gint64 duration;
gint audio_channels;
@@ -164,15 +150,9 @@ typedef struct {
#endif
} MetadataExtractor;
-#if defined(GSTREAMER_BACKEND_TAGREADBIN)
-static void tagreadbin_extract_stream_metadata (MetadataExtractor *extractor,
- const gchar *uri,
- TrackerSparqlBuilder *metadata);
-#else /* DECODEBIN2/DISCOVERER/GUPnP-DLNA */
static void common_extract_stream_metadata (MetadataExtractor *extractor,
const gchar *uri,
TrackerSparqlBuilder *metadata);
-#endif /* DECODEBIN2/DISCOVERER/GUPnP-DLNA */
static void
add_artist (MetadataExtractor *extractor,
@@ -644,27 +624,6 @@ extractor_apply_geolocation_metadata (MetadataExtractor *extractor,
static void
extractor_guess_content_type (MetadataExtractor *extractor)
{
-#if defined(GSTREAMER_BACKEND_TAGREADBIN) || \
- defined(GSTREAMER_BACKEND_DECODEBIN2)
- char *video_codec = NULL, *audio_codec = NULL;
-
- gst_tag_list_get_string (extractor->tagcache, GST_TAG_VIDEO_CODEC, &video_codec);
- gst_tag_list_get_string (extractor->tagcache, GST_TAG_AUDIO_CODEC, &audio_codec);
-
- g_debug ("Reading codecs from the stream... audio: '%s', video: '%s'",
- audio_codec ? audio_codec : "none",
- video_codec ? video_codec : "none");
-
- if (audio_codec && !video_codec) {
- extractor->mime = EXTRACT_MIME_AUDIO;
- } else {
- /* default to video */
- extractor->mime = EXTRACT_MIME_VIDEO;
- }
-
- g_free (video_codec);
- g_free (audio_codec);
-#else /* DISCOVERER/GUPNP-DLNA... */
if (extractor->has_video) {
extractor->mime = EXTRACT_MIME_VIDEO;
} else if (extractor->has_audio) {
@@ -675,7 +634,6 @@ extractor_guess_content_type (MetadataExtractor *extractor)
/* default to video */
extractor->mime = EXTRACT_MIME_VIDEO;
}
-#endif /* DISCOVERER/GUPNP-DLNA... */
}
static void
@@ -1282,21 +1240,9 @@ extract_metadata (MetadataExtractor *extractor,
}
/* If content was encrypted, set it. */
-#if defined(GSTREAMER_BACKEND_TAGREADBIN) || \
- defined(GSTREAMER_BACKEND_DECODEBIN2)
- if (extractor->is_content_encrypted) {
- tracker_sparql_builder_predicate (metadata, "nfo:isContentEncrypted");
- tracker_sparql_builder_object_boolean (metadata, TRUE);
- }
-#else
/* #warning TODO: handle encrypted content with the Discoverer/GUPnP-DLNA backends */
-#endif
-#if defined(GSTREAMER_BACKEND_TAGREADBIN)
- tagreadbin_extract_stream_metadata (extractor, file_url, metadata);
-#else /* DECODEBIN2/DISCOVERER/GUPnP-DLNA */
common_extract_stream_metadata (extractor, file_url, metadata);
-#endif /* DECODEBIN2/DISCOVERER/GUPnP-DLNA */
#ifdef HAVE_LIBMEDIAART
if (extractor->mime == EXTRACT_MIME_AUDIO) {
@@ -1306,7 +1252,6 @@ extract_metadata (MetadataExtractor *extractor,
}
#if defined(GSTREAMER_BACKEND_DISCOVERER) || \
- defined(GSTREAMER_BACKEND_DECODEBIN2) || \
defined(GSTREAMER_BACKEND_GUPNP_DLNA)
static void
common_extract_stream_metadata (MetadataExtractor *extractor,
@@ -1529,518 +1474,6 @@ discoverer_init_and_run (MetadataExtractor *extractor,
#endif /* defined(GSTREAMER_BACKEND_DISCOVERER) || \
defined(GSTREAMER_BACKEND_GUPNP_DLNA) */
-/* --------------- Common Tagreadbin and Decodebin2 implementation ---------- */
-
-#if defined(GSTREAMER_BACKEND_TAGREADBIN) || \
- defined(GSTREAMER_BACKEND_DECODEBIN2)
-
-static void
-pipeline_shutdown (MetadataExtractor *extractor)
-{
- gst_element_set_state (extractor->pipeline, GST_STATE_NULL);
- gst_element_get_state (extractor->pipeline, NULL, NULL, TRACKER_EXTRACT_GUARD_TIMEOUT* GST_SECOND);
- gst_object_unref (extractor->bus);
- gst_object_unref (GST_OBJECT (extractor->pipeline));
-}
-
-static gboolean
-pipeline_poll_for_ready (MetadataExtractor *extractor,
- GstState state,
- gboolean ready_with_state,
- gboolean ready_with_eos)
-{
- gint64 timeout = 5 * GST_SECOND;
- GstBus *bus = extractor->bus;
- GstTagList *new_tags;
-
- gst_element_set_state (extractor->pipeline, state);
-
- while (TRUE) {
- GstMessage *message;
- GstElement *src;
-
- message = gst_bus_timed_pop (bus, timeout);
-
- if (!message) {
- g_warning ("Pipeline timed out");
- return FALSE;
- }
-
- src = (GstElement*)GST_MESSAGE_SRC (message);
-
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_STATE_CHANGED: {
- if (ready_with_state) {
- GstState old, new, pending;
-
- if (src == extractor->pipeline) {
- gst_message_parse_state_changed (message, &old, &new, &pending);
- if (new == state) {
- gst_message_unref (message);
- return TRUE;
- }
- }
- }
- break;
- }
- case GST_MESSAGE_ERROR: {
- GError *lerror = NULL;
- gchar *error_debug_message;
-
- gst_message_parse_error (message, &lerror, &error_debug_message);
-
- if (lerror->domain == GST_STREAM_ERROR) {
- if (lerror->code == GST_STREAM_ERROR_DECRYPT ||
- lerror->code == GST_STREAM_ERROR_DECRYPT_NOKEY) {
- /* Set content as being encrypted */
- extractor->is_content_encrypted = TRUE;
-
- g_message ("Encrypted stream found: '%s' (%s)",
- lerror ? lerror->message : "Unknown error",
- error_debug_message);
-
- g_free (error_debug_message);
- g_error_free (lerror);
-
- /* We really need to keep on reading as tags may come
- * afterwards, like codec tags in DRM-ed files. */
- break;
- }
- }
-
- g_warning ("Error in GStreamer: '%s' (%s)",
- lerror ? lerror->message : "Unknown error",
- error_debug_message);
-
- gst_message_unref (message);
- g_free (error_debug_message);
- g_error_free (lerror);
-
- return FALSE;
- break;
- }
- case GST_MESSAGE_EOS: {
- gst_message_unref (message);
-
- if (ready_with_eos) {
- return TRUE;
- } else {
- g_warning ("Reached end-of-file without proper content");
- return FALSE;
- }
- break;
- }
- case GST_MESSAGE_TAG: {
- gst_message_parse_tag (message, &new_tags);
- gst_tag_list_insert (extractor->tagcache, new_tags, GST_TAG_MERGE_KEEP);
- gst_tag_list_free (new_tags);
- break;
- }
- default:
- /* Nothing to do here */
- break;
- }
-
- gst_message_unref (message);
- }
-
- g_assert_not_reached ();
-
- return FALSE;
-}
-
-#endif /* defined(GSTREAMER_BACKEND_TAGREADBIN) || \
- defined(GSTREAMER_BACKEND_DECODEBIN2) */
-
-/* ----------------------- Decodebin2 specific implementation --------------- */
-
-#if defined(GSTREAMER_BACKEND_DECODEBIN2)
-
-static void
-decodebin2_unlink_fsink (void *obj,
- void *data)
-{
- MetadataExtractor *extractor = (MetadataExtractor *) data;
- GstElement *fsink = (GstElement *) obj;
-
- gst_element_unlink (extractor->bin, fsink);
- gst_bin_remove (GST_BIN (extractor->pipeline), fsink);
- gst_element_set_state (fsink, GST_STATE_NULL);
-}
-
-static void
-decodebin2_dpad_cb (GstElement *e,
- GstPad *pad,
- gboolean cont,
- gpointer data)
-{
- MetadataExtractor *extractor = (MetadataExtractor *)data;
- GstElement *fsink;
- GstPad *fsinkpad;
- GValue val = { 0, };
-
- fsink = gst_element_factory_make ("fakesink", NULL);
-
- /* We increase the preroll buffer so we get duration (one frame not enough)*/
- g_value_init (&val, G_TYPE_INT);
- g_value_set_int (&val, 51);
- g_object_set_property (G_OBJECT (fsink), "preroll-queue-len", &val);
- g_value_unset (&val);
-
- extractor->fsinks = g_list_append (extractor->fsinks, fsink);
- gst_element_set_state (fsink, GST_STATE_PAUSED);
-
- gst_bin_add (GST_BIN (extractor->pipeline), fsink);
- fsinkpad = gst_element_get_static_pad (fsink, "sink");
- gst_pad_link (pad, fsinkpad);
- gst_object_unref (fsinkpad);
-}
-
-static guint64
-decodebin2_get_media_duration (MetadataExtractor *extractor)
-{
- gint64 duration;
- GstFormat fmt;
-
- g_return_val_if_fail (extractor, -1);
- g_return_val_if_fail (extractor->pipeline, -1);
-
- fmt = GST_FORMAT_TIME;
-
- duration = -1;
-
- if (gst_element_query_duration (extractor->pipeline,
- &fmt,
- &duration) &&
- duration >= 0) {
- return duration / GST_SECOND;
- } else {
- return -1;
- }
-}
-
-static void
-decodebin2_add_stream_tag (void *obj, void *data)
-{
- MetadataExtractor *extractor = (MetadataExtractor *) data;
- GstElement *fsink = (GstElement *) obj;
-
- GstStructure *s = NULL;
- GstCaps *caps = NULL;
-
- if ((caps = GST_PAD_CAPS (fsink))) {
- s = gst_caps_get_structure (caps, 0);
-
- if (s) {
- if (g_strrstr (gst_structure_get_name (s), "audio")) {
- if ((extractor->audio_channels != -1) &&
- (extractor->audio_samplerate != -1))
- return;
-
- if (extractor->audio_channels == -1)
- gst_structure_get_int (s, "channels", &extractor->audio_channels);
-
- if (extractor->audio_samplerate == -1)
- gst_structure_get_int (s, "rate", &extractor->audio_samplerate);
- return;
- }
-
- if (g_strrstr (gst_structure_get_name (s), "video")) {
- if ((extractor->video_fps != -1) &&
- (extractor->width != -1) &&
- (extractor->height != -1) &&
- (extractor->aspect_ratio != -1)){
- return;
- }
-
- if (extractor->video_fps == -1) {
- gint video_fps_n;
- gint video_fps_d;
-
- if (gst_structure_get_fraction (s,
- "framerate",
- &video_fps_n,
- &video_fps_d)) {
- extractor->video_fps = (video_fps_n + video_fps_d / 2) /
video_fps_d;
- }
- }
-
- if (extractor->width == -1)
- gst_structure_get_int (s, "width", &extractor->width);
-
- if (extractor->height == -1)
- gst_structure_get_int (s, "height", &extractor->height);
-
- if (extractor->aspect_ratio == -1) {
- gint aspect_ratio;
-
- gst_structure_get_int (s, "pixel-aspect-ratio", &aspect_ratio);
- extractor->aspect_ratio = aspect_ratio;
- }
-
- return;
- }
-
- /* TODO: Add aspect-ratio, width and height in case of images */
- }
- }
-}
-
-static void
-decodebin2_add_stream_tags (MetadataExtractor *extractor)
-{
- extractor->duration = decodebin2_get_media_duration (extractor);
- g_list_foreach (extractor->fsinks, decodebin2_add_stream_tag, extractor);
-}
-
-static GstElement *
-decodebin2_create_pipeline (MetadataExtractor *extractor,
- const gchar *uri)
-{
- GstElement *pipeline = NULL;
- GstElement *filesrc = NULL;
- GstElement *bin = NULL;
-
- pipeline = gst_element_factory_make ("pipeline", NULL);
- if (!pipeline) {
- g_warning ("Failed to create GStreamer pipeline");
- return NULL;
- }
-
- filesrc = gst_element_factory_make ("giosrc", NULL);
- if (!filesrc) {
- g_warning ("Failed to create GStreamer giosrc");
- gst_object_unref (GST_OBJECT (pipeline));
- return NULL;
- }
-
- bin = gst_element_factory_make ("decodebin2", "decodebin2");
- if (!bin) {
- g_warning ("Failed to create GStreamer decodebin");
- gst_object_unref (GST_OBJECT (pipeline));
- gst_object_unref (GST_OBJECT (filesrc));
- return NULL;
- }
-
- g_signal_connect (G_OBJECT (bin),
- "new-decoded-pad",
- G_CALLBACK (decodebin2_dpad_cb),
- extractor);
-
- gst_bin_add (GST_BIN (pipeline), filesrc);
- gst_bin_add (GST_BIN (pipeline), bin);
-
- if (!gst_element_link_many (filesrc, bin, NULL)) {
- g_warning ("Could not link GStreamer elements");
- gst_object_unref (GST_OBJECT (pipeline));
- return NULL;
- }
-
- g_object_set (G_OBJECT (filesrc), "location", uri, NULL);
-
- extractor->bin = bin;
-
- return pipeline;
-}
-
-static void
-decodebin2_shutdown (MetadataExtractor *extractor)
-{
- pipeline_shutdown (extractor);
-}
-
-static gboolean
-decodebin2_init_and_run (MetadataExtractor *extractor,
- const gchar *uri)
-{
- extractor->bus = NULL;
- extractor->bin = NULL;
- extractor->fsinks = NULL;
- extractor->duration = -1;
- extractor->audio_channels = -1;
- extractor->audio_samplerate = -1;
- extractor->height = -1;
- extractor->width = -1;
- extractor->video_fps = -1;
- extractor->aspect_ratio = -1;
-
- extractor->pipeline = decodebin2_create_pipeline (extractor, uri);
- if (!extractor->pipeline) {
- g_warning ("No valid pipeline for uri %s", uri);
- g_list_free (extractor->fsinks);
- return FALSE;
- }
-
- /* Get bus */
- extractor->bus = gst_pipeline_get_bus (GST_PIPELINE (extractor->pipeline));
-
- /* Run! */
- if (!pipeline_poll_for_ready (extractor, GST_STATE_PAUSED, TRUE, FALSE)) {
- g_warning ("Error running decodebin");
- gst_element_set_state (extractor->pipeline, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT (extractor->pipeline));
- gst_object_unref (extractor->bus);
- return FALSE;
- }
-
- decodebin2_add_stream_tags (extractor);
-
- gst_element_set_state (extractor->pipeline, GST_STATE_READY);
- gst_element_get_state (extractor->pipeline, NULL, NULL, 5 * GST_SECOND);
- g_list_foreach (extractor->fsinks, decodebin2_unlink_fsink, extractor);
- g_list_free (extractor->fsinks);
- extractor->fsinks = NULL;
-
- return TRUE;
-}
-
-#endif /* GSTREAMER_BACKEND_DECODEBIN2 */
-
-/* ----------------------- Tagreadbin specific implementation --------------- */
-
-#if defined(GSTREAMER_BACKEND_TAGREADBIN)
-
-static void
-add_int_gst_tag (TrackerSparqlBuilder *metadata,
- const gchar *uri,
- const gchar *key,
- GstTagList *tag_list,
- const gchar *tag)
-{
- gboolean ret;
- gint n;
-
- ret = gst_tag_list_get_int (tag_list, tag, &n);
-
- if (ret) {
- tracker_sparql_builder_predicate (metadata, key);
- tracker_sparql_builder_object_int64 (metadata, n);
- }
-}
-
-static void
-add_fraction_gst_tag (TrackerSparqlBuilder *metadata,
- const gchar *uri,
- const gchar *key,
- GstTagList *tag_list,
- const gchar *tag)
-{
- gboolean ret;
- GValue n = {0,};
- gfloat f;
-
- ret = gst_tag_list_copy_value (&n, tag_list, tag);
-
- if (ret) {
- f = (gfloat)gst_value_get_fraction_numerator (&n)/
- gst_value_get_fraction_denominator (&n);
-
- tracker_sparql_builder_predicate (metadata, key);
- tracker_sparql_builder_object_double (metadata, (gdouble) f);
-
- g_value_unset (&n);
- }
-}
-
-static void
-add_time_gst_tag (TrackerSparqlBuilder *metadata,
- const gchar *uri,
- const gchar *key,
- GstTagList *tag_list,
- const gchar *tag)
-{
- gboolean ret;
- guint64 n;
-
- ret = gst_tag_list_get_uint64 (tag_list, tag, &n);
-
- if (ret) {
- gint64 duration;
-
- duration = (n + (GST_SECOND / 2)) / GST_SECOND;
-
- tracker_sparql_builder_predicate (metadata, key);
- tracker_sparql_builder_object_int64 (metadata, duration);
- }
-}
-
-static void
-tagreadbin_extract_stream_metadata (MetadataExtractor *extractor,
- TrackerSparqlBuilder *metadata)
-{
- if (extractor->mime != EXTRACT_MIME_IMAGE &&
- extractor->mime != EXTRACT_MIME_SVG) {
- add_int_gst_tag (metadata, "nfo:channels", extractor->tagcache, GST_TAG_CHANNEL);
- add_int_gst_tag (metadata, "nfo:sampleRate", extractor->tagcache, GST_TAG_RATE);
- add_time_gst_tag (metadata, "nfo:duration", extractor->tagcache, GST_TAG_DURATION);
- }
-
- if (extractor->mime == EXTRACT_MIME_IMAGE ||
- extractor->mime == EXTRACT_MIME_SVG ||
- extractor->mime == EXTRACT_MIME_VIDEO) {
- add_fraction_gst_tag (metadata, "nfo:aspectRatio", extractor->tagcache, GST_TAG_PIXEL_RATIO);
- }
-
- add_int_gst_tag (metadata, "nfo:height", extractor->tagcache, GST_TAG_HEIGHT);
- add_int_gst_tag (metadata, "nfo:width", extractor->tagcache, GST_TAG_WIDTH);
-
- if (extractor->mime == EXTRACT_MIME_VIDEO) {
- add_fraction_gst_tag (metadata, "nfo:frameRate", extractor->tagcache, GST_TAG_FRAMERATE);
- }
-}
-
-static GstElement *
-tagreadbin_create_pipeline (MetadataExtractor *extractor,
- const gchar *uri)
-{
- GstElement *pipeline = NULL;
-
- pipeline = gst_element_factory_make ("tagreadbin", "tagreadbin");
- if (!pipeline) {
- g_warning ("Failed to create GStreamer tagreadbin");
- return NULL;
- }
-
- g_object_set (G_OBJECT (pipeline), "uri", uri, NULL);
- return pipeline;
-}
-
-static void
-tagreadbin_shutdown (MetadataExtractor *extractor)
-{
- pipeline_shutdown (extractor);
-}
-
-static gboolean
-tagreadbin_init_and_run (MetadataExtractor *extractor,
- const gchar *uri)
-{
- extractor->bus = NULL;
-
- /* Create pipeline */
- extractor->pipeline = tagreadbin_create_pipeline (extractor, uri);
- if (!extractor->pipeline) {
- g_warning ("No valid pipeline for uri %s", uri);
- return FALSE;
- }
-
- /* Get bus */
- extractor->bus = gst_pipeline_get_bus (GST_PIPELINE (extractor->pipeline));
-
- /* Run */
- if (!pipeline_poll_for_ready (extractor, GST_STATE_PLAYING, FALSE, TRUE)) {
- g_warning ("Error running tagreadbin");
- gst_element_set_state (extractor->pipeline, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT (extractor->pipeline));
- gst_object_unref (extractor->bus);
- return FALSE;
- }
-
- return TRUE;
-}
-
-#endif /* GSTREAMER_BACKEND_TAGREADBIN */
-
static void
tracker_extract_gstreamer (const gchar *uri,
TrackerSparqlBuilder *preupdate,
@@ -2068,17 +1501,8 @@ tracker_extract_gstreamer (const gchar *uri,
#endif
g_debug ("GStreamer backend in use:");
-
-#if defined(GSTREAMER_BACKEND_TAGREADBIN)
- g_debug (" Tagreadbin");
- success = tagreadbin_init_and_run (extractor, uri);
-#elif defined(GSTREAMER_BACKEND_DECODEBIN2)
- g_debug (" Decodebin2");
- success = decodebin2_init_and_run (extractor, uri);
-#else /* DISCOVERER/GUPnP-DLNA */
g_debug (" Discoverer/GUPnP-DLNA");
success = discoverer_init_and_run (extractor, uri);
-#endif
if (success) {
cue_sheet = get_embedded_cue_sheet_data (extractor->tagcache);
@@ -2132,13 +1556,7 @@ tracker_extract_gstreamer (const gchar *uri,
g_slist_foreach (extractor->artist_list, (GFunc)g_free, NULL);
g_slist_free (extractor->artist_list);
-#if defined(GSTREAMER_BACKEND_TAGREADBIN)
- tagreadbin_shutdown (extractor);
-#elif defined(GSTREAMER_BACKEND_DECODEBIN2)
- decodebin2_shutdown (extractor);
-#else /* DISCOVERER/GUPnP-DLNA */
discoverer_shutdown (extractor);
-#endif
g_slice_free (MetadataExtractor, extractor);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]