# HG changeset patch # User Chris Cannam # Date 1269001319 0 # Node ID a4b8ad0f1a8f62f90cb79c40090cfeb46641aa59 # Parent 3a5ee4b6c9ad5464a48f360cc6fd33d6298b3deb * Some sketchy track lookup code diff -r 3a5ee4b6c9ad -r a4b8ad0f1a8f data/fileio/AudioFileReader.h --- a/data/fileio/AudioFileReader.h Mon Jul 19 17:08:56 2010 +0000 +++ b/data/fileio/AudioFileReader.h Fri Mar 19 12:21:59 2010 +0000 @@ -21,6 +21,7 @@ #include "FileSource.h" #include +#include typedef std::vector SampleBlock; @@ -60,6 +61,9 @@ */ virtual QString getMaker() const { return ""; } + typedef std::map TagMap; + virtual TagMap getTags() const { return TagMap(); } + /** * Return interleaved samples for count frames from index start. * The resulting sample block will contain count * diff -r 3a5ee4b6c9ad -r a4b8ad0f1a8f data/fileio/MP3FileReader.cpp --- a/data/fileio/MP3FileReader.cpp Mon Jul 19 17:08:56 2010 +0000 +++ b/data/fileio/MP3FileReader.cpp Fri Mar 19 12:21:59 2010 +0000 @@ -189,6 +189,13 @@ m_maker = loadTag(tag, "TPE1"); // "lead artist" if (m_maker == "") m_maker = loadTag(tag, "TPE2"); + for (unsigned int i = 0; i < tag->nframes; ++i) { + if (tag->frames[i]) { + QString value = loadTag(tag, tag->frames[i]->id); + if (value != "") m_tags[tag->frames[i]->id] = value; + } + } + id3_file_close(file); #else diff -r 3a5ee4b6c9ad -r a4b8ad0f1a8f data/fileio/MP3FileReader.h --- a/data/fileio/MP3FileReader.h Mon Jul 19 17:08:56 2010 +0000 +++ b/data/fileio/MP3FileReader.h Fri Mar 19 12:21:59 2010 +0000 @@ -49,6 +49,7 @@ virtual QString getLocation() const { return m_source.getLocation(); } virtual QString getTitle() const { return m_title; } virtual QString getMaker() const { return m_maker; } + virtual TagMap getTags() const { return m_tags; } static void getSupportedExtensions(std::set &extensions); static bool supportsExtension(QString ext); @@ -70,6 +71,7 @@ QString m_error; QString m_title; QString m_maker; + TagMap m_tags; size_t m_fileSize; double m_bitrateNum; size_t m_bitrateDenom;