servicemp3.h/cpp: trade service reference to eServiceMP3 and implement getInfo(sServi...
authorghost <andreas.monzner@multimedia-labs.de>
Thu, 11 Jun 2009 21:56:04 +0000 (23:56 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Thu, 11 Jun 2009 21:56:04 +0000 (23:56 +0200)
lib/service/servicemp3.cpp
lib/service/servicemp3.h

index 2ddfe9257e3130ffd517c8bd5929b71af40da907..77501e75e6febc631bb774084829577b816ca9f7 100644 (file)
@@ -69,7 +69,7 @@ DEFINE_REF(eServiceFactoryMP3)
 RESULT eServiceFactoryMP3::play(const eServiceReference &ref, ePtr<iPlayableService> &ptr)
 {
                // check resources...
-       ptr = new eServiceMP3(ref.path.c_str(),ref.getName().c_str());
+       ptr = new eServiceMP3(ref);
        return 0;
 }
 
@@ -187,7 +187,8 @@ int eStaticServiceMP3Info::getLength(const eServiceReference &ref)
 
 // eServiceMP3
 
-eServiceMP3::eServiceMP3(const char *filename, const char *title): m_filename(filename), m_title(title), m_pump(eApp, 1)
+eServiceMP3::eServiceMP3(eServiceReference ref)
+       :m_ref(ref), m_pump(eApp, 1)
 {
        m_seekTimeout = eTimer::create(eApp);
        m_subtitle_sync_timer = eTimer::create(eApp);
@@ -204,7 +205,8 @@ eServiceMP3::eServiceMP3(const char *filename, const char *title): m_filename(fi
 
        m_state = stIdle;
        eDebug("eServiceMP3::construct!");
-       
+
+       const char *filename = m_ref.path.c_str();
        const char *ext = strrchr(filename, '.');
        if (!ext)
                ext = filename;
@@ -379,7 +381,7 @@ RESULT eServiceMP3::stop()
        ASSERT(m_state != stIdle);
        if (m_state == stStopped)
                return -1;
-       eDebug("eServiceMP3::stop %s", m_filename.c_str());
+       eDebug("eServiceMP3::stop %s", m_ref.path.c_str());
        gst_element_set_state(m_gst_playbin, GST_STATE_NULL);
        m_state = stStopped;
        return 0;
@@ -596,15 +598,16 @@ RESULT eServiceMP3::info(ePtr<iServiceInformation>&i)
 
 RESULT eServiceMP3::getName(std::string &name)
 {
-       if (m_title.empty())
+       std::string title = m_ref.getName();
+       if (title.empty())
        {
-               name = m_filename;
+               name = m_ref.path;
                size_t n = name.rfind('/');
                if (n != std::string::npos)
                        name = name.substr(n + 1);
        }
        else
-               name = m_title;
+               name = title;
        return 0;
 }
 
@@ -615,6 +618,7 @@ int eServiceMP3::getInfo(int w)
 
        switch (w)
        {
+       case sServiceref: return m_ref;
        case sVideoHeight: return m_height;
        case sVideoWidth: return m_width;
        case sFrameRate: return m_framerate;
index 1d77483f3a95eae6312caec79795bd86ec0d6599..ee06064a3cf58b0a0f8c392f3570e9fb1b89f030 100644 (file)
@@ -176,11 +176,10 @@ private:
        ePtr<eTimer> m_seekTimeout;
        void seekTimeoutCB();
        friend class eServiceFactoryMP3;
-       std::string m_filename;
-       std::string m_title;
+       eServiceReference m_ref;
        int m_buffer_size;
        bufferInfo m_bufferInfo;
-       eServiceMP3(const char *filename, const char *title);
+       eServiceMP3(eServiceReference ref);
        Signal2<void,iPlayableService*,int> m_event;
        enum
        {