diff options
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | configure.ac | 10 | ||||
-rw-r--r-- | plugins/taglib/Makefile.am | 8 | ||||
-rw-r--r-- | plugins/taglib/taglib.c | 53 | ||||
-rw-r--r-- | plugins/taglib/taglib.h | 43 |
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 |