From 371447724a1e150c37a777e58a4725a3d2561c01 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Wed, 22 Mar 2006 23:03:57 +0000 Subject: [PATCH] add tag information for audio files --- lib/service/iservice.h | 7 +++++ lib/service/servicemp3.cpp | 59 ++++++++++++++++++++++++++++++++++++++ lib/service/servicemp3.h | 2 ++ 3 files changed, 68 insertions(+) diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 354f90a2..e74fa0a6 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -252,6 +252,13 @@ public: sDescription, sTimeCreate, // unix time or string + + sTitle, + sArtist, + sAlbum, + sComment, + sTracknumber, + sGenre, }; enum { resNA = -1, resIsString = -2 }; diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp index 730c4e7b..0308a56d 100644 --- a/lib/service/servicemp3.cpp +++ b/lib/service/servicemp3.cpp @@ -344,6 +344,65 @@ RESULT eServiceMP3::getName(std::string &name) return 0; } +int eServiceMP3::getInfo(int w) +{ + switch (w) + { + case sTitle: + case sArtist: + case sAlbum: + case sComment: + case sTracknumber: + case sGenre: + return resIsString; + default: + return resNA; + } +} + +std::string eServiceMP3::getInfoString(int w) +{ + gchar *tag = 0; + switch (w) + { + case sTitle: + tag = GST_TAG_TITLE; + break; + case sArtist: + tag = GST_TAG_ARTIST; + break; + case sAlbum: + tag = GST_TAG_ALBUM; + break; + case sComment: + tag = GST_TAG_COMMENT; + break; + case sTracknumber: + tag = GST_TAG_TRACK_NUMBER; + break; + case sGenre: + tag = GST_TAG_GENRE; + break; + default: + return ""; + } + + if (!m_stream_tags || !tag) + return ""; + + gchar *value; + + if (gst_tag_list_get_string(m_stream_tags, tag, &value)) + { + std::string res = value; + g_free(value); + return res; + } + + return ""; +} + + void foreach(const GstTagList *list, const gchar *tag, gpointer user_data) { if (tag) diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h index 9fcfa74e..279c3cf1 100644 --- a/lib/service/servicemp3.h +++ b/lib/service/servicemp3.h @@ -78,6 +78,8 @@ public: // iServiceInformation RESULT getName(std::string &name); + int getInfo(int w); + std::string getInfoString(int w); private: friend class eServiceFactoryMP3; std::string m_filename; -- 2.30.2