[servicemp3] fix plaintext subtitles (add #506)
[vuplus_dvbapp] / lib / service / servicemp3.cpp
index c0ae42f..4ecbd76 100644 (file)
@@ -190,6 +190,25 @@ int eStaticServiceMP3Info::getLength(const eServiceReference &ref)
        return -1;
 }
 
+int eStaticServiceMP3Info::getInfo(const eServiceReference &ref, int w)
+{
+       switch (w)
+       {
+       case iServiceInformation::sTimeCreate:
+       {
+               struct stat s;
+               if(stat(ref.path.c_str(), &s) == 0)
+               {
+                 return s.st_mtime;
+               }
+               return iServiceInformation::resNA;
+       }
+       default: break;
+       }
+       return iServiceInformation::resNA;
+}
+
 // eServiceMP3
 int eServiceMP3::ac3_delay,
     eServiceMP3::pcm_delay;
@@ -284,11 +303,11 @@ eServiceMP3::eServiceMP3(eServiceReference ref)
                if ( ret == -1 ) // this is a "REAL" VCD
                        uri = g_strdup_printf ("vcd://");
                else
-                       uri = g_strdup_printf ("file://%s", filename);
+                       uri = g_filename_to_uri(filename, NULL, NULL);
        }
        else
 
-               uri = g_strdup_printf ("file://%s", filename);
+               uri = g_filename_to_uri(filename, NULL, NULL);
 
        eDebug("eServiceMP3::playbin2 uri=%s", uri);
 
@@ -309,6 +328,7 @@ eServiceMP3::eServiceMP3(eServiceReference ref)
        else
        {
                m_subs_to_pull_handler_id = g_signal_connect (subsink, "new-buffer", G_CALLBACK (gstCBsubtitleAvail), this);
+               g_object_set (G_OBJECT (subsink), "caps", gst_caps_from_string("text/plain; text/x-plain; text/x-pango-markup"), NULL);
                g_object_set (G_OBJECT (m_gst_playbin), "text-sink", subsink, NULL);
        }
 
@@ -322,9 +342,8 @@ eServiceMP3::eServiceMP3(eServiceReference ref)
                struct stat buffer;
                if (stat(srt_filename, &buffer) == 0)
                {
-                       std::string suburi = "file://" + (std::string)srt_filename;
-                       eDebug("eServiceMP3::subtitle uri: %s",suburi.c_str());
-                       g_object_set (G_OBJECT (m_gst_playbin), "suburi", suburi.c_str(), NULL);
+                       eDebug("eServiceMP3::subtitle uri: %s", g_filename_to_uri(srt_filename, NULL, NULL));
+                       g_object_set (G_OBJECT (m_gst_playbin), "suburi", g_filename_to_uri(srt_filename, NULL, NULL), NULL);
                        subtitleStream subs;
                        subs.type = stSRT;
                        subs.language_code = std::string("und");