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

Reply via email to