tracker r2304 - in trunk: . src/tracker-extract



Author: mr
Date: Fri Oct  3 11:24:07 2008
New Revision: 2304
URL: http://svn.gnome.org/viewvc/tracker?rev=2304&view=rev

Log:
	* configure.ac:
	* src/tracker-extract/Makefile.am:
	* src/tracker-extract/tracker-albumart.[ch]: 
	* src/tracker-extract/tracker-extract-mp3.c: Don't require
	GdkPixbuf for MP3 album art extraction. Instead make it optionally
	disabled for the Maemo platform while we wait for the latest
	GdkPixbuf to be available.


Modified:
   trunk/ChangeLog
   trunk/configure.ac
   trunk/src/tracker-extract/Makefile.am
   trunk/src/tracker-extract/tracker-albumart.c
   trunk/src/tracker-extract/tracker-albumart.h
   trunk/src/tracker-extract/tracker-extract-mp3.c

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Fri Oct  3 11:24:07 2008
@@ -90,22 +90,23 @@
 GLIB_REQUIRED=2.16.0
 PANGO_REQUIRED=1.0.0
 GMIME_REQUIRED=2.1.0
+GDKPIXBUF_REQUIRED=2.12.0
 
 PKG_CHECK_MODULES(GLIB2, [glib-2.0 >= $GLIB_REQUIRED])
 AC_SUBST(GLIB2_CFLAGS)
 AC_SUBST(GLIB2_LIBS)
 
-# Check for gthread 2.0
+# Check for GThread 2.0
 PKG_CHECK_MODULES(GTHREAD, [ gthread-2.0 >= $GLIB_REQUIRED])
 AC_SUBST(GTHREAD_CFLAGS)
 AC_SUBST(GTHREAD_LIBS)
 
-# Check for gobject 2.0
+# Check for GObject 2.0
 PKG_CHECK_MODULES(GOBJECT, [gobject-2.0 >= $GLIB_REQUIRED])
 AC_SUBST(GOBJECT_CFLAGS)
 AC_SUBST(GOBJECT_LIBS)
 
-# Check for gmodule 2.0
+# Check for GModule 2.0
 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= $GLIB_REQUIRED])
 AC_SUBST(GMODULE_CFLAGS)
 AC_SUBST(GMODULE_LIBS)
@@ -114,7 +115,7 @@
 AC_SUBST(GIO_CFLAGS)
 AC_SUBST(GIO_LIBS)
 
-# Check for pango
+# Check for Pango
 PKG_CHECK_MODULES(PANGO, [pango >= $PANGO_REQUIRED])
 AC_SUBST(PANGO_CFLAGS)
 AC_SUBST(PANGO_LIBS)
@@ -124,12 +125,6 @@
 AC_SUBST(GMIME_CFLAGS)
 AC_SUBST(GMIME_LIBS)
 
-# Check GdkPixbuf
-GDK_PIXBUF_CHECK="gdk-pixbuf-2.0 >= 2.12.0"
-PKG_CHECK_MODULES(GDK_PIXBUF, $GDK_PIXBUF_CHECK)
-AC_SUBST(GDK_PIXBUF_LIBS)
-AC_SUBST(GDK_PIXBUF_CFLAGS)
-
 # Check for Dbus 0.50 or higher
 PKG_CHECK_MODULES(DBUS, [dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED])
 AC_SUBST(DBUS_CFLAGS)
@@ -398,8 +393,37 @@
 AM_CONDITIONAL(HAVE_HAL, test "x$have_hal" = "xyes")
 
 
+##################################################################
+# Check for GdkPixbuf, needed for the MP3 album art extractor
+##################################################################
+
+# Check GdkPixbuf
+
+AC_ARG_ENABLE(gdkpixbuf, 
+	      AS_HELP_STRING([--disable-gdkpixbuf],
+			     [Disable GdkPixbuf support, required for MP3 album art extraction]),,
+	      [enable_gdkpixbuf=yes])
+
+if test "x$enable_gdkpixbuf" = "xyes"; then
+   PKG_CHECK_MODULES(GDKPIXBUF,
+		     [gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED],
+		     [have_gdkpixbuf=yes],
+		     [have_gdkpixbuf=no])
+   AC_SUBST(GDKPIXBUF_LIBS)
+   AC_SUBST(GDKPIXBUF_CFLAGS)
+else
+   have_gdkpixbuf="no (disabled)"
+fi
+
+if test "x$have_gdkpixbuf" = "xyes"; then
+   AC_DEFINE(HAVE_GDKPIXBUF, [], [Define if we have GdkPixbuf])
+fi
+
+AM_CONDITIONAL(HAVE_GDKPIXBUF, test "x$have_gdkpixbuf" = "xyes")
+
+
 ####################################################################
-# check for GStreamer or Xine. Otherwise, call an external video
+# Check for GStreamer or Xine. Otherwise, call an external video
 # player (Totem or MPlayer).
 ####################################################################
 
@@ -426,40 +450,40 @@
 
 if test "x$enable_video_extractor" = "xauto"; then
    if test "$have_libgstreamer" = "yes"; then
-      videos_handler="GStreamer"
-      videos_are_handled="yes"
+      have_video_handler_app="GStreamer"
+      have_video_handler="yes"
    elif test "$have_libxine" = "yes"; then
-      videos_handler="Xine"
-      videos_are_handled="yes"
+      have_video_handler_app="Xine"
+      have_video_handler="yes"
    else
-      videos_are_handled="?"
-      videos_handler="An external video player will be called"
+      have_video_handler="?"
+      have_video_handler_app="An external video player will be called"
    fi
 elif test "x$enable_video_extractor" = "xgstreamer"; then
    if test "$have_libgstreamer" = "yes"; then
-      videos_handler="GStreamer"
-      videos_are_handled="yes"
+      have_video_handler_app="GStreamer"
+      have_video_handler="yes"
    else
       AC_MSG_ERROR([***Gstreamer requested but not found - exiting!])
    fi
 elif test "x$enable_video_extractor" = "xxine"; then
    if test "$have_libxine" = "yes"; then
-      videos_handler="Xine"
-      videos_are_handled="yes"
+      have_video_handler_app="Xine"
+      have_video_handler="yes"
    else
       AC_MSG_ERROR([***libxine requested but not found - exiting!])
    fi
 else
-   videos_are_handled="?"
-   videos_handler="An external video player will be called"
+   have_video_handler="?"
+   have_video_handler_app="An external video player will be called"
 fi
 
-if test "$videos_handler" = "GStreamer"; then
+if test "$have_video_handler_app" = "GStreamer"; then
    AC_DEFINE(HAVE_GSTREAMER, [], [Define if we have GStreamer])
    AM_CONDITIONAL(HAVE_GSTREAMER, true)
    AM_CONDITIONAL(HAVE_LIBXINE, false)
    AM_CONDITIONAL(USING_EXTERNAL_VIDEO_PLAYER, false)
-elif test "$videos_handler" = "Xine"; then
+elif test "$have_video_handler_app" = "Xine"; then
    AC_DEFINE(HAVE_LIBXINE, [], [Define if we have Libxine])
    AM_CONDITIONAL(HAVE_LIBXINE, true)
    AM_CONDITIONAL(HAVE_GSTREAMER, false)
@@ -1178,14 +1202,15 @@
 
 Metadata Extractors:
 
-	Support png:				yes
-	Support pdf:				$have_poppler
-	Support jpeg:				$have_libjpeg (xmp: $have_exempi exif: $have_libexif)
-	Support tiff:				$have_libtiff (xmp: $have_exempi exif: yes)
-	Support ms & openoffice (gsf):	        $have_libgsf
-	Support xml / html formats:		$have_libxml2
-	Support embedded / sidecar xmp:		$have_exempi
-	Support video files:			$videos_are_handled ($videos_handler)
+	Support PNG:				yes
+	Support PDF:				$have_poppler
+	Support JPEG:				$have_libjpeg (xmp: $have_exempi exif: $have_libexif)
+	Support TIFF:				$have_libtiff (xmp: $have_exempi exif: yes)
+	Support MS & Open Office (gsf):	        $have_libgsf
+	Support XML / HTML formats:		$have_libxml2
+	Support embedded / sidecar XMP:		$have_exempi
+	Support video formats:			$have_video_handler ($have_video_handler_app)
+	Support MP3 album art (w/ GdkPixbuf):	$have_gdkpixbuf
 
 Thumbnailers:
 

Modified: trunk/src/tracker-extract/Makefile.am
==============================================================================
--- trunk/src/tracker-extract/Makefile.am	(original)
+++ trunk/src/tracker-extract/Makefile.am	Fri Oct  3 11:24:07 2008
@@ -62,15 +62,20 @@
 modules_LTLIBRARIES += libextract-xine.la
 endif
 
+
 # Common XMP Sources
 xmp_sources = 								\
 	tracker-xmp.c							\
 	tracker-xmp.h
 
 # Common AlbumArt sources
-albumart_sources =							\
+albumart_sources =
+
+if HAVE_GDKPIXBUF
+albumart_sources +=							\
 	tracker-albumart.c						\
 	tracker-albumart.h
+endif
 
 # ABW
 libextract_abw_la_SOURCES = tracker-extract-abw.c

Modified: trunk/src/tracker-extract/tracker-albumart.c
==============================================================================
--- trunk/src/tracker-extract/tracker-albumart.c	(original)
+++ trunk/src/tracker-extract/tracker-albumart.c	Fri Oct  3 11:24:07 2008
@@ -1,5 +1,5 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Tracker AlbumArt - Album art helper functions
+/*
  * Copyright (C) 2008, Nokia
  *
  * This program is free software; you can redistribute it and/or
@@ -18,20 +18,23 @@
  * Boston, MA  02110-1301, USA.
  */
 
+#include "config.h"
+
 #include <glib.h>
 #include <glib/gprintf.h>
+
 #include <gio/gio.h>
+
 #include <gdk-pixbuf/gdk-pixbuf.h>
 
-#include "config.h"
 #include "tracker-albumart.h"
 
 gboolean
 tracker_save_albumart (const unsigned char *buffer,
-		       size_t len,
-		       const gchar *artist, 
-		       const gchar *album,
-		       const gchar *uri)
+		       size_t               len,
+		       const gchar         *artist, 
+		       const gchar         *album,
+		       const gchar         *uri)
 {
 	GdkPixbufLoader *loader;
 	GdkPixbuf       *pixbuf = NULL;
@@ -41,7 +44,7 @@
 	gchar           *checksum;
 	GError          *error = NULL;
 
-	g_type_init();
+	g_type_init ();
 
 	if (artist && album) {
 		g_sprintf (name, "%s %s", album, artist);
@@ -60,28 +63,26 @@
 				".album_art",
 				NULL);
 
-	filename = g_build_filename (dir,
-				     name,
-				     NULL);
+	filename = g_build_filename (dir, name, NULL);
 
-	if(g_file_test (filename, G_FILE_TEST_EXISTS)) {
+	if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
 		g_free (filename);
 		g_free (dir);
 
 		return TRUE;
 	}
 
-	if(!g_file_test (dir, G_FILE_TEST_EXISTS)) {
+	if (!g_file_test (dir, G_FILE_TEST_EXISTS)) {
 		g_mkdir_with_parents (dir, 0770);
 	}
 
 	g_free (dir);
 
-	loader = gdk_pixbuf_loader_new();
+	loader = gdk_pixbuf_loader_new ();
 
 	if (!gdk_pixbuf_loader_write (loader, buffer, len, &error)) {
-		g_warning("%s\n", error->message);
-		g_error_free(error);
+		g_warning ("%s\n", error->message);
+		g_error_free (error);
 
 		gdk_pixbuf_loader_close (loader, NULL);
 		g_free (filename);
@@ -91,22 +92,22 @@
 	pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
 
 	if (!gdk_pixbuf_save (pixbuf, filename, "jpeg", &error, NULL)) {
-		g_warning("%s\n", error->message);
-		g_error_free(error);
+		g_warning ("%s\n", error->message);
+		g_error_free (error);
 
 		g_free (filename);
-		g_object_unref(pixbuf);
+		g_object_unref (pixbuf);
 
 		gdk_pixbuf_loader_close (loader, NULL);
 		return FALSE;
 	}
 
 	g_free (filename);
-	g_object_unref(pixbuf);
+	g_object_unref (pixbuf);
 
 	if (!gdk_pixbuf_loader_close (loader, &error)) {
-		g_warning("%s\n", error->message);
-		g_error_free(error);
+		g_warning ("%s\n", error->message);
+		g_error_free (error);
 		return FALSE;
 	}
 

Modified: trunk/src/tracker-extract/tracker-albumart.h
==============================================================================
--- trunk/src/tracker-extract/tracker-albumart.h	(original)
+++ trunk/src/tracker-extract/tracker-albumart.h	Fri Oct  3 11:24:07 2008
@@ -17,15 +17,19 @@
  * Boston, MA  02110-1301, USA.
  */
 
-#ifndef _TRACKER_ALBUMART_H_
-#define _TRACKER_ALBUMART_H_
+#ifndef __TRACKER_ALBUMART_H__
+#define __TRACKER_ALBUMART_H__
 
 #include <glib.h>
 
-gboolean tracker_save_albumart (const unsigned char *buffer, 
-				size_t len, 
-				const char *artist, 
-				const char *album,
-				const gchar *uri);
+G_BEGIN_DECLS
 
-#endif /* _TRACKER_ALBUMART_H_ */
+gboolean tracker_save_albumart (const unsigned char *buffer,
+                                size_t               len,
+                                const gchar         *artist,
+                                const gchar         *album,
+                                const gchar         *uri);
+
+G_END_DECLS
+
+#endif /* __TRACKER_ALBUMART_H__ */

Modified: trunk/src/tracker-extract/tracker-extract-mp3.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-mp3.c	(original)
+++ trunk/src/tracker-extract/tracker-extract-mp3.c	Fri Oct  3 11:24:07 2008
@@ -38,10 +38,13 @@
 
 #ifndef G_OS_WIN32
 #include <sys/mman.h>
-#endif
+#endif /* G_OS_WIN32 */
 
 #include "tracker-extract.h"
+
+#ifdef HAVE_GDKPIXBUF
 #include "tracker-albumart.h"
+#endif /* HAVE_GDKPIXBUF */
 
 #define MAX_FILE_READ	  1024 * 1024 * 10
 #define MAX_MP3_SCAN_DEEP 16768
@@ -1152,12 +1155,14 @@
 	mp3_parse (buffer, size, metadata);
 
 	/* Save embedded album art */
+#ifdef HAVE_GDKPIXBUF
 	if (albumart.data && albumart.size) {
 		tracker_save_albumart (albumart.data, albumart.size,
 				       g_hash_table_lookup (metadata, "Audio:Artist") ,
 				       g_hash_table_lookup (metadata, "Audio:Album"),
 				       filename);
 	}
+#endif /* HAVE_GDKPIXBUF */
 	
 	/* Check that we have the minimum data. FIXME We should not need to do this */
 	if (!g_hash_table_lookup (metadata, "Audio:Title")) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]