Album Art using Taglib
pranay prateek
pranay.iitm at gmail.com
Thu Nov 26 07:15:33 CET 2009
In continuation to the previous mail,
i forgot to mention that my code crashes in the first line itself,
TagLib::MPEG::File mpegFile("\\Storage Card\\YeDooriyan.mp3");
i.e. it is not able to create an object of the type MPEG::File.
On Thu, Nov 26, 2009 at 11:29 AM, pranay prateek <pranay.iitm at gmail.com>wrote:
> Hi all
> I am trying to use TagLib to extract album art from audio files. I am
> building this app for WINCE 6.0 using c++ and Visual Studio 2005 IDE.
> As of now, i am just trying to test it on mp3 files. If i include all the
> files from mpeg, toolkit and ape folders, i am able to compile my project.
> But, at runtime it gives an unhandled exception error for some mp3 files,
> while it runs fine for other mp3 files.
>
> The unhandled exception occurs at
>
> ref() function in RefCounter class
>
> called by
>
> ByteVector::ByteVector(const ByteVector &v) : d(v.d)
> {
> d->ref();
> }
>
> It seems the *this* pointer in the ref function called is NULL which is
> seemingly causing the problem.
>
> My main issue is how is this working for some MP3 files while not working
> for others? Does it depend upon some parameter present in MP3
> files which may not be present in other MP3 files?
> Also, i searched the documentation but couldn't find out what actually is
> the RefCounter class doing. Why is it being called so many times?
>
> Can somebody give me pointers on how this issue could be resolved?
> Thanks.
>
> Regards
> Pranay
>
>
>
> My code is something like this:
>
> int main()
> {
>
> static const char *IdPicture = "APIC" ;
>
> TagLib::MPEG::File mpegFile("\\Storage Card\\YeDooriyan.mp3");
> TagLib::ID3v2::Tag *id3v2tag = mpegFile.ID3v2Tag();
> TagLib::ID3v2::FrameList Frame ;
> TagLib::ID3v2::AttachedPictureFrame *PicFrame ;
> void *RetImage = NULL, *SrcImage ;
> unsigned long Size ;
>
> FILE *jpegFile;
> fopen_s(&jpegFile,"FromId3.jpg","wb");
>
>
> if ( id3v2tag )
> {
> // picture frame
> Frame = id3v2tag->frameListMap()[IdPicture] ;
>
> if (!Frame.isEmpty() )
> {
> // find cover art
> for(TagLib::ID3v2::FrameList::ConstIterator it = Frame.begin(); it !=
> Frame.end(); ++it)
> {
> PicFrame = (TagLib::ID3v2::AttachedPictureFrame *)(*it) ;
> if ( PicFrame->type() ==
> TagLib::ID3v2::AttachedPictureFrame::FrontCover)
> {
> // extract image (in it's compressed form)
> Size = PicFrame->picture().size() ;
> SrcImage = malloc ( Size ) ;
> if ( SrcImage )
> {
> memcpy ( SrcImage, PicFrame->picture().data(), Size ) ;
> fwrite(SrcImage,Size,1, jpegFile);
> fclose(jpegFile);
>
> free( SrcImage ) ;
> }
> if ( RetImage )
> break ;
> }
> }
> }
> }
> return(0);
>
> }
>
>
--
"You aren't remembered for doing what is expected of you."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/taglib-devel/attachments/20091126/7e1c2f18/attachment.htm
More information about the taglib-devel
mailing list