Add alternative code to retrieve audio meta data using the media kit. Libtag seems to work for more formats...

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39468 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Clemens Zeidler
2010-11-17 22:10:51 +00:00
parent 116fb65719
commit f05ed377cb
@@ -2,6 +2,7 @@
#include <new> #include <new>
#include <MediaFile.h>
#include <Path.h> #include <Path.h>
#include <audioproperties.h> #include <audioproperties.h>
@@ -24,7 +25,7 @@ AudioTagAnalyser::InitCheck()
} }
#include <stdio.h>
void void
AudioTagAnalyser::AnalyseEntry(const entry_ref& ref) AudioTagAnalyser::AnalyseEntry(const entry_ref& ref)
{ {
@@ -41,16 +42,43 @@ AudioTagAnalyser::AnalyseEntry(const entry_ref& ref)
printf("artist: %s, title: %s, album: %s\n", artist.toCString(), printf("artist: %s, title: %s, album: %s\n", artist.toCString(),
title.toCString(), album.toCString()); title.toCString(), album.toCString());
BFile file(path.Path(), B_READ_ONLY); BFile file(&ref, B_READ_ONLY);
if (file.InitCheck() != B_OK) if (file.InitCheck() != B_OK)
return; return;
const char* cArtist = artist.toCString(true); const char* cArtist = artist.toCString(true);
file.WriteAttr("Media:Artist", B_STRING_TYPE, 0, cArtist, strlen(cArtist)); file.WriteAttr("Audio:Artist", B_STRING_TYPE, 0, cArtist, strlen(cArtist));
const char* cTitle = title.toCString(true); const char* cTitle = title.toCString(true);
file.WriteAttr("Media:Title", B_STRING_TYPE, 0, cTitle, strlen(cTitle)); file.WriteAttr("Media:Title", B_STRING_TYPE, 0, cTitle, strlen(cTitle));
const char* cAlbum = album.toCString(true); const char* cAlbum = album.toCString(true);
file.WriteAttr("Media:Album", B_STRING_TYPE, 0, cAlbum, strlen(cAlbum)); file.WriteAttr("Audio:Album", B_STRING_TYPE, 0, cAlbum, strlen(cAlbum));
/*
BMediaFile mediaFile(&ref);
if (mediaFile.InitCheck() != B_OK)
return;
BMessage metaData;
if (mediaFile.GetMetaData(&metaData) != B_OK)
return;
BFile file(&ref, B_READ_ONLY);
if (file.InitCheck() != B_OK)
return;
BString dataString;
if (metaData.FindString("artist", &dataString) == B_OK)
file.WriteAttr("Audio:Artist", B_STRING_TYPE, 0, dataString.String(),
dataString.Length());
if (metaData.FindString("title", &dataString) == B_OK)
file.WriteAttr("Media:Title", B_STRING_TYPE, 0, dataString.String(),
dataString.Length());
if (metaData.FindString("album", &dataString) == B_OK)
file.WriteAttr("Audio:Album", B_STRING_TYPE, 0, dataString.String(),
dataString.Length());
if (metaData.FindString("track", &dataString) == B_OK)
file.WriteAttr("Audio:Track", B_STRING_TYPE, 0, dataString.String(),
dataString.Length());*/
} }