diff options
-rw-r--r-- | AUTHORS | 9 | ||||
-rw-r--r-- | Makefile.am | 23 | ||||
-rw-r--r-- | Makefile.decl | 64 | ||||
-rw-r--r-- | NEWS | 0 | ||||
-rw-r--r-- | README | 0 | ||||
-rwxr-xr-x | autogen.sh | 15 | ||||
-rw-r--r-- | configure.ac | 286 | ||||
-rw-r--r-- | libmediaart.doap | 39 | ||||
-rw-r--r-- | libmediaart/Makefile.am | 48 | ||||
-rw-r--r-- | libmediaart/extract.c (renamed from src/tracker-extract/tracker-media-art.c) | 51 | ||||
-rw-r--r-- | libmediaart/extract.h (renamed from src/tracker-extract/tracker-media-art.h) | 10 | ||||
-rw-r--r-- | libmediaart/extractdummy.c (renamed from src/tracker-extract/tracker-media-art-dummy.c) | 0 | ||||
-rw-r--r-- | libmediaart/extractgeneric.h (renamed from src/tracker-extract/tracker-media-art-generic.h) | 13 | ||||
-rw-r--r-- | libmediaart/extractpixbuf.c (renamed from src/tracker-extract/tracker-media-art-pixbuf.c) | 35 | ||||
-rw-r--r-- | libmediaart/extractqt.cpp (renamed from src/tracker-extract/tracker-media-art-qt.cpp) | 0 | ||||
-rw-r--r-- | libmediaart/mediaart.h | 32 | ||||
-rw-r--r-- | libmediaart/queue.c (renamed from src/libtracker-miner/tracker-media-art.c) | 3 | ||||
-rw-r--r-- | libmediaart/queue.h (renamed from src/libtracker-miner/tracker-media-art.h) | 10 | ||||
-rw-r--r-- | libmediaart/utils.c (renamed from src/libtracker-common/tracker-media-art.c) | 4 | ||||
-rw-r--r-- | libmediaart/utils.h (renamed from src/libtracker-common/tracker-media-art.h) | 14 | ||||
-rw-r--r-- | tests/Makefile.am | 19 | ||||
-rw-r--r-- | tests/mediaarttest.c (renamed from tests/libtracker-common/tracker-media-art-test.c) | 2 |
22 files changed, 599 insertions, 78 deletions
@@ -0,0 +1,9 @@ +Martyn Russell <martyn at lanedo com> +Jürg Billeter <juerg.billeter at codethink co uk> +Philip Van Hoof <philip at codeminded be> +Carlos Garnacho <carlos at lanedo com> +Mikael Ottela <mikael.ottela at ixonos com> +Ivan Frade <ivan.frade at nokia com> +Jamie McCracken <jamiemcc at gnome org> +Adrien Bustany <abustany at gnome org> +Aleksander Morgado <aleksander at lanedo com> diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..61b9f78 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,23 @@ +include $(top_srcdir)/Makefile.decl + +SUBDIRS = libmediaart + +if HAVE_UNIT_TESTS +SUBDIRS += tests +endif + +EXTRA_DIST = \ + intltool-extract.in \ + intltool-merge.in \ + intltool-update.in \ + libmediaart.doap + +DISTCLEANFILES = \ + intltool-extract \ + intltool-merge \ + intltool-update + +DISTCHECK_CONFIGURE_FLAGS = \ + --enable-unit-tests + +ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} diff --git a/Makefile.decl b/Makefile.decl new file mode 100644 index 0000000..2c5a4a2 --- /dev/null +++ b/Makefile.decl @@ -0,0 +1,64 @@ +# +# Testing rules for make +# Original file: http://svn.gnome.org/svn/glib/trunk/Makefile.decl +# +# test: run all tests in cwd and subdirs +# test-report: run tests in subdirs and generate report +# perf-report: run tests in subdirs with -m perf and generate report +# full-report: like test-report: with -m perf and -m slow +# + +GTESTER = gtester # for non-GLIB packages +GTESTER_REPORT = gtester-report + +# initialize variables for unconditional += appending +TEST_PROGS = + +### testing rules + +# test: run all tests in cwd and subdirs +test: ${TEST_PROGS} all + @ test -z "${TEST_PROGS}" || ${GTESTER} --verbose ${TEST_PROGS} + @ for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done +# test-report: run tests in subdirs and generate report +# perf-report: run tests in subdirs with -m perf and generate report +# full-report: like test-report: with -m perf and -m slow +test-report perf-report full-report: ${TEST_PROGS} + @test -z "${TEST_PROGS}" || { \ + case $@ in \ + test-report) test_options="-k";; \ + perf-report) test_options="-k -m=perf";; \ + full-report) test_options="-k -m=perf -m=slow";; \ + esac ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \ + elif test -n "${TEST_PROGS}" ; then \ + ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \ + fi ; \ + } + @ ignore_logdir=true ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \ + ignore_logdir=false ; \ + fi ; \ + for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done ; \ + $$ignore_logdir || { \ + echo '<?xml version="1.0"?>' > $@.xml ; \ + echo '<report-collection>' >> $@.xml ; \ + for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \ + sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \ + done ; \ + echo >> $@.xml ; \ + echo '</report-collection>' >> $@.xml ; \ + rm -rf "$$GTESTER_LOGDIR"/ ; \ + ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \ + } +.PHONY: test test-report perf-report full-report +# run make test as part of make check +check-local: test diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..e3135a9 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. +# +# NOTE: compare_versions() is stolen from gnome-autogen.sh + +# Generate required files +test -n "$srcdir" || srcdir=`dirname "$0"` +test -n "$srcdir" || srcdir=. +( + cd "$srcdir" && + touch ChangeLog && # Automake requires that ChangeLog exist + autopoint --force && + AUTOPOINT='intltoolize --automake --copy' autoreconf --verbose --force --install +) || exit +test -n "$NOCONFIGURE" || "$srcdir/configure" "$@" diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..17651fe --- /dev/null +++ b/configure.ac @@ -0,0 +1,286 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. +# This file is part of Libmediaart. + +AC_PREREQ([2.64]) + +# Making releases: +# LIBMEDIAART_MICRO_VERSION += 1; +# LIBMEDIAART_INTERFACE_AGE += 1; +# LIBMEDIAART_BINARY_AGE += 1; +# if any functions have been added, set LIBMEDIAART_INTERFACE_AGE to 0. +# if backwards compatibility has been broken, +# set LIBMEDIAART_BINARY_AGE and LIBMEDIAART_INTERFACE_AGE to 0. +m4_define([libmediaart_major_version], [0]) +m4_define([libmediaart_minor_version], [1]) +m4_define([libmediaart_micro_version], [0]) +m4_define([libmediaart_interface_age], [0]) +m4_define([libmediaart_binary_age], + [m4_eval(100 * libmediaart_minor_version + libmediaart_micro_version)]) +m4_define([libmediaart_version], + [libmediaart_major_version.libmediaart_minor_version.libmediaart_micro_version]) +# This is the X.Y used in -lliblibmediaart-FOO-X.Y +m4_define([libmediaart_api_version], [0.2]) + +# libtool version related macros +m4_define([libmediaart_lt_release], [libmediaart_major_version.libmediaart_minor_version]) +m4_define([libmediaart_lt_current], + [m4_eval(100 * libmediaart_minor_version + libmediaart_micro_version - libmediaart_interface_age)]) +m4_define([libmediaart_lt_revision], [libmediaart_interface_age]) +m4_define([libmediaart_lt_age], [m4_eval(libmediaart_binary_age - libmediaart_interface_age)]) +m4_define([libmediaart_lt_current_minus_age], + [m4_eval(libmediaart_lt_current - libmediaart_lt_age)]) + +# Define a string for the earliest version that this release has +# backwards binary compatibility with for all interfaces a module +# might. Unless we add module-only API with lower stability +# guarantees, this should be unchanged until we break binary compat +# for Libmediaart. +# +# LIBMEDIAART_BINARY_VERSION=$LIBMEDIAART_MAJOR_VERSION.$LIBMEDIAART_MINOR_VERSION.$LT_CURRENT +m4_define([libmediaart_binary_version], [0.2.0]) + +AC_INIT([libmediaart], + [libmediaart_version], + [http://bugzilla.gnome.org/], + [libmediaart], + [https://wiki.gnome.org/MediaArtStorageSpec]) + +AC_CONFIG_SRCDIR([libmediaart/mediaart.h]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_HEADERS([config.h]) + +AM_INIT_AUTOMAKE([1.11 no-define tar-ustar -Wno-portability]) + +AM_SILENT_RULES([yes]) + +LIBMEDIAART_MAJOR_VERSION=libmediaart_major_version +LIBMEDIAART_MINOR_VERSION=libmediaart_minor_version +LIBMEDIAART_MICRO_VERSION=libmediaart_micro_version +LIBMEDIAART_INTERFACE_AGE=libmediaart_interface_age +LIBMEDIAART_BINARY_AGE=libmediaart_binary_age +LIBMEDIAART_VERSION=libmediaart_version +LIBMEDIAART_API_VERSION=libmediaart_api_version +LIBMEDIAART_BINARY_VERSION=libmediaart_binary_version + +AC_SUBST(LIBMEDIAART_MAJOR_VERSION) +AC_SUBST(LIBMEDIAART_MINOR_VERSION) +AC_SUBST(LIBMEDIAART_MICRO_VERSION) +AC_SUBST(LIBMEDIAART_INTERFACE_AGE) +AC_SUBST(LIBMEDIAART_BINARY_AGE) +AC_SUBST(LIBMEDIAART_API_VERSION) +AC_SUBST(LIBMEDIAART_VERSION) +AC_SUBST(LIBMEDIAART_BINARY_VERSION) + +AC_DEFINE(LIBMEDIAART_MAJOR_VERSION, [libmediaart_major_version], + [Define to the Libmediaart major version]) +AC_DEFINE(LIBMEDIAART_MINOR_VERSION, [libmediaart_minor_version], + [Define to the Libmediaart minor version]) +AC_DEFINE(LIBMEDIAART_MICRO_VERSION, [libmediaart_micro_version], + [Define to the Libmediaart micro version]) +AC_DEFINE(LIBMEDIAART_INTERFACE_AGE, [libmediaart_interface_age], + [Define to the Libmediaart interface age]) +AC_DEFINE(LIBMEDIAART_BINARY_AGE, [libmediaart_binary_age], + [Define to the Libmediaart binary age]) + +# libtool versioning +LT_RELEASE=libmediaart_lt_release +LT_CURRENT=libmediaart_lt_current +LT_REVISION=libmediaart_lt_revision +LT_AGE=libmediaart_lt_age +LT_CURRENT_MINUS_AGE=libmediaart_lt_current_minus_age +AC_SUBST(LT_RELEASE) +AC_SUBST(LT_CURRENT) +AC_SUBST(LT_REVISION) +AC_SUBST(LT_AGE) +AC_SUBST(LT_CURRENT_MINUS_AGE) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_AWK +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_PROG_RANLIB +AC_PROG_MKDIR_P +AC_PROG_YACC + +# Initialize libtool +LT_PREREQ([2.2]) +LT_INIT([disable-static]) + +# Get text +AM_GNU_GETTEXT_VERSION([0.17]) +AM_GNU_GETTEXT([external]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_AWK +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_PROG_RANLIB + +# Checks for libraries. + +# Checks for header files. +AC_CHECK_HEADERS([stdlib.h string.h unistd.h utime.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_TYPE_SIZE_T + +# Checks for library functions. +AC_CHECK_FUNCS([strstr utime]) + + +CFLAGS="$CFLAGS" + +# Library required versions +GLIB_REQUIRED=2.35.1 +GDKPIXBUF_REQUIRED=2.12.0 +QT_REQUIRED=4.7.1 +TRACKER_REQUIRED=0.16.0 + +# Check requirements for libmediaart +LIBMEDIAART_REQUIRED="glib-2.0 >= $GLIB_REQUIRED tracker-sparql-0.16 >= $TRACKER_REQUIRED" +PKG_CHECK_MODULES(LIBMEDIAART, [$LIBMEDIAART_REQUIRED]) + +LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS -lz -lm" + +#################################################################### +# General CFLAGS/LIBS +#################################################################### +BUILD_CFLAGS="${WARN_CFLAGS} -DG_LOG_DOMAIN=\\\"libmediaart\\\" -DLIBMEDIAART_COMPILATION" +BUILD_LIBS="${GCOV_LIBS}" + +AC_SUBST(BUILD_VALAFLAGS) +AC_SUBST(BUILD_CFLAGS) +AC_SUBST(BUILD_LIBS) + +################################################################## +# Check for tracker-extract: GdkPixbuf for MP3 album art +################################################################## + +AC_ARG_ENABLE(gdkpixbuf, + AS_HELP_STRING([--enable-gdkpixbuf], + [enable GdkPixbuf support, (MP3 album art) [[default=auto]]]),, + [enable_gdkpixbuf=auto]) + +################################################################## +# Check for libmediaart-extract: Qt for MP3 album art +################################################################## + +AC_ARG_ENABLE(qt, + AS_HELP_STRING([--enable-qt], + [enable Qt support, (MP3 album art) [[default=auto]]]),, + [enable_qt=auto]) + +selected_for_media_art="no (disabled)" + +################################################################## +# Check for tracker-extract: Choose between GdkPixbuf/Qt +################################################################## + +if test "x$enable_qt" != "xno" && test "x$enable_gdkpixbuf" != "xyes"; then + PKG_CHECK_MODULES(QT, + [QtGui >= $QT_REQUIRED], + [have_qt=yes], + [have_qt=no]) + + LIBMEDIAART_CFLAGS="$LIBMEDIAART_CFLAGS $QT_CFLAGS" + LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS $QT_LIBS" + + if test "x$have_qt" = "xyes"; then + AC_DEFINE(HAVE_QT, [], [Define if we have Qt]) + selected_for_media_art="yes (qt)" + fi +else + have_qt="no (disabled)" +fi + +if test "x$enable_qt" = "xyes"; then + if test "x$have_qt" != "xyes"; then + AC_MSG_ERROR([Couldn't find Qt >= $QT_REQUIRED.]) + fi +fi + +AM_CONDITIONAL(HAVE_QT, test "x$have_qt" = "xyes") + +if test "x$enable_gdkpixbuf" != "xno" && test "x$enable_quill" != "xyes"; then + PKG_CHECK_MODULES(GDKPIXBUF, + [gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED], + [have_gdkpixbuf=yes], + [have_gdkpixbuf=no]) + + LIBMEDIAART_CFLAGS="$LIBMEDIAART_CFLAGS $GDKPIXBUF_CFLAGS" + LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS $GDKPIXBUF_LIBS" + + if test "x$have_gdkpixbuf" = "xyes"; then + AC_DEFINE(HAVE_GDKPIXBUF, [], [Define if we have GdkPixbuf]) + selected_for_media_art="yes (GdkPixbuf)" + fi +else + have_gdkpixbuf="no (disabled)" +fi + +if test "x$enable_gdkpixbuf" = "xyes"; then + if test "x$have_gdkpixbuf" != "xyes"; then + AC_MSG_ERROR([Couldn't find GdkPixbuf >= $GDKPIXBUF_REQUIRED.]) + fi +fi + +AM_CONDITIONAL(HAVE_GDKPIXBUF, test "x$have_gdkpixbuf" = "xyes") + +#################################################################### +# Should we build GLib based unit tests +#################################################################### + +AC_ARG_ENABLE(unit_tests, + AS_HELP_STRING([--enable-unit-tests], + [enable unit tests [[default=yes]]]), , + [enable_unit_tests=yes]) + +if test "x$enable_unit_tests" != "xno" ; then + have_unit_tests=yes + + AC_DEFINE(HAVE_UNIT_TEST, 1, [Define if we have GLib unit test framework]) + + AC_PATH_PROG(gtester, gtester) + if test -z $gtester; then + AC_MSG_ERROR([Could not find 'gtester']) + fi +else + have_unit_tests=no +fi + +AM_CONDITIONAL(HAVE_UNIT_TESTS, test "x$have_unit_tests" = "xyes") + +################################################################## +# Write generated files +################################################################## + +AC_CONFIG_FILES([ + Makefile + libmediaart/Makefile + tests/Makefile +]) + +AC_OUTPUT + +echo " +Build Configuration: + + Prefix: ${prefix} + Source code location: ${srcdir} + Compiler: ${CC} + Compiler Warnings: $enable_compile_warnings + + Enable functional tests: $enable_functional_tests + Enable unit tests: $have_unit_tests + + Support media art processing: $selected_for_media_art +" diff --git a/libmediaart.doap b/libmediaart.doap new file mode 100644 index 0000000..4f29e24 --- /dev/null +++ b/libmediaart.doap @@ -0,0 +1,39 @@ +<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:gnome="http://api.gnome.org/doap-extensions#" + xmlns="http://usefulinc.com/ns/doap#"> + + <name xml:lang="en">libmediaart</name> + <shortdesc xml:lang="en">Library for handling media art</shortdesc> + <description>Library tasked with managing, extracting and handling media art caches</description> + <homepage rdf:resource="https://github.com/curlybeast/libmediaart" /> + <mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/tracker-list" /> + <category rdf:resource="http://api.gnome.org/doap-extensions#platform" /> + <bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=tracker" /> + + <maintainer> + <foaf:Person> + <foaf:name>Martyn Russell</foaf:name> + <foaf:mbox rdf:resource="mailto:martyn@lanedo.com" /> + <gnome:userid>mr</gnome:userid> + </foaf:Person> + </maintainer> + + <maintainer> + <foaf:Person> + <foaf:name>Philip Van Hoof</foaf:name> + <foaf:mbox rdf:resource="mailto:pvanhoof@gnome.org" /> + <gnome:userid>pvanhoof</gnome:userid> + </foaf:Person> + </maintainer> + + <maintainer> + <foaf:Person> + <foaf:name>Sam Thursfield</foaf:name> + <foaf:mbox rdf:resource="mailto:sam.thursfield@codethink.co.uk" /> + <gnome:userid>ssam2</gnome:userid> + </foaf:Person> + </maintainer> + +</Project> diff --git a/libmediaart/Makefile.am b/libmediaart/Makefile.am new file mode 100644 index 0000000..5857c3e --- /dev/null +++ b/libmediaart/Makefile.am @@ -0,0 +1,48 @@ +include $(top_srcdir)/Makefile.decl + +AM_CPPFLAGS = \ + $(BUILD_CFLAGS) \ + $(LIBMEDIAART_CFLAGS) + +# +# Binaries +# +lib_LTLIBRARIES = libmediaart-@LIBMEDIAART_API_VERSION@.la + +libmediaartdir = $(libdir)/libmediaart-$(LIBMEDIAART_API_VERSION)/ +libmediaartincludedir=$(includedir)/libmediaart-$(LIBMEDIAART_API_VERSION)/ + +libmediaart_@LIBMEDIAART_API_VERSION@_la_SOURCES = \ + utils.c \ + utils.h \ + queue.c \ + queue.h \ + extract.c \ + extract.h \ + extractgeneric.h \ + $(backend) + +libmediaartinclude_HEADERS = \ + utils.h \ + queue.h \ + extract.h \ + extractgeneric.h + +if HAVE_GDKPIXBUF +libmediaart_@LIBMEDIAART_API_VERSION@_la_SOURCES += extractpixbuf.c +else +if HAVE_QT +libmediaart_@LIBMEDIAART_API_VERSION@_la_SOURCES += extractqt.cpp +else +libmediaart_@LIBMEDIAART_API_VERSION@_la_SOURCES += extractdummy.c +endif +endif + + +libmediaart_@LIBMEDIAART_API_VERSION@_la_LDFLAGS = \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) + +libmediaart_@LIBMEDIAART_API_VERSION@_la_LIBADD = \ + -lm \ + $(BUILD_LIBS) \ + $(LIBMEDIAART_LIBS) diff --git a/src/tracker-extract/tracker-media-art.c b/libmediaart/extract.c index 6a4b7b3..5ee7bfa 100644 --- a/src/tracker-extract/tracker-media-art.c +++ b/libmediaart/extract.c @@ -35,15 +35,8 @@ #include <glib/gstdio.h> #include <gio/gio.h> -#include <libtracker-miner/tracker-miner.h> -#include <libtracker-common/tracker-file-utils.h> -#include <libtracker-common/tracker-date-time.h> -#include <libtracker-common/tracker-media-art.h> - -#include "tracker-media-art.h" -#include "tracker-extract.h" -#include "tracker-marshal.h" -#include "tracker-media-art-generic.h" +#include "extract.h" +#include "utils.h" #define ALBUMARTER_SERVICE "com.nokia.albumart" #define ALBUMARTER_PATH "/com/nokia/albumart/Requester" @@ -56,7 +49,7 @@ static const gchar *media_art_type_name[TRACKER_MEDIA_ART_TYPE_COUNT] = { }; typedef struct { - TrackerStorage *storage; + void *storage; /* was TrackerStorage *storage; */ gchar *art_path; gchar *local_uri; } GetFileInfo; @@ -77,7 +70,7 @@ typedef enum { static gboolean initialized = FALSE; static gboolean disable_requests; -static TrackerStorage *media_art_storage; +/* static TrackerStorage *media_art_storage; */ static GHashTable *media_art_cache; static GDBusConnection *connection; @@ -777,8 +770,7 @@ media_art_set (const unsigned char *buffer, } static void -media_art_request_download (TrackerStorage *storage, - TrackerMediaArtType type, +media_art_request_download (TrackerMediaArtType type, const gchar *album, const gchar *artist, const gchar *local_uri, @@ -797,8 +789,6 @@ media_art_request_download (TrackerStorage *storage, info = g_slice_new (GetFileInfo); - info->storage = storage ? g_object_ref (storage) : NULL; - info->local_uri = g_strdup (local_uri); info->art_path = g_strdup (art_path); @@ -821,6 +811,8 @@ media_art_request_download (TrackerStorage *storage, } } +#if 0 + static void media_art_copy_to_local (TrackerStorage *storage, const gchar *filename, @@ -891,6 +883,18 @@ media_art_copy_to_local (TrackerStorage *storage, } } +#else +#warning "FIXME: WE don't have TrackerStorage, media_art_copy_to_local() does nothing." + +static void +media_art_copy_to_local (const gchar *filename, + const gchar *local_uri) +{ + g_warning ("FIXME: WE don't have TrackerStorage, media_art_copy_to_local() does nothing."); +} + +#endif + static void media_art_queue_cb (GObject *source_object, GAsyncResult *res, @@ -919,9 +923,7 @@ media_art_queue_cb (GObject *source_object, if (info->storage && info->art_path && g_file_test (info->art_path, G_FILE_TEST_EXISTS)) { - - media_art_copy_to_local (info->storage, - info->art_path, + media_art_copy_to_local (info->art_path, info->local_uri); } @@ -944,8 +946,6 @@ tracker_media_art_init (void) tracker_media_art_plugin_init (); - media_art_storage = tracker_storage_new (); - /* Cache to know if we have already handled uris */ media_art_cache = g_hash_table_new_full (g_str_hash, g_str_equal, @@ -980,10 +980,6 @@ tracker_media_art_shutdown (void) g_hash_table_unref (media_art_cache); } - if (media_art_storage) { - g_object_unref (media_art_storage); - } - tracker_media_art_plugin_shutdown (); initialized = FALSE; @@ -1087,8 +1083,7 @@ tracker_media_art_process (const unsigned char *buffer, * media-art to the media-art * downloaders */ - media_art_request_download (media_art_storage, - type, + media_art_request_download (type, artist, title, local_art_uri, @@ -1116,9 +1111,7 @@ tracker_media_art_process (const unsigned char *buffer, * situation might have changed */ if (g_file_test (art_path, G_FILE_TEST_EXISTS)) { - media_art_copy_to_local (media_art_storage, - art_path, - local_art_uri); + media_art_copy_to_local (art_path, local_art_uri); } } diff --git a/src/tracker-extract/tracker-media-art.h b/libmediaart/extract.h index 980239a..d20bae0 100644 --- a/src/tracker-extract/tracker-media-art.h +++ b/libmediaart/extract.h @@ -17,11 +17,15 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __TRACKER_EXTRACT_MEDIA_ART_H__ -#define __TRACKER_EXTRACT_MEDIA_ART_H__ +#ifndef __LIBMEDIAART_EXTRACT_H__ +#define __LIBMEDIAART_EXTRACT_H__ #include <glib.h> +#if !defined (__LIBMEDIAART_INSIDE__) && !defined (LIBMEDIAART_COMPILATION) +#error "Only <libmediaart/mediaart.h> must be included directly." +#endif + G_BEGIN_DECLS typedef enum { @@ -44,4 +48,4 @@ gboolean tracker_media_art_process (const unsigned char *buffer, G_END_DECLS -#endif /* __TRACKER_EXTRACT_MEDIA_ART_H__ */ +#endif /* __LIBMEDIAART_UTILS_H__ */ diff --git a/src/tracker-extract/tracker-media-art-dummy.c b/libmediaart/extractdummy.c index 64462b7..64462b7 100644 --- a/src/tracker-extract/tracker-media-art-dummy.c +++ b/libmediaart/extractdummy.c diff --git a/src/tracker-extract/tracker-media-art-generic.h b/libmediaart/extractgeneric.h index 53bbab6..eb9ebf4 100644 --- a/src/tracker-extract/tracker-media-art-generic.h +++ b/libmediaart/extractgeneric.h @@ -20,14 +20,19 @@ * Philip Van Hoof <philip@codeminded.be> */ -#ifndef __TRACKER_MEDIA_ART_GENERIC_H__ -#define __TRACKER_MEDIA_ART_GENERIC_H__ + +#ifndef __LIBMEDIAART_EXTRACTGENERIC_H__ +#define __LIBMEDIAART_EXTRACTGENERIC_H__ #include <glib.h> +#if !defined (__LIBMEDIAART_INSIDE__) && !defined (LIBMEDIAART_COMPILATION) +#error "Only <libmediaart/mediaart.h> must be included directly." +#endif + G_BEGIN_DECLS -void tracker_media_art_plugin_init (void); +void tracker_media_art_plugin_init (gint max_width); void tracker_media_art_plugin_shutdown (void); gboolean tracker_media_art_file_to_jpeg (const gchar *filename, @@ -39,4 +44,4 @@ gboolean tracker_media_art_buffer_to_jpeg (const unsigned char *buffer, G_END_DECLS -#endif /* __TRACKER_MEDIA_ART_GENERIC_H__ */ +#endif /* __LIBMEDIAART_EXTRACTGENERIC_H__ */ diff --git a/src/tracker-extract/tracker-media-art-pixbuf.c b/libmediaart/extractpixbuf.c index 3ed7684..6dedab5 100644 --- a/src/tracker-extract/tracker-media-art-pixbuf.c +++ b/libmediaart/extractpixbuf.c @@ -22,13 +22,16 @@ #include <gdk-pixbuf/gdk-pixbuf.h> -#include "tracker-media-art-generic.h" +#include "extractgeneric.h" -#include "tracker-main.h" +static gint max_width_in_bytes = 0; void -tracker_media_art_plugin_init (void) +tracker_media_art_plugin_init (gint max_width) { + g_return_if_fail (max_width >= 0); + + max_width_in_bytes = max_width; } void @@ -42,13 +45,6 @@ tracker_media_art_file_to_jpeg (const gchar *filename, { GdkPixbuf *pixbuf; GError *error = NULL; - TrackerConfig *config = tracker_main_get_config (); - gint max_media_art_width = tracker_config_get_max_media_art_width (config); - - if (max_media_art_width < 0) { - g_debug ("Not saving album art from file, disabled in config"); - return TRUE; - } /* TODO: Add resizing support */ @@ -77,17 +73,15 @@ size_prepared_cb (GdkPixbufLoader *loader, gint height, gpointer user_data) { - TrackerConfig *config = tracker_main_get_config (); - gint max_media_art_width = tracker_config_get_max_media_art_width (config); gfloat scale; - if (max_media_art_width < 1 || width <= max_media_art_width) { + if (max_width_in_bytes < 1 || width <= max_width_in_bytes) { return; } - g_debug ("Resizing media art to %d width", max_media_art_width); + g_debug ("Resizing media art to %d width", max_width_in_bytes); - scale = width / (gfloat) max_media_art_width; + scale = width / (gfloat) max_width_in_bytes; gdk_pixbuf_loader_set_size (loader, (gint) (width / scale), (gint) (height / scale)); } @@ -98,16 +92,13 @@ tracker_media_art_buffer_to_jpeg (const unsigned char *buffer, const gchar *buffer_mime, const gchar *target) { - TrackerConfig *config = tracker_main_get_config (); - gint max_media_art_width = tracker_config_get_max_media_art_width (config); - - if (max_media_art_width < 0) { + if (max_width_in_bytes < 0) { g_debug ("Not saving album art from buffer, disabled in config"); return TRUE; } /* FF D8 FF are the three first bytes of JPeg images */ - if (max_media_art_width == 0 && + if (max_width_in_bytes == 0 && (g_strcmp0 (buffer_mime, "image/jpeg") == 0 || g_strcmp0 (buffer_mime, "JPG") == 0) && (buffer && len > 2 && buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff)) { @@ -120,10 +111,10 @@ tracker_media_art_buffer_to_jpeg (const unsigned char *buffer, g_debug ("Saving album art using GdkPixbufLoader for uri:'%s' (max width:%d)", target, - max_media_art_width); + max_width_in_bytes); loader = gdk_pixbuf_loader_new (); - if (max_media_art_width > 0) { + if (max_width_in_bytes > 0) { g_signal_connect (loader, "size-prepared", G_CALLBACK (size_prepared_cb), diff --git a/src/tracker-extract/tracker-media-art-qt.cpp b/libmediaart/extractqt.cpp index 74aad18..74aad18 100644 --- a/src/tracker-extract/tracker-media-art-qt.cpp +++ b/libmediaart/extractqt.cpp diff --git a/libmediaart/mediaart.h b/libmediaart/mediaart.h new file mode 100644 index 0000000..d8ade88 --- /dev/null +++ b/libmediaart/mediaart.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2009, Nokia <ivan.frade@nokia.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __LIBMEDIAART_H__ +#define __LIBMEDIAART_H__ + +#define __LIBMEDIAART_H_INSIDE__ + +#include <libmediaart/extract.h> +#include <libmediaart/extractgeneric.h> +#include <libmediaart/queue.h> +#include <libmediaart/utils.h> + +#undef __LIBMEDIAART_H_INSIDE__ + +#endif /* __LIBMEDIAART_H__ */ diff --git a/src/libtracker-miner/tracker-media-art.c b/libmediaart/queue.c index fb92d24..97a889f 100644 --- a/src/libtracker-miner/tracker-media-art.c +++ b/libmediaart/queue.c @@ -24,11 +24,8 @@ #include <glib.h> #include <glib/gstdio.h> -#include <libtracker-common/tracker-media-art.h> #include <libtracker-sparql/tracker-sparql.h> -#include "tracker-media-art.h" - /** * SECTION:tracker-media-art * @title: Media art management diff --git a/src/libtracker-miner/tracker-media-art.h b/libmediaart/queue.h index f36f444..f71b0ee 100644 --- a/src/libtracker-miner/tracker-media-art.h +++ b/libmediaart/queue.h @@ -17,13 +17,13 @@ * 02110-1301 USA */ -#ifndef __LIBTRACKER_MINER_MEDIA_ART_H__ -#define __LIBTRACKER_MINER_MEDIA_ART_H__ +#ifndef __LIBMEDIAART_QUEUE_H__ +#define __LIBMEDIAART_QUEUE_H__ #include <libtracker-sparql/tracker-sparql.h> -#if !defined (__LIBTRACKER_MINER_H_INSIDE__) && !defined (TRACKER_COMPILATION) -#error "Only <libtracker-miner/tracker-miner.h> can be included directly." +#if !defined (__LIBMEDIAART_INSIDE__) && !defined (LIBMEDIAART_COMPILATION) +#error "Only <libmediaart/mediaart.h> must be included directly." #endif G_BEGIN_DECLS @@ -34,4 +34,4 @@ void tracker_media_art_queue_empty (TrackerSparqlConnection *connection); G_END_DECLS -#endif /* __LIBTRACKER_MINER_MEDIA_ART_H__ */ +#endif /* __LIBMEDIAART_QUEUE_H__ */ diff --git a/src/libtracker-common/tracker-media-art.c b/libmediaart/utils.c index b5dfa5c..6374ae3 100644 --- a/src/libtracker-common/tracker-media-art.c +++ b/libmediaart/utils.c @@ -34,10 +34,6 @@ #include <glib/gstdio.h> #include <gio/gio.h> -#include "tracker-file-utils.h" -#include "tracker-date-time.h" -#include "tracker-media-art.h" - static gboolean media_art_strip_find_next_block (const gchar *original, const gunichar open_char, diff --git a/src/libtracker-common/tracker-media-art.h b/libmediaart/utils.h index 73ffa0c..6c0af13 100644 --- a/src/libtracker-common/tracker-media-art.h +++ b/libmediaart/utils.h @@ -17,17 +17,17 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __LIBTRACKER_COMMON_MEDIA_ART_H__ -#define __LIBTRACKER_COMMON_MEDIA_ART_H__ +#ifndef __LIBMEDIAART_UTILS_H__ +#define __LIBMEDIAART_UTILS_H__ #include <glib.h> -G_BEGIN_DECLS - -#if !defined (__LIBTRACKER_COMMON_INSIDE__) && !defined (TRACKER_COMPILATION) -#error "only <libtracker-common/tracker-common.h> must be included directly." +#if !defined (__LIBMEDIAART_INSIDE__) && !defined (LIBMEDIAART_COMPILATION) +#error "Only <libmediaart/mediaart.h> must be included directly." #endif +G_BEGIN_DECLS + gchar * tracker_media_art_strip_invalid_entities (const gchar *original); void tracker_media_art_get_path (const gchar *artist, const gchar *album, @@ -39,4 +39,4 @@ void tracker_media_art_get_path (const gchar *artist, G_END_DECLS -#endif /* __LIBTRACKER_COMMON_MEDIA_ART_H__ */ +#endif /* __LIBMEDIAART_UTILS_H__ */ diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..6d907fb --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,19 @@ +include $(top_srcdir)/Makefile.decl + +noinst_PROGRAMS = $(TEST_PROGS) + +TEST_PROGS += mediaarttest + +AM_CPPFLAGS = \ + -DTOP_SRCDIR=\"$(abs_top_srcdir)\" \ + -DTOP_BUILDDIR=\"$(abs_top_builddir)\" \ + $(BUILD_CFLAGS) \ + -I$(top_srcdir)/libmediaart \ + $(LIBMEDIAART_CFLAGS) + +LDADD = \ + $(top_builddir)/libmediaart/libmediaart-@LIBMEDIAART_API_VERSION@.la \ + $(BUILD_LIBS) \ + $(LIBMEDIAART_LIBS) + +mediaarttest = mediaarttest.c diff --git a/tests/libtracker-common/tracker-media-art-test.c b/tests/mediaarttest.c index c5114c0..187b9d2 100644 --- a/tests/libtracker-common/tracker-media-art-test.c +++ b/tests/mediaarttest.c @@ -19,7 +19,7 @@ #include <glib-object.h> -#include <libtracker-common/tracker-common.h> +#include <libmediaart/mediaart.h> struct { const gchar *input; |