[packages/tracker] - updated to 1.0.3 - added libmediaart patch (update for libmediaart >= 0.5.0, from tracker 1.1 bran

qboosh qboosh at pld-linux.org
Tue Sep 2 20:11:23 CEST 2014


commit 8c84151e66259417bf84ad4d25a5e6d2d5fa009e
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Tue Sep 2 20:11:52 2014 +0200

    - updated to 1.0.3
    - added libmediaart patch (update for libmediaart >= 0.5.0, from tracker 1.1 branch)

 tracker-libmediaart.patch | 596 ++++++++++++++++++++++++++++++++++++++++++++++
 tracker.spec              |  51 +++-
 2 files changed, 637 insertions(+), 10 deletions(-)
---
diff --git a/tracker.spec b/tracker.spec
index a3a16ae..5a4040c 100644
--- a/tracker.spec
+++ b/tracker.spec
@@ -1,24 +1,26 @@
 #
 # Conditional build:
 %bcond_without	apidocs		# do not build and package API docs
-%bcond_with	evolution	# build with Evolution miner
+%bcond_with	evolution	# Evolution miner
 %bcond_with	icu		# libicu instead of libunistring
-%bcond_without	nautilus	# build with Evolution miner
-%bcond_without	vala		# do not build Vala API
+%bcond_without	nautilus	# Nautilus extension
+%bcond_with	static_libs	# static libraries
+%bcond_without	vala		# Vala API
 #
 %define		ver	1.0
 Summary:	Tracker - an indexing subsystem
 Summary(pl.UTF-8):	Tracker - podsystem indeksujący
 Name:		tracker
-Version:	1.0.2
+Version:	1.0.3
 Release:	1
 License:	GPL v2+
 Group:		X11/Applications
 Source0:	http://ftp.gnome.org/pub/GNOME/sources/tracker/1.0/%{name}-%{version}.tar.xz
-# Source0-md5:	649f7e3d2c4c9dc01dfa51e131010ba3
+# Source0-md5:	b4e3462c8dfbd423ec5de4836bd5677b
 Patch0:		link.patch
 Patch1:		force-tb-fx-miners.patch
 Patch2:		%{name}-giflib.patch
+Patch3:		%{name}-libmediaart.patch
 URL:		http://projects.gnome.org/tracker/
 BuildRequires:	NetworkManager-devel >= 0.8.0
 BuildRequires:	autoconf >= 2.64
@@ -52,7 +54,7 @@ BuildRequires:	libgxps-devel
 %{?with_icu:BuildRequires:	libicu-devel >= 4.8.1.1}
 BuildRequires:	libiptcdata-devel
 BuildRequires:	libjpeg-devel
-BuildRequires:	libmediaart-devel >= 0.1.0
+BuildRequires:	libmediaart-devel >= 0.5.0
 BuildRequires:	libosinfo-devel >= 0.2.9
 BuildRequires:	libpng-devel >= 2:1.2.24
 BuildRequires:	libtiff-devel
@@ -115,6 +117,7 @@ Requires:	enca-libs >= 1.9
 Requires:	exempi >= 2.1.0
 Requires:	glib2 >= 1:2.38.0
 Requires:	libexif >= 0.6.13
+Requires:	libmediaart >= 0.5.0
 Requires:	sqlite3 >= 3.7.9
 Obsoletes:	libtracker
 Obsoletes:	libtracker-gtk
@@ -131,10 +134,11 @@ Summary(pl.UTF-8):	Pliki nagłówkowe bibliotek Trackera
 Group:		Development/Libraries
 Requires:	%{name}-libs = %{version}-%{release}
 Requires:	glib2-devel >= 1:2.38.0
+Requires:	libmediaart-devel >= 0.5.0
 Obsoletes:	libtracker-devel
 Obsoletes:	libtracker-gtk-devel
 Obsoletes:	libtracker-gtk-static
-Obsoletes:	libtracker-static
+%{!?with_static_libs:Obsoletes:	libtracker-static}
 
 %description devel
 Header files for Tracker libraries.
@@ -142,6 +146,18 @@ Header files for Tracker libraries.
 %description devel -l pl.UTF-8
 Pliki nagłówkowe bibliotek Trackera.
 
+%package static
+Summary:	Static Tracker libraries
+Summary(pl.UTF-8):	Statyczne biblioteki Trackera
+Group:		Development/Libraries
+Requires:	%{name}-devel = %{version}-%{release}
+
+%description static
+Static Tracker libraries.
+
+%description static -l pl.UTF-8
+Statyczne biblioteki Trackera.
+
 %package apidocs
 Summary:	Tracker libraries API documentation
 Summary(pl.UTF-8):	Dokumentacja API bibliotek Trackera
@@ -225,6 +241,7 @@ API tracker dla języka Vala.
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch3 -p1
 
 %build
 %{__intltoolize}
@@ -234,10 +251,8 @@ API tracker dla języka Vala.
 %{__autoheader}
 %{__automake}
 %configure \
-	--disable-hal \
-	--disable-unit-tests \
-	--disable-silent-rules \
 	%{__enable_disable apidocs gtk-doc} \
+	--disable-hal \
 	--enable-libcue \
 	--enable-libflac \
 	--enable-libvorbis \
@@ -245,6 +260,9 @@ API tracker dla języka Vala.
 	--enable-miner-firefox \
 	--enable-miner-thunderbird \
 	%{__enable_disable nautilus nautilus-extension} \
+	--disable-silent-rules \
+	%{!?with_static_libs:--disable-static} \
+	--disable-unit-tests \
 	--with-firefox-plugin-dir=%{_datadir}/iceweasel/browser/extensions \
 	--with-html-dir=%{_gtkdocdir} \
 	--with-thunderbird-plugin-dir=%{_datadir}/icedove/extensions \
@@ -263,6 +281,11 @@ rm -rf $RPM_BUILD_ROOT
 %{__rm} $RPM_BUILD_ROOT%{_libdir}/tracker-%{ver}/*.la
 %{?with_evolution:%{__rm} $RPM_BUILD_ROOT%{_libdir}/evolution/*/plugins/*.la}
 %{?with_nautilus:%{__rm} $RPM_BUILD_ROOT%{_libdir}/nautilus/extensions-*/*.la}
+%if %{with static_libs}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/tracker-%{ver}/libtracker-*.a
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/tracker-%{ver}/*/lib*.a
+%endif
+
 
 %find_lang tracker
 
@@ -392,6 +415,14 @@ rm -rf $RPM_BUILD_ROOT
 %{_datadir}/gir-1.0/TrackerControl-%{ver}.gir
 %{_datadir}/gir-1.0/TrackerMiner-%{ver}.gir
 
+%if %{with static_libs}
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libtracker-control-%{ver}.a
+%{_libdir}/libtracker-miner-%{ver}.a
+%{_libdir}/libtracker-sparql-%{ver}.a
+%endif
+
 %if %{with apidocs}
 %files apidocs
 %defattr(644,root,root,755)
diff --git a/tracker-libmediaart.patch b/tracker-libmediaart.patch
new file mode 100644
index 0000000..677a81f
--- /dev/null
+++ b/tracker-libmediaart.patch
@@ -0,0 +1,596 @@
+ configure.ac                                    |   10 +++-
+ src/libtracker-extract/tracker-extract-info.c   |   56 +++++++++++++++++
+ src/libtracker-extract/tracker-extract-info.h   |   12 ++++
+ src/tracker-extract/tracker-extract.c           |   41 ++++++++++++
+ src/tracker-extract/tracker-extract.h           |    5 ++
+ src/tracker-extract/tracker-main.c              |   21 ------
+ 10 files changed, 255 insertions(+), 71 deletions(-)
+---
+diff --git a/configure.ac b/configure.ac
+index 3fb59e6..709ef32 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -229,7 +229,7 @@ NETWORK_MANAGER_REQUIRED=0.8
+ GSTREAMER_REQUIRED=0.10.31
+ GUPNP_DLNA_REQUIRED=0.9.4
+ LIBPNG_REQUIRED=0.89
+-LIBMEDIAART_REQUIRED=0.1.0
++LIBMEDIAART_REQUIRED=0.5.0
+ 
+ # 3.6.11 for sqlite_backup API
+ # 3.6.16 to fix test failures
+@@ -1070,9 +1070,15 @@ if test "x$enable_libmediaart" != "xno" ; then
+    LIBTRACKER_MINER_CFLAGS="$LIBTRACKER_MINER_CFLAGS $LIBMEDIAART_CFLAGS"
+    LIBTRACKER_MINER_LIBS="$LIBTRACKER_MINER_LIBS $LIBMEDIAART_LIBS"
+ 
++   LIBTRACKER_EXTRACT_CFLAGS="$LIBTRACKER_EXTRACT_CFLAGS $LIBMEDIAART_CFLAGS"
++   LIBTRACKER_EXTRACT_LIBS="$LIBTRACKER_EXTRACT_LIBS $LIBMEDIAART_LIBS"
++
+    TRACKER_EXTRACT_CFLAGS="$TRACKER_EXTRACT_CFLAGS $LIBMEDIAART_CFLAGS"
+    TRACKER_EXTRACT_LIBS="$TRACKER_EXTRACT_LIBS $LIBMEDIAART_LIBS"
+ 
++   TRACKER_MINER_FS_CFLAGS="$TRACKER_MINER_FS_CFLAGS $LIBMEDIAART_CFLAGS"
++   TRACKER_MINER_FS_LIBS="$TRACKER_MINER_FS_LIBS $LIBMEDIAART_LIBS"
++
+    # Used for .pc file...
+    LIBTRACKER_MINER_PC_REQUIRES="libmediaart-1.0"
+    AC_SUBST(LIBTRACKER_MINER_PC_REQUIRES)
+@@ -1755,7 +1761,7 @@ PKG_CHECK_MODULES(AVCODEC,
+ AC_SUBST(AVCODEC_CFLAGS)
+ AC_SUBST(AVCODEC_LIBS)
+ 
+-PKG_CHECK_MODULES(AVCODEC,
++PKG_CHECK_MODULES(AVUTIL,
+                   [libavutil >= 0.8.4],
+                   [have_libavutil=yes],
+                   [have_libavutil=no])
+diff --git a/src/libtracker-extract/tracker-extract-info.c b/src/libtracker-extract/tracker-extract-info.c
+index a624301..63d77c6 100644
+--- a/src/libtracker-extract/tracker-extract-info.c
++++ b/src/libtracker-extract/tracker-extract-info.c
+@@ -19,6 +19,8 @@
+  * Author: Carlos Garnacho <carlos lanedo com>
+  */
+ 
++#include "config.h"
++
+ #include "tracker-extract-info.h"
+ 
+ /**
+@@ -46,6 +46,10 @@ struct _TrackerExtractInfo
+ 	gchar *mimetype;
+ 	gchar *graph;
+ 
++#ifdef HAVE_LIBMEDIAART
++	MediaArtProcess *media_art_process;
++#endif
++
+ 	gint ref_count;
+ };
+ 
+@@ -84,6 +88,10 @@ tracker_extract_info_new (GFile       *f
+ 
+         info->where_clause = NULL;
+ 
++#ifdef HAVE_LIBMEDIAART
++	info->media_art_process = NULL;
++#endif
++
+ 	info->ref_count = 1;
+ 
+ 	return info;
+@@ -294,3 +304,49 @@ tracker_extract_info_set_where_clause (TrackerExtractInfo *info,
+        g_free (info->where_clause);
+        info->where_clause = g_strdup (where);
+ }
++
++#ifdef HAVE_LIBMEDIAART
++
++/**
++ * tracker_extract_info_get_media_art_process:
++ * @info: a #TrackerExtractInfo
++ *
++ * Returns the #MediaArtProcess object that can be used to retrieve
++ * and store media art caches found in extracted content.
++ *
++ * Returns: (transfer none): The #MediaArtProcess. This object should
++ * not be unreferenced.
++ *
++ * Since: 1.2
++ **/
++MediaArtProcess *
++tracker_extract_info_get_media_art_process (TrackerExtractInfo *info)
++{
++	g_return_if_fail (info != NULL);
++	return info->media_art_process;
++}
++
++/**
++ * tracker_extract_info_set_media_art_process:
++ * @info: a #TrackerExtractInfo
++ * @media_art_process: a #MediaArtProcess.
++ *
++ * Use @media_art_process for caching and looking up media art.
++ *
++ * Since: 1.2
++ **/
++void
++tracker_extract_info_set_media_art_process (TrackerExtractInfo *info,
++                                            MediaArtProcess    *media_art_process)
++{
++	g_return_if_fail (info != NULL);
++	g_return_if_fail (MEDIA_ART_IS_PROCESS (media_art_process));
++
++	if (info->media_art_process) {
++	        g_object_unref (info->media_art_process);
++	}
++
++	info->media_art_process = g_object_ref (media_art_process);
++}
++
++#endif /* HAVE_LIBMEDIAART */
+diff --git a/src/libtracker-extract/tracker-extract-info.h b/src/libtracker-extract/tracker-extract-info.h
+index f54b113..ffd1bce 100644
+--- a/src/libtracker-extract/tracker-extract-info.h
++++ b/src/libtracker-extract/tracker-extract-info.h
+@@ -29,6 +29,10 @@
+ #include <libtracker-sparql/tracker-sparql.h>
+ #include <gio/gio.h>
+ 
++#ifdef HAVE_LIBMEDIAART
++#include <libmediaart/mediaart.h>
++#endif
++
+ G_BEGIN_DECLS
+ 
+ typedef struct _TrackerExtractInfo TrackerExtractInfo;
+@@ -50,6 +54,14 @@ const gchar *         tracker_extract_info_get_where_clause       (TrackerExtrac
+ void                  tracker_extract_info_set_where_clause       (TrackerExtractInfo *info,
+                                                                    const gchar        *where);
+ 
++#ifdef HAVE_LIBMEDIAART
++
++MediaArtProcess *     tracker_extract_info_get_media_art_process  (TrackerExtractInfo *info);
++void                  tracker_extract_info_set_media_art_process  (TrackerExtractInfo *info,
++                                                                   MediaArtProcess    *media_art_process);
++
++#endif /* HAVE_LIBMEDIAART */
++
+ G_END_DECLS
+ 
+ #endif /* __LIBTRACKER_EXTRACT_INFO_H__ */
+diff --git a/src/tracker-extract/tracker-extract.c b/src/tracker-extract/tracker-extract.c
+index 5b3eca9..b5c60af 100644
+--- a/src/tracker-extract/tracker-extract.c
++++ b/src/tracker-extract/tracker-extract.c
+@@ -73,6 +73,10 @@ typedef struct {
+ 	gchar *force_module;
+ 
+ 	gint unhandled_count;
++
++#ifdef HAVE_LIBMEDIAART
++	MediaArtProcess *media_art_process;
++#endif
+ } TrackerExtractPrivate;
+ 
+ typedef struct {
+@@ -131,6 +135,17 @@ tracker_extract_init (TrackerExtract *ob
+ 	priv->thread_pool = g_thread_pool_new ((GFunc) get_metadata,
+ 	                                       NULL, 10, TRUE, NULL);
+ 
++#ifdef HAVE_LIBMEDIAART
++	GError *error = NULL;
++
++	priv->media_art_process = media_art_process_new (&error);
++	if (!priv->media_art_process || error) {
++		g_warning ("Could not initialize media art, %s",
++		           error ? error->message : _("No error given"));
++		g_error_free (error);
++	}
++#endif
++
+ 	g_mutex_init (&priv->task_mutex);
+ }
+ 
+@@ -152,6 +167,12 @@ tracker_extract_finalize (GObject *objec
+ 
+ 	g_hash_table_destroy (priv->statistics_data);
+ 
++#ifdef HAVE_LIBMEDIAART
++	if (priv->media_art_process) {
++		g_object_unref (priv->media_art_process);
++	}
++#endif
++
+ 	g_mutex_clear (&priv->task_mutex);
+ 
+ 	G_OBJECT_CLASS (tracker_extract_parent_class)->finalize (object);
+@@ -280,6 +301,10 @@ get_file_metadata (TrackerExtractTask  *
+ 	info = tracker_extract_info_new (file, task->mimetype, task->graph);
+ 	g_object_unref (file);
+ 
++#ifdef HAVE_LIBMEDIAART
++	tracker_extract_info_set_media_art_process (info, tracker_extract_get_media_art_process (task->extract));
++#endif
++
+ 	if (task->mimetype && *task->mimetype) {
+ 		/* We know the mime */
+ 		mime_used = g_strdup (task->mimetype);
+@@ -720,6 +745,22 @@ tracker_extract_file (TrackerExtract
+ 	g_object_unref (res);
+ }
+ 
++#ifdef HAVE_LIBMEDIAART
++
++MediaArtProcess *
++tracker_extract_get_media_art_process (TrackerExtract *extract)
++{
++       TrackerExtractPrivate *priv;
++
++       g_return_val_if_fail (TRACKER_IS_EXTRACT (extract), NULL);
++
++       priv = TRACKER_EXTRACT_GET_PRIVATE (extract);
++
++       return priv->media_art_process;
++}
++
++#endif
++
+ void
+ tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
+                                          const gchar    *uri,
+diff --git a/src/tracker-extract/tracker-extract.h b/src/tracker-extract/tracker-extract.h
+index 1d250d9..0679e99 100644
+--- a/src/tracker-extract/tracker-extract.h
++++ b/src/tracker-extract/tracker-extract.h
+@@ -60,6 +60,11 @@ void            tracker_extract_file                    (TrackerExtract
+                                                          GAsyncReadyCallback     cb,
+                                                          gpointer                user_data);
+ 
++#ifdef HAVE_LIBMEDIAART
++MediaArtProcess *
++                tracker_extract_get_media_art_process   (TrackerExtract         *extract);
++#endif
++
+ void            tracker_extract_dbus_start              (TrackerExtract         *extract);
+ void            tracker_extract_dbus_stop               (TrackerExtract         *extract);
+ 
+diff --git a/src/tracker-extract/tracker-main.c b/src/tracker-extract/tracker-main.c
+index c707922..f515ec7 100644
+--- a/src/tracker-extract/tracker-main.c
++++ b/src/tracker-extract/tracker-main.c
+@@ -262,12 +262,6 @@ run_standalone (TrackerConfig *config)
+ 
+ 	tracker_locale_init ();
+ 
+-#ifdef HAVE_LIBMEDIAART
+-	if (!media_art_init ()) {
+-		g_warning ("Could not initialize media art, will not be available");
+-	}
+-#endif
+-
+ 	/* This makes sure we don't steal all the system's resources */
+ 	initialize_priority_and_scheduling (tracker_config_get_sched_idle (config),
+ 	                                    tracker_db_manager_get_first_index_done () == FALSE);
+@@ -280,9 +274,6 @@ run_standalone (TrackerConfig *config)
+ 	if (!object) {
+ 		g_object_unref (file);
+ 		g_free (uri);
+-#ifdef HAVE_LIBMEDIAART
+-		media_art_shutdown ();
+-#endif
+ 		tracker_locale_shutdown ();
+ 		return EXIT_FAILURE;
+ 	}
+@@ -295,9 +286,6 @@ run_standalone (TrackerConfig *config)
+ 	g_object_unref (file);
+ 	g_free (uri);
+ 
+-#ifdef HAVE_LIBMEDIAART
+-	media_art_shutdown ();
+-#endif
+ 	tracker_locale_shutdown ();
+ 
+ 	return EXIT_SUCCESS;
+@@ -404,12 +392,6 @@ main (int argc, char *argv[])
+ 
+ 	tracker_locale_init ();
+ 
+-#ifdef HAVE_LIBMEDIAART
+-	if (!media_art_init ()) {
+-		g_warning ("Could not initialize media art, will not be available");
+-	}
+-#endif
+-
+ 	controller = tracker_extract_controller_new (decorator);
+ 	tracker_miner_start (TRACKER_MINER (decorator));
+ 
+@@ -424,9 +406,6 @@ main (int argc, char *argv[])
+ 	tracker_miner_stop (TRACKER_MINER (decorator));
+ 
+ 	/* Shutdown subsystems */
+-#ifdef HAVE_LIBMEDIAART
+-	media_art_shutdown ();
+-#endif
+ 	tracker_locale_shutdown ();
+ 
+ 	g_object_unref (extract);
+diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
+index 1157a8b..9f27bdd 100644
+--- a/src/tracker-extract/tracker-extract-gstreamer.c
++++ b/src/tracker-extract/tracker-extract-gstreamer.c
+@@ -1558,18 +1558,27 @@ discoverer_init_and_run (MetadataExtract
+ 
+ static void
+ tracker_extract_gstreamer (const gchar          *uri,
+-                           TrackerSparqlBuilder *preupdate,
+-                           TrackerSparqlBuilder *postupdate,
+-                           TrackerSparqlBuilder *metadata,
++                           TrackerExtractInfo   *info,
+                            ExtractMime           type,
+                            const gchar          *graph)
+ {
++	TrackerSparqlBuilder *metadata, *preupdate, *postupdate;
+ 	MetadataExtractor *extractor;
+ 	GstBuffer *buffer;
+ 	gchar *cue_sheet;
+ 	gboolean success;
+ 
++#ifdef HAVE_LIBMEDIAART
++	MediaArtProcess *media_art_process;
++#endif
++
+ 	g_return_if_fail (uri);
++
++	graph = tracker_extract_info_get_graph (info);
++	metadata = tracker_extract_info_get_metadata_builder (info);
++	preupdate = tracker_extract_info_get_preupdate_builder (info);
++	postupdate = tracker_extract_info_get_postupdate_builder (info);
++
+ 	g_return_if_fail (metadata);
+ 
+ 	gst_init (NULL, NULL);
+@@ -1579,6 +1588,7 @@ tracker_extract_gstreamer (const gchar
+ 	extractor->tagcache = gst_tag_list_new_empty ();
+ 
+ #ifdef HAVE_LIBMEDIAART
++	media_art_process = tracker_extract_info_get_media_art_process (info);
+ 	extractor->media_art_type = MEDIA_ART_NONE;
+ #endif
+ 
+@@ -1608,13 +1618,36 @@ tracker_extract_gstreamer (const gchar
+ 
+ #ifdef HAVE_LIBMEDIAART
+ 		if (extractor->media_art_type != MEDIA_ART_NONE) {
+-			media_art_process (extractor->media_art_buffer,
+-			                   extractor->media_art_buffer_size,
+-			                   extractor->media_art_buffer_mime,
+-			                   extractor->media_art_type,
+-			                   extractor->media_art_artist,
+-			                   extractor->media_art_title,
+-			                   uri);
++			GError *error = NULL;
++			gboolean success = TRUE;
++
++			if (extractor->media_art_buffer) {
++				success = media_art_process_buffer (media_art_process,
++								    extractor->media_art_type,
++								    MEDIA_ART_PROCESS_FLAGS_NONE,
++								    tracker_extract_info_get_file (info),
++								    extractor->media_art_buffer,
++								    extractor->media_art_buffer_size,
++								    extractor->media_art_buffer_mime,
++								    extractor->media_art_artist,
++								    extractor->media_art_title,
++								    &error);
++			} else {
++				success = media_art_process_file (media_art_process,
++								  extractor->media_art_type,
++								  MEDIA_ART_PROCESS_FLAGS_NONE,
++								  tracker_extract_info_get_file (info),
++								  extractor->media_art_artist,
++								  extractor->media_art_title,
++								  &error);
++			}
++
++			if (!success || error) {
++				g_warning ("Could not process media art for '%s', %s",
++					   uri,
++					   error ? error->message : "No error given");
++				g_clear_error (&error);
++			}
+ 		}
+ #endif
+ 	}
+@@ -1646,24 +1679,19 @@ tracker_extract_gstreamer (const gchar
+ G_MODULE_EXPORT gboolean
+ tracker_extract_get_metadata (TrackerExtractInfo *info)
+ {
+-	TrackerSparqlBuilder *metadata, *preupdate, *postupdate;
+-	const gchar *mimetype;
+ 	GFile *file;
+ 	gchar *uri;
+ 	const gchar *graph;
+-
+-	graph = tracker_extract_info_get_graph (info);
+-	metadata = tracker_extract_info_get_metadata_builder (info);
+-	preupdate = tracker_extract_info_get_preupdate_builder (info);
+-	postupdate = tracker_extract_info_get_postupdate_builder (info);
+-	mimetype = tracker_extract_info_get_mimetype (info);
++	const gchar *mimetype;
+ 
+ 	file = tracker_extract_info_get_file (info);
+ 	uri = g_file_get_uri (file);
++	graph = tracker_extract_info_get_graph (info);
++	mimetype = tracker_extract_info_get_mimetype (info);
+ 
+ #if defined(GSTREAMER_BACKEND_GUPNP_DLNA)
+ 	if (g_str_has_prefix (mimetype, "dlna/")) {
+-		tracker_extract_gstreamer (uri, preupdate, postupdate, metadata, EXTRACT_MIME_GUESS, graph);
++		tracker_extract_gstreamer (uri, info, EXTRACT_MIME_GUESS, graph);
+ 	} else
+ #endif /* GSTREAMER_BACKEND_GUPNP_DLNA */
+ 
+@@ -1696,19 +1696,19 @@ tracker_extract_get_metadata (TrackerExt
+ #endif /* GSTREAMER_BACKEND_GUPNP_DLNA */
+ 
+ 	if (strcmp (mimetype, "image/svg+xml") == 0) {
+-		tracker_extract_gstreamer (uri, preupdate, postupdate, metadata, EXTRACT_MIME_SVG, graph);
++		tracker_extract_gstreamer (uri, info, EXTRACT_MIME_SVG, graph);
+ 	} else if (strcmp (mimetype, "video/3gpp") == 0 ||
+ 	           strcmp (mimetype, "video/mp4") == 0 ||
+                    strcmp (mimetype, "video/x-ms-asf") == 0 ||
+                    strcmp (mimetype, "application/vnd.ms-asf") == 0 ||
+ 	           strcmp (mimetype, "application/vnd.rn-realmedia") == 0) {
+-		tracker_extract_gstreamer (uri, preupdate, postupdate, metadata, EXTRACT_MIME_GUESS, graph);
++		tracker_extract_gstreamer (uri, info, EXTRACT_MIME_GUESS, graph);
+ 	} else if (g_str_has_prefix (mimetype, "audio/")) {
+-		tracker_extract_gstreamer (uri, preupdate, postupdate, metadata, EXTRACT_MIME_AUDIO, graph);
++		tracker_extract_gstreamer (uri, info, EXTRACT_MIME_AUDIO, graph);
+ 	} else if (g_str_has_prefix (mimetype, "video/")) {
+-		tracker_extract_gstreamer (uri, preupdate, postupdate, metadata, EXTRACT_MIME_VIDEO, graph);
++		tracker_extract_gstreamer (uri, info, EXTRACT_MIME_VIDEO, graph);
+ 	} else if (g_str_has_prefix (mimetype, "image/")) {
+-		tracker_extract_gstreamer (uri, preupdate, postupdate, metadata, EXTRACT_MIME_IMAGE, graph);
++		tracker_extract_gstreamer (uri, info, EXTRACT_MIME_IMAGE, graph);
+ 	} else {
+ 		g_free (uri);
+ 		return FALSE;
+diff --git a/src/tracker-extract/tracker-extract-libav.c b/src/tracker-extract/tracker-extract-libav.c
+index c14998b..78b0071 100644
+--- a/src/tracker-extract/tracker-extract-libav.c
++++ b/src/tracker-extract/tracker-extract-libav.c
+@@ -330,13 +330,27 @@ tracker_extract_get_metadata (TrackerExt
+ 		}
+ 
+ #ifdef HAVE_LIBMEDIAART
+-		media_art_process (NULL,
+-		                   0,
+-		                   NULL,
+-		                   MEDIA_ART_ALBUM,
+-		                   album_artist,
+-		                   album_title,
+-		                   uri);
++		if (album_artist || album_title) {
++			MediaArtProcess *media_art_process;
++			GError *error = NULL;
++			gboolean success;
++
++			media_art_process = tracker_extract_info_get_media_art_process (info);
++			success = media_art_process_file (media_art_process,
++							  MEDIA_ART_ALBUM,
++							  MEDIA_ART_PROCESS_FLAGS_NONE,
++							  file,
++							  album_artist,
++							  album_title,
++							  &error);
++
++			if (!success || error) {
++				g_warning ("Could not process media art for '%s', %s",
++					   uri,
++					   error ? error->message : "No error given");
++				g_clear_error (&error);
++			}
++		}
+ #endif
+ 
+ 		g_free(performer_uri);
+diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
+index d26ccf3..772085b 100644
+--- a/src/tracker-extract/tracker-extract-mp3.c
++++ b/src/tracker-extract/tracker-extract-mp3.c
+@@ -2647,13 +2647,41 @@ tracker_extract_get_metadata (TrackerExt
+ 	mp3_parse (buffer, buffer_size, audio_offset, uri, metadata, &md);
+ 
+ #ifdef HAVE_LIBMEDIAART
+-	media_art_process (md.media_art_data,
+-	                   md.media_art_size,
+-	                   md.media_art_mime,
+-	                   MEDIA_ART_ALBUM,
+-	                   md.performer,
+-	                   md.album,
+-	                   uri);
++	if (md.performer || md.title) {
++		MediaArtProcess *media_art_process;
++		GError *error = NULL;
++		gboolean success = TRUE;
++
++		media_art_process = tracker_extract_info_get_media_art_process (info);
++
++		if (md.media_art_data) {
++			success = media_art_process_buffer (media_art_process,
++							    MEDIA_ART_ALBUM,
++							    MEDIA_ART_PROCESS_FLAGS_NONE,
++							    file,
++							    md.media_art_data,
++							    md.media_art_size,
++							    md.media_art_mime,
++							    md.performer,
++							    md.title,
++							    &error);
++		} else {
++			success = media_art_process_file (media_art_process,
++							  MEDIA_ART_ALBUM,
++							  MEDIA_ART_PROCESS_FLAGS_NONE,
++							  file,
++							  md.performer,
++							  md.title,
++							  &error);
++		}
++
++		if (!success || error) {
++			g_warning ("Could not process media art for '%s', %s",
++				   uri,
++				   error ? error->message : "No error given");
++			g_clear_error (&error);
++		}
++	}
+ #endif
+ 	g_free (md.media_art_data);
+ 	g_free (md.media_art_mime);
+diff --git a/src/tracker-extract/tracker-extract-vorbis.c b/src/tracker-extract/tracker-extract-vorbis.c
+index 530bf20..e619650 100644
+--- a/src/tracker-extract/tracker-extract-vorbis.c
++++ b/src/tracker-extract/tracker-extract-vorbis.c
+@@ -514,16 +514,31 @@ tracker_extract_get_metadata (TrackerExt
+ 	}
+ 
+ #ifdef HAVE_LIBMEDIAART
+-	{
+-		gchar *uri = g_file_get_uri (file);
+-		media_art_process (NULL,
+-		                   0,
+-		                   NULL,
+-		                   MEDIA_ART_ALBUM,
+-		                   vd.album_artist ? vd.album_artist : vd.artist,
+-		                   vd.album,
+-		                   uri);
+-		g_free (uri);
++	if ((vd.album_artist || vd.artist) || vd.album) {
++		MediaArtProcess *media_art_process;
++		GError *error = NULL;
++		gboolean success;
++
++		media_art_process = tracker_extract_info_get_media_art_process (info);
++
++		success = media_art_process_file (media_art_process,
++						  MEDIA_ART_ALBUM,
++						  MEDIA_ART_PROCESS_FLAGS_NONE,
++						  file,
++						  vd.album_artist ? vd.album_artist : vd.artist,
++						  vd.album,
++						  &error);
++
++		if (!success || error) {
++			gchar *uri;
++
++			uri = g_file_get_uri (file);
++			g_warning ("Could not process media art for '%s', %s",
++				   uri,
++				   error ? error->message : "No error given");
++			g_free (uri);
++			g_clear_error (&error);
++		}
+ 	}
+ #endif
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/tracker.git/commitdiff/8c84151e66259417bf84ad4d25a5e6d2d5fa009e



More information about the pld-cvs-commit mailing list