summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am3
-rw-r--r--configure.ac10
-rw-r--r--plugins/taglib/Makefile.am8
-rw-r--r--plugins/taglib/taglib.c53
-rw-r--r--plugins/taglib/taglib.h43
5 files changed, 116 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index 91d16383..a7eea18a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -23,7 +23,8 @@ SUBDIRS = ${MPGMAD_DIR}\
${OSS_DIR}\
${PULSE_DIR}\
${ARTWORK_DIR}\
- plugins/supereq
+ plugins/supereq\
+ ${TAGLIB_DIR}
dumbpath=@top_srcdir@/dumb
gmepath=@top_srcdir@/gme/Game_Music_Emu-0.5.2
diff --git a/configure.ac b/configure.ac
index 369becdf..29cec518 100644
--- a/configure.ac
+++ b/configure.ac
@@ -49,6 +49,7 @@ PKG_CHECK_MODULES(GTKUI_DEPS, gtk+-2.0 >= 2.12 gthread-2.0 glib-2.0, HAVE_GTK=1,
PKG_CHECK_MODULES(ALSA_DEPS, alsa, HAVE_ALSA=1, NO_ALSA=1)
PKG_CHECK_MODULES(FFMPEG_DEPS, libavcodec >= 51.0.0 libavutil libavformat >= 52.0.0, HAVE_FFMPEG=1, NO_FFMPEG=1)
PKG_CHECK_MODULES(PULSE_DEPS, libpulse-simple, HAVE_PULSE=1, NO_PULSE=1)
+PKG_CHECK_MODULES(TAGLIB_DEPS, taglib, HAVE_TAGLIB=yes, HAVE_TAGLIB=no)
AC_ARG_ENABLE(libnotify, [ --enable-libnotify Enable support for OSD notifications], [libnotify=yes])
@@ -268,6 +269,13 @@ if test ${HAVE_CURL}; then
AC_SUBST(ARTWORK_DIR)
fi
+if test "x$HAVE_TAGLIB" = "xyes" ; then
+ TAGLIB_DIR="plugins/taglib"
+ AC_SUBST(TAGLIB_DIR)
+ AC_SUBST(TAGLIB_DEPS_CFLAGS)
+ AC_SUBST(TAGLIB_DEPS_LIBS)
+fi
+
dnl print summary
echo
echo "plugin summary:"
@@ -309,6 +317,7 @@ PRINT_PLUGIN_INFO([oss],[oss output plugin],[test "x$have_oss" = "xyes"])
PRINT_PLUGIN_INFO([pulse],[PulseAudio output plugin],[test $HAVE_PULSE])
PRINT_PLUGIN_INFO([artwork],[Cover art plugin],[test $HAVE_ARTWORK])
PRINT_PLUGIN_INFO([supereq],[Equalizer based on Super EQ library by Naoki Shibata],[true])
+PRINT_PLUGIN_INFO([taglib],[Tag writer plugin based on taglib],[test "x$HAVE_TAGLIB" = "xyes"])
echo
AC_OUTPUT([
@@ -340,6 +349,7 @@ plugins/oss/Makefile
plugins/pulse/Makefile
plugins/artwork/Makefile
plugins/supereq/Makefile
+plugins/taglib/Makefile
deadbeef.desktop
])
diff --git a/plugins/taglib/Makefile.am b/plugins/taglib/Makefile.am
new file mode 100644
index 00000000..76485739
--- /dev/null
+++ b/plugins/taglib/Makefile.am
@@ -0,0 +1,8 @@
+taglibdir = $(libdir)/$(PACKAGE)
+pkglib_LTLIBRARIES = taglib.la
+taglib_la_SOURCES = taglib.c
+
+taglib_la_LDFLAGS = -module
+
+taglib_la_LIBADD = $(LDADD) $(TAGLIB_DEPS_LIBS)
+AM_CFLAGS = -std=c99 $(TAGLIB_DEPS_CFLAGS)
diff --git a/plugins/taglib/taglib.c b/plugins/taglib/taglib.c
new file mode 100644
index 00000000..b260ad2d
--- /dev/null
+++ b/plugins/taglib/taglib.c
@@ -0,0 +1,53 @@
+/*
+ DeaDBeeF - ultimate music player for GNU/Linux systems with X11
+ Copyright (C) 2009-2010 Alexey Yakovenko <waker@users.sourceforge.net>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+#include <tag_c.h>
+#include "../../deadbeef.h"
+#include "taglib.h"
+
+DB_functions_t *deadbeef;
+
+int
+taglib_plugin_start (void) {
+ return 0;
+}
+
+int
+taglib_plugin_stop (void) {
+ return 0;
+}
+
+static DB_taglib_t plugin = {
+ .misc.plugin.api_vmajor = DB_API_VERSION_MAJOR,
+ .misc.plugin.api_vminor = DB_API_VERSION_MINOR,
+ .misc.plugin.type = DB_PLUGIN_MISC,
+ .misc.plugin.id = "taglib",
+ .misc.plugin.name = "Taglib tag writer",
+ .misc.plugin.descr = "Tag writing plugin based on Taglib",
+ .misc.plugin.author = "Alexey Yakovenko",
+ .misc.plugin.email = "waker@users.sourceforge.net",
+ .misc.plugin.website = "http://deadbeef.sf.net",
+ .misc.plugin.start = taglib_plugin_start,
+ .misc.plugin.stop = taglib_plugin_stop,
+};
+
+DB_plugin_t *
+taglib_load (DB_functions_t *api) {
+ deadbeef = api;
+ return DB_PLUGIN (&plugin);
+}
diff --git a/plugins/taglib/taglib.h b/plugins/taglib/taglib.h
new file mode 100644
index 00000000..f887ec64
--- /dev/null
+++ b/plugins/taglib/taglib.h
@@ -0,0 +1,43 @@
+/*
+ DeaDBeeF - ultimate music player for GNU/Linux systems with X11
+ Copyright (C) 2009-2010 Alexey Yakovenko <waker@users.sourceforge.net>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+#ifndef __TAGLIB_H
+#define __TAGLIB_H
+
+typedef void * DB_taglib_file_t;
+
+typedef struct DB_taglib_s {
+ DB_misc_t misc;
+ DB_taglib_file_t (*open) (const char *fname);
+ int (*write) (DB_taglib_file_t file);
+ void (*close) (DB_taglib_file_t file);
+ void (*set_artist) (DB_taglib_file_t file);
+ void (*set_album_artist) (DB_taglib_file_t file);
+ void (*set_title) (DB_taglib_file_t file);
+ void (*set_track_number) (DB_taglib_file_t file);
+ void (*set_album) (DB_taglib_file_t file);
+ void (*set_genre) (DB_taglib_file_t file);
+ void (*set_date) (DB_taglib_file_t file);
+ void (*set_performer) (DB_taglib_file_t file);
+ void (*set_composer) (DB_taglib_file_t file);
+ void (*set_total_tracks) (DB_taglib_file_t file);
+ void (*set_disc_number) (DB_taglib_file_t file);
+ void (*set_comment) (DB_taglib_file_t file);
+} DB_taglib_t;
+
+#endif