named comments support in taglib?
Alan Ezust
alan.ezust at gmail.com
Mon May 15 18:46:36 CEST 2006
Hi Scott,
I tried your function (sorry it took me so long to get around to it,
but I had a broken system and was unable to build certain apps for a
while)... Anway, I get a segfault when I try to get a list of pairs...
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1222449472 (LWP 23855)]
0xb7f6c368 in TagLib::ByteVector::operator< () from /usr/lib/libtag.so.1
(gdb) where
#0 0xb7f6c368 in TagLib::ByteVector::operator< () from /usr/lib/libtag.so.1
#1 0xb7f544eb in std::_Rb_tree<TagLib::ByteVector,
std::pair<TagLib::ByteVector const,
TagLib::List<TagLib::ID3v2::Frame*> >,
std::_Select1st<std::pair<TagLib::ByteVector const,
TagLib::List<TagLib::ID3v2::Frame*> > >,
std::less<TagLib::ByteVector>,
std::allocator<std::pair<TagLib::ByteVector const,
TagLib::List<TagLib::ID3v2::Frame*> > > >::lower_bound () from
/usr/lib/libtag.so.1
#2 0xb7f54b22 in TagLib::Map<TagLib::ByteVector,
TagLib::List<TagLib::ID3v2::Frame*> >::operator[] ()
from /usr/lib/libtag.so.1
#3 0xb7f52e86 in TagLib::ID3v2::Tag::frameList () from /usr/lib/libtag.so.1
#4 0x08049bfc in RatingTagger::findByDescription ()
#5 0x08049dcb in RatingTagger::getPreference ()
#6 0x0804a89f in RatingTagger::getRating ()
#7 0x0804aad9 in RatingTagger::getRating ()
#8 0x0804c3b6 in main ()
(gdb)
I get a seg fault when I call frameList().
The test program I am working on is here:
http://lazarus.oddiofile.com:81/workspace/kde/extragear/multimedia/amarok/src/rating.h
http://lazarus.oddiofile.com:81/workspace/kde/extragear/multimedia/amarok/src/rating.cpp
http://lazarus.oddiofile.com:81/workspace/kde/extragear/multimedia/amarok/src/testrating
creator.mp3 already has tags set, the journey.mp3 does not.
This reproduces on the SVN version of taglib too. Any idea why I get a
segfault there?
CommentsFrame *RatingTagger::findByDescription(const Tag *tag, String
d) // static
{
using namespace TagLib::ID3v2;
FrameList comments = tag->frameList("COMM"); // SEGFAULT HERE
for(FrameList::ConstIterator it = comments.begin();
it != comments.end(); ++it)
{
CommentsFrame *frame = dynamic_cast<CommentsFrame *>(*it);
if(frame && frame->description() == d)
return frame;
}
return 0;
}
On 1/19/06, Scott Wheeler <wheeler at kde.org> wrote:
> On Thursday 19 January 2006 5:07, Alan Ezust wrote:
> > Does TagLib support named comments, like
> > libid3? There is a method like this:
> >
> > return ID3_GetComment(&tag, "MusicMatch_Preference");
> >
> > Which returns the musicmatch preference. What would be the equivalent in
> > taglib?
>
> There's nothing that currently does that, but it's rather trivial to
> implement. I've attached a (currently untested) patch to TagLib that does
> it, which I'll probably commit.
>
> You can just copy the same function into your application for now.
>
> -Scott
More information about the taglib-devel
mailing list