Revision: 2321
http://gtkpod.svn.sourceforge.net/gtkpod/?rev=2321&view=rev
Author: dudyk
Date: 2009-04-17 12:56:27 +0000 (Fri, 17 Apr 2009)
Log Message:
-----------
Fixes in configure and added the patch
Modified Paths:
--------------
gtkpod/branches/taglib-branch/ChangeLog
gtkpod/branches/taglib-branch/configure.in
Added Paths:
-----------
gtkpod/branches/taglib-branch/taglib_bindings.patch
Modified: gtkpod/branches/taglib-branch/ChangeLog
===================================================================
--- gtkpod/branches/taglib-branch/ChangeLog 2009-04-17 11:00:30 UTC (rev
2320)
+++ gtkpod/branches/taglib-branch/ChangeLog 2009-04-17 12:56:27 UTC (rev
2321)
@@ -1,5 +1,10 @@
2009-04-17 David Kohen <dudyk at users.sourceforge.net>
+ * configure.in: Removed conflict markers, another fix for TagLib tests,
should work now, testers are welcome
+ * taglib_bindings.patch: Added the patch file to the repository, for
use against taglib-1.5
+
+2009-04-17 David Kohen <dudyk at users.sourceforge.net>
+
* configure.in: Fixed tests and include for TagLib
2009-04-17 Paul Richardson <phantom_sf at users.sourceforge.net>
Modified: gtkpod/branches/taglib-branch/configure.in
===================================================================
--- gtkpod/branches/taglib-branch/configure.in 2009-04-17 11:00:30 UTC (rev
2320)
+++ gtkpod/branches/taglib-branch/configure.in 2009-04-17 12:56:27 UTC (rev
2321)
@@ -50,8 +50,6 @@
CFLAGS="$CFLAGS $GTK_CFLAGS $GLIB_CFLAGS $GMODULE_CFLAGS $GTHREAD_CFLAGS
$LIBGLADE_CFLAGS $LIBGPOD_CFLAGS"
LIBS="$LIBS $GTK_LIBS $GLIB_LIBS $GMODULE_LIBS $GTHREAD_LIBS $LIBGLADE_LIBS
$LIBGPOD_LIBS"
-<<<<<<< HEAD:gtkpod/trunk/configure.in
-=======
dnl Check for TagLib's C bindings
AC_ARG_WITH(taglib, AC_HELP_STRING([--without-taglib],[Disable TagLib, use
only id3lib (has problems writing tags)]))
if test "x$with_taglib" != "xno"; then
@@ -64,7 +62,7 @@
if test "x$have_taglib_pkg" = "xyes"; then
OLD_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $TAGLIB_C_CFLAGS"
- AC_SEARCH_LIBS([taglib_id3v2_has_lyrics], ["tag_c tag"],
taglib_has_lyrics=yes,taglib_has_lyrics=no)
+ AC_SEARCH_LIBS([taglib_id3v2_has_lyrics], ["tag_c"],
taglib_has_lyrics=yes,taglib_has_lyrics=no)
if test "x$taglib_has_lyrics" = "xyes"; then
have_taglib="yes -- will build with TagLib support"
AC_DEFINE(USE_TAGLIB, 1, [Define if you have TagLib support])
@@ -77,7 +75,6 @@
have_taglib="*no -- will build without taglib support (problems writing
tags, especially lyrics)"
fi
->>>>>>> Fixed configure for taglib:gtkpod/trunk/configure.in
dnl we need 'flex'
AM_PROG_LEX
case "$LEX" in
@@ -345,6 +342,7 @@
GLib2/GThread version : `$PKG_CONFIG gthread-2.0 --modversion`
libgpod version ......: $libgpod_version
gnome-vfs.............: $have_gnome_vfs
+ TagLib................: $have_taglib
hal...................: $have_hal
libcurl ..............: $have_curl
mp4v2 ................: $have_mp4v2
Added: gtkpod/branches/taglib-branch/taglib_bindings.patch
===================================================================
--- gtkpod/branches/taglib-branch/taglib_bindings.patch
(rev 0)
+++ gtkpod/branches/taglib-branch/taglib_bindings.patch 2009-04-17 12:56:27 UTC
(rev 2321)
@@ -0,0 +1,467 @@
+diff -ur taglib_orig/bindings/c/tag_c.cpp taglib-1.5/bindings/c/tag_c.cpp
+--- taglib_orig/bindings/c/tag_c.cpp 2008-02-12 06:43:44.000000000 +0200
++++ taglib-1.5/bindings/c/tag_c.cpp 2009-04-16 02:57:07.000000000 +0300
+@@ -1,6 +1,8 @@
+ /***************************************************************************
+ copyright : (C) 2003 by Scott Wheeler
+ email : [email protected]
++ added code copyright : (C) 2009 by David Kohen
++ email : dudyk NO-SPAM at users dot sourceforge dot net
+ ***************************************************************************/
+
+ /***************************************************************************
+@@ -35,6 +37,11 @@
+ #include <tag.h>
+ #include <string.h>
+ #include <id3v2framefactory.h>
++#include <id3v2tag.h>
++#include "frames/unsynchronizedlyricsframe.h"
++#include "frames/attachedpictureframe.h"
++#include "frames/textidentificationframe.h"
++#include "frames/unknownframe.h"
+
+ using namespace TagLib;
+
+@@ -275,3 +282,319 @@
+
+ ID3v2::FrameFactory::instance()->setDefaultTextEncoding(type);
+ }
++
++/* Code added by David Kohen (c) 2009 */
++
++ID3v2::Tag* get_id3v2_tag(TagLib_File *file){
++ const File *f = reinterpret_cast<const File *>(file);
++ const FileName fileName = f->name();
++ String s;
++#ifdef _WIN32
++ s = (wcslen((const wchar_t *) fileName) > 0) ? String((const wchar_t *)
fileName) : String((const char *) fileName);
++#else
++ s = fileName;
++#endif
++
++ ID3v2::Tag* t = NULL;
++
++ if(s.size() > 4) {
++ if(s.substr(s.size() - 4, 4).upper() == ".MP3")
++ t=((TagLib::MPEG::File*)f)->ID3v2Tag();
++ }
++ return t;
++}
++
++BOOL taglib_id3v2_has_lyrics(TagLib_File *file){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ TagLib::ByteVector uslt("USLT",4);
++ return !t->frameList(uslt).isEmpty();
++ }
++ return 0;
++}
++
++char* taglib_id3v2_get_lyrics(TagLib_File *file){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ TagLib::ByteVector id("USLT",4);
++ ID3v2::FrameList fl=t->frameList(id);
++ if (!fl.isEmpty()){
++ char *s = ::strdup(fl.front()->toString().toCString(unicodeStrings));
++ if(stringManagementEnabled)
++ strings.append(s);
++ return s;
++ }
++ }
++ return 0;
++}
++
++BOOL taglib_id3v2_set_lyrics(TagLib_File *file,const char* lyrics){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ TagLib::ByteVector id("USLT",4);
++ t->removeFrames(id);
++
++ ID3v2::UnsynchronizedLyricsFrame *uslt_frame=new
++
ID3v2::UnsynchronizedLyricsFrame(ID3v2::FrameFactory::instance()->defaultTextEncoding());
++
++ if ((lyrics)&&(*lyrics!='\0')) {
++ String s2(lyrics, unicodeStrings ? String::UTF8 : String::Latin1);
++#if 0
++ s2.append(String(" ", unicodeStrings ? String::UTF8 : String::Latin1));
++#endif
++ uslt_frame->setText(s2);
++#if 0
++ TagLib::ByteVector buff(uslt_frame->render());
++ if (1==1) {
++ String::Type encoding=uslt_frame->textEncoding();
++ buff.data()[buff.size()-1]='\0';
++ if (!((encoding == String::Latin1) || (encoding == String::UTF8))) {
++ buff.resize(buff.size()+1,0);
++ }
++ ID3v2::UnknownFrame *uf=new ID3v2::UnknownFrame(buff);
++ t->addFrame(uf);
++ delete (uslt_frame);
++ //delete (buff);
++ } else {
++ t->addFrame(uslt_frame);
++ }
++#endif
++ t->addFrame(uslt_frame);
++ }
++ return 1;
++ }
++ return 0;
++}
++
++BOOL taglib_id3v2_set_string_frame(TagLib_File *file,const char* data,const
char* frame_id){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if ((t)&&(strlen(frame_id)==4)){
++ TagLib::ByteVector id(frame_id,4);
++
++ ID3v2::FrameList fl=t->frameList(id);
++ ID3v2::TextIdentificationFrame *frame=NULL;
++ if (fl.isEmpty() && (data) && (*data!='\0')) {
++ frame=new
ID3v2::TextIdentificationFrame(id,ID3v2::FrameFactory::instance()->defaultTextEncoding());
++ fl.prepend(frame);
++ t->addFrame(frame);
++ }
++ if ((data) && (*data!='\0')) {
++ frame=(ID3v2::TextIdentificationFrame*)fl.front();
++ frame->setText(String(data, unicodeStrings ? String::UTF8 :
String::Latin1));
++ } else {
++ t->removeFrames(id);
++ }
++ return 1;
++ }
++ return 0;
++}
++
++char* taglib_id3v2_get_string_frame(TagLib_File *file,const char* frame_id){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if ((t)&&(strlen(frame_id)==4)){
++ TagLib::ByteVector id(frame_id,4);
++ ID3v2::FrameList fl=t->frameList(id);
++ if (!fl.isEmpty()){
++ char *s2 = NULL;
++ if (id.startsWith("Y")) {
++ if ((id=="YTID")||(id=="YWFD")||(id=="YTDS")||(id=="YTDR")) {
++ ID3v2::TextIdentificationFrame *frame=new
++ ID3v2::TextIdentificationFrame(fl.front()->render());
++ s2 = ::strdup(frame->toString().toCString(unicodeStrings));
++ delete (frame);
++ }
++ } else {
++ s2 = ::strdup(fl.front()->toString().toCString(unicodeStrings));
++ }
++ if(s2 && stringManagementEnabled)
++ strings.append(s2);
++ return s2;
++ }
++ }
++ return 0;
++}
++
++char* taglib_id3v2_get_lyrics_detail(TagLib_File *file, char* description,
char* lang){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ TagLib::ByteVector id("USLT",4);
++ ID3v2::FrameList fl=t->frameList(id);
++ if (!fl.isEmpty()){
++ ID3v2::UnsynchronizedLyricsFrame *fr=NULL;
++ for(ID3v2::FrameList::Iterator it = fl.begin(); it != fl.end(); ++it){
++ ID3v2::UnsynchronizedLyricsFrame *temp;
++ temp=(ID3v2::UnsynchronizedLyricsFrame *)*it;
++ if ((temp->description()==String(description)) &&
(temp->language()==lang))
++ fr=(ID3v2::UnsynchronizedLyricsFrame *)*it;
++ }
++ if (fr) {
++ char *s = ::strdup(fr->toString().toCString(unicodeStrings));
++ if(stringManagementEnabled)
++ strings.append(s);
++ return s;
++ }
++ }
++ }
++ return 0;
++}
++
++BOOL taglib_id3v2_set_lyrics_detail(TagLib_File *file,const char* lyrics,
char* description, char* lang){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ TagLib::ByteVector id("USLT",4);
++ ID3v2::FrameList fl=t->frameList(id);
++ ID3v2::UnsynchronizedLyricsFrame *fr=NULL;
++ if (!fl.isEmpty()){
++ ID3v2::UnsynchronizedLyricsFrame *temp;
++ for(ID3v2::FrameList::Iterator it = fl.begin(); it != fl.end(); ++it){
++ temp=(ID3v2::UnsynchronizedLyricsFrame *)*it;
++ if ((temp->description()==String(description, unicodeStrings ?
String::UTF8 : String::Latin1)) && (temp->language()==lang))
++ fr=(ID3v2::UnsynchronizedLyricsFrame *)*it;
++ }
++ if (fr) {
++ if ((lyrics)&&(*lyrics!='\0')) {
++ fr->setText(String(lyrics, unicodeStrings ? String::UTF8 :
String::Latin1));
++ } else {
++ t->removeFrame(fr,true);
++ }
++ } else {
++ ID3v2::UnsynchronizedLyricsFrame *uslt_frame=new
++
ID3v2::UnsynchronizedLyricsFrame(ID3v2::FrameFactory::instance()->defaultTextEncoding());
++
++ if ((lyrics)&&(*lyrics!='\0')) {
++ uslt_frame->setText(String(lyrics, unicodeStrings ? String::UTF8 :
String::Latin1));
++ if (description && (strlen(description) > 0))
++ uslt_frame->setDescription(String(description, unicodeStrings ?
String::UTF8 : String::Latin1));
++ if (lang && (strlen(lang) == 3))
++ uslt_frame->setLanguage(ByteVector(lang,3));
++ t->addFrame(uslt_frame);
++ }
++ }
++ } else {
++ ID3v2::UnsynchronizedLyricsFrame *uslt_frame=new
++
ID3v2::UnsynchronizedLyricsFrame(ID3v2::FrameFactory::instance()->defaultTextEncoding());
++
++ if ((lyrics)&&(*lyrics!='\0')) {
++ uslt_frame->setText(String(lyrics, unicodeStrings ? String::UTF8 :
String::Latin1));
++ if (description && (strlen(description) > 0))
++ uslt_frame->setDescription(String(description, unicodeStrings ?
String::UTF8 : String::Latin1));
++ if (lang && (strlen(lang) == 3))
++ uslt_frame->setLanguage(ByteVector(lang,3));
++ t->addFrame(uslt_frame);
++ }
++ }
++
++ return 1;
++ }
++ return 0;
++}
++
++
++char* taglib_id3v2_get_user_string(TagLib_File *file,char* description){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ ID3v2::UserTextIdentificationFrame*
f=ID3v2::UserTextIdentificationFrame::find(t,String(description, unicodeStrings
? String::UTF8 : String::Latin1));
++ if (f) {
++ char *s=NULL;
++ s = ::strdup(f->toString().toCString(unicodeStrings));
++ if(stringManagementEnabled)
++ strings.append(s);
++ return s;
++ }
++ }
++ return 0;
++}
++
++BOOL taglib_id3v2_set_user_string(TagLib_File *file,const char* string,char*
description){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ ID3v2::UserTextIdentificationFrame*
f=ID3v2::UserTextIdentificationFrame::find(t,String(description, unicodeStrings
? String::UTF8 : String::Latin1));
++ if (f) {
++ f->setText(String(string, unicodeStrings ? String::UTF8 :
String::Latin1));
++ } else {
++ f=new ID3v2::UserTextIdentificationFrame(unicodeStrings ? String::UTF8
: String::Latin1);
++ f->setDescription(String(description, unicodeStrings ? String::UTF8 :
String::Latin1));
++ f->setText(String(string, unicodeStrings ? String::UTF8 :
String::Latin1));
++ t->addFrame(f);
++ }
++ return 1;
++ }
++ return 0;
++}
++
++BOOL taglib_id3v2_set_APIC(TagLib_File *file,const char* data,char type,
unsigned int size){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ TagLib::ByteVector id("APIC",4);
++ ID3v2::FrameList fl=t->frameList(id);
++ ID3v2::AttachedPictureFrame* f=NULL;
++ if (!fl.isEmpty()){
++ ID3v2::AttachedPictureFrame *temp;
++ for(ID3v2::FrameList::Iterator it = fl.begin(); it != fl.end(); ++it){
++ temp=(ID3v2::AttachedPictureFrame *)*it;
++ if (temp->type()==type)
++ f=temp;
++ }
++ if (f) {
++ if ((size) && (data) && (*data)) {
++ f->setPicture(TagLib::ByteVector(data,size));
++ } else {
++ t->removeFrame(f);
++ }
++ } else {
++ if ((size) && (data) && (*data)) {
++ f=new ID3v2::AttachedPictureFrame();
++ f->setPicture(TagLib::ByteVector(data,size));
++ f->setType((ID3v2::AttachedPictureFrame::Type)type);
++ t->addFrame(f);
++ }
++ }
++ } else {
++ if ((size) && (data) && (*data)) {
++ f=new ID3v2::AttachedPictureFrame();
++ f->setPicture(TagLib::ByteVector(data,size));
++ f->setType((ID3v2::AttachedPictureFrame::Type)type);
++ t->addFrame(f);
++ }
++ }
++ return 1;
++ }
++ return 0;
++}
++
++BOOL taglib_id3v2_get_APIC(TagLib_File *file,char* buff,char type, unsigned
int* size){
++ ID3v2::Tag* t = get_id3v2_tag(file);
++
++ if (t){
++ TagLib::ByteVector id("APIC",4);
++ ID3v2::FrameList fl=t->frameList(id);
++ ID3v2::AttachedPictureFrame* f=NULL;
++ if (!fl.isEmpty()){
++ ID3v2::AttachedPictureFrame *temp;
++ for(ID3v2::FrameList::Iterator it = fl.begin(); it != fl.end(); ++it){
++ temp=(ID3v2::AttachedPictureFrame *)*it;
++ if (temp->type()==type)
++ f=temp;
++ }
++ if (f) {
++ if (size) {
++ *size=f->picture().size();
++ if (buff && (*buff))
++ memcpy(buff,f->picture().data(),f->picture().size());
++ return 1;
++ }
++ }
++ }
++ }
++ return 0;
++}
+diff -ur taglib_orig/bindings/c/tag_c.h taglib-1.5/bindings/c/tag_c.h
+--- taglib_orig/bindings/c/tag_c.h 2008-01-26 22:18:58.000000000 +0200
++++ taglib-1.5/bindings/c/tag_c.h 2009-04-15 20:10:05.000000000 +0300
+@@ -281,6 +281,60 @@
+
+ TAGLIB_C_EXPORT void
taglib_id3v2_set_default_text_encoding(TagLib_ID3v2_Encoding encoding);
+
++/*!
++ * This sets a string frame (T***).
++ */
++TAGLIB_C_EXPORT BOOL taglib_id3v2_set_string_frame(TagLib_File *file,const
char* data,const char* frame_id);
++/*!
++ * This gets a string frame (T***).
++ */
++TAGLIB_C_EXPORT char* taglib_id3v2_get_string_frame(TagLib_File *file,const
char* frame_id);
++/*!
++ * This gets a user string frame by description (TXXX).
++ */
++TAGLIB_C_EXPORT char* taglib_id3v2_get_user_string(TagLib_File *file,char*
description);
++/* The following function was not tested!! */
++/*!
++ * This sets a user string frame with description (TXXX).
++ */
++TAGLIB_C_EXPORT BOOL taglib_id3v2_set_user_string(TagLib_File *file,const
char* string,char* description);
++/*******************************************************************************
++ * Functions for handling of lyrics (USLT)
++
*******************************************************************************/
++
++/*!
++ * This checks for lyrics (USLT).
++ */
++TAGLIB_C_EXPORT BOOL taglib_id3v2_has_lyrics(TagLib_File *file);
++/*!
++ * This gets the first lyrics frame in the tag, ignoring description and
language codes (USLT).
++ */
++TAGLIB_C_EXPORT char* taglib_id3v2_get_lyrics(TagLib_File *file);
++/*!
++ * This sets a lyrics frame in the tag, instead of any other lyrics frame,
with default description and language (USLT).
++ */
++TAGLIB_C_EXPORT BOOL taglib_id3v2_set_lyrics(TagLib_File *file,const char*
lyrics);
++/* The following function was not tested!! */
++/*!
++ * This gets a lyrics frame in the tag, according to description and language
codes (USLT).
++ */
++TAGLIB_C_EXPORT char* taglib_id3v2_get_lyrics_detail(TagLib_File *file, char*
description, char* lang);
++/* The following function was not tested!! */
++/*!
++ * This sets a lyrics frame in the tag, according to description and language
codes (USLT).
++ */
++TAGLIB_C_EXPORT BOOL taglib_id3v2_set_lyrics_detail(TagLib_File *file,const
char* lyrics, char* description, char* lang);
++/* The following function was not tested!! */
++/*!
++ * This sets a "attachedpicture" frame in the tag, according to type codes
(APIC).
++ */
++TAGLIB_C_EXPORT BOOL taglib_id3v2_set_APIC(TagLib_File *file,const char*
data,char type, unsigned int size);
++/*!
++ * This gets a "attachedpicture" frame in the tag, according to type codes,
if the buffer is NULL, returns the
++ * needed buffer size (APIC).
++ */
++TAGLIB_C_EXPORT BOOL taglib_id3v2_get_APIC(TagLib_File *file,char* buff,char
type, unsigned int* size);
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff -ur taglib_orig/examples/tagreader_c.c taglib-1.5/examples/tagreader_c.c
+--- taglib_orig/examples/tagreader_c.c 2008-01-11 02:56:23.000000000 +0200
++++ taglib-1.5/examples/tagreader_c.c 2009-04-11 17:49:19.000000000 +0300
+@@ -28,6 +28,9 @@
+ #ifndef FALSE
+ #define FALSE 0
+ #endif
++#ifndef ID3_FRAME_GROUP
++#define ID3_FRAME_GROUP "TPE2"
++#endif
+
+ int main(int argc, char *argv[])
+ {
+@@ -52,14 +55,37 @@
+ properties = taglib_file_audioproperties(file);
+
+ printf("-- TAG --\n");
+- printf("title - \"%s\"\n", taglib_tag_title(tag));
+- printf("artist - \"%s\"\n", taglib_tag_artist(tag));
+- printf("album - \"%s\"\n", taglib_tag_album(tag));
+- printf("year - \"%i\"\n", taglib_tag_year(tag));
+- printf("comment - \"%s\"\n", taglib_tag_comment(tag));
+- printf("track - \"%i\"\n", taglib_tag_track(tag));
+- printf("genre - \"%s\"\n", taglib_tag_genre(tag));
+-
++ printf("title - \"%s\"\n", taglib_tag_title(tag));
++ printf("artist - \"%s\"\n", taglib_tag_artist(tag));
++ printf("album - \"%s\"\n", taglib_tag_album(tag));
++ printf("year - \"%i\"\n", taglib_tag_year(tag));
++ printf("comment - \"%s\"\n", taglib_tag_comment(tag));
++ printf("track - \"%i\"\n", taglib_tag_track(tag));
++ printf("genre - \"%s\"\n", taglib_tag_genre(tag));
++ printf("group - \"%s\"\n",taglib_id3v2_get_string_frame (file,
ID3_FRAME_GROUP));
++ printf("group - \"%s\"\n",taglib_id3v2_get_string_frame (file,
ID3_FRAME_GROUP));
++ printf("composer - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TCOM"));
++ printf("compilation- \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TCMP"));
++ printf("subtitle - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TIT3"));
++ printf("lyrics - \"%s\"\n",taglib_id3v2_get_lyrics(file));
++ printf("podcasturl - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"YTID"));
++ printf("podcastrss - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"YWFD"));
++ printf("description - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"YTDS"));
++ /*printf(" - \"%s\"\n",taglib_id3v2_get_string_frame (file, ));
++ printf(" - \"%s\"\n",taglib_id3v2_get_string_frame (file, ));*/
++ printf("time_released - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"YTDR"));
++ printf("BPM - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TBPM"));
++ printf("sort_artist - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TSOP"));
++ printf("sort_album - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TSOA"));
++ printf("sort_title - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TSOT"));
++ printf("sort_albumartist- \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TSO2"));
++ printf("sort_composer - \"%s\"\n",taglib_id3v2_get_string_frame (file,
"TSOC"));
++ /*
++ string = taglib_id3v2_get_string_frame (id3file, "TLEN");
++ if (string)
++ {
++ tag->songlen = (guint32) strtoul (string, 0, 10);
++*/
+ seconds = taglib_audioproperties_length(properties) % 60;
+ minutes = (taglib_audioproperties_length(properties) - seconds) / 60;
+
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today.
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2