add tag information for audio files
authorFelix Domke <tmbinc@elitedvb.net>
Wed, 22 Mar 2006 23:03:57 +0000 (23:03 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Wed, 22 Mar 2006 23:03:57 +0000 (23:03 +0000)
lib/service/iservice.h
lib/service/servicemp3.cpp
lib/service/servicemp3.h

index 354f90a2c5c90a0c6f3e020b20d5299f0e7f6fac..e74fa0a689692bd40872e7032139bd6734b0c09c 100644 (file)
@@ -252,6 +252,13 @@ public:
                
                sDescription,
                sTimeCreate,    // unix time or string
+               
+               sTitle,
+               sArtist,
+               sAlbum,
+               sComment,
+               sTracknumber,
+               sGenre,
        };
        enum { resNA = -1, resIsString = -2 };
 
index 730c4e7bc2f58647f7c82c8ea41d19a5fd110b29..0308a56d691e735ffd4a7d56494c9c214ce2af7a 100644 (file)
@@ -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)
index 9fcfa74e3d57b005c5ceeebef7321574149bf842..279c3cf189d5fdd7a588ea9b166640f4f4c9f0ec 100644 (file)
@@ -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;