fix streaming playback (webradio)
authorFraxinas <andreas.frisch@multimedia-labs.de>
Mon, 3 Nov 2008 12:47:04 +0000 (13:47 +0100)
committerAndreas Oberritter <obi@saftware.de>
Thu, 6 Nov 2008 00:52:04 +0000 (01:52 +0100)
lib/python/Components/Playlist.py
lib/service/servicemp3.cpp

index 2279969..744ee3a 100644 (file)
@@ -70,6 +70,8 @@ class PlaylistIOM3U(PlaylistIO):
                                # TODO: use e2 facilities to create a service ref from file
                                if entry[0] == "/":
                                        self.addService(ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + entry))
+                               elif entry.startswith("http"):
+                                       self.addService(ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + entry.replace(':',"%3a")))
                                else:
                                        self.addService(ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + os.path.dirname(filename) + "/" + entry))
                file.close()
index c76e346..19b7735 100644 (file)
@@ -227,11 +227,29 @@ eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eAp
        if (!m_gst_pipeline)
                m_error_message = "failed to create GStreamer pipeline!\n";
 
-       if ( sourceinfo.containertype == ctCDA )
+       if ( sourceinfo.is_streaming )
+       {
+               eDebug("play webradio!");
+               source = gst_element_factory_make ("neonhttpsrc", "http-source");
+               if (source)
+               {
+                       g_object_set (G_OBJECT (source), "location", filename, NULL);
+                       g_object_set (G_OBJECT (source), "automatic-redirect", TRUE, NULL);
+               }
+               else
+                       m_error_message = "GStreamer plugin neonhttpsrc not available!\n";
+       }
+       else if ( sourceinfo.containertype == ctCDA )
        {
                source = gst_element_factory_make ("cdiocddasrc", "cda-source");
                if (source)
+               {
                        g_object_set (G_OBJECT (source), "device", "/dev/cdroms/cdrom0", NULL);
+                       int track = atoi(filename+18);
+                       eDebug("play audio CD track #%i",track);
+                       if (track > 0)
+                               g_object_set (G_OBJECT (source), "track", track, NULL);
+               }
                else
                        sourceinfo.containertype = ctNone;
        }
@@ -243,21 +261,6 @@ eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eAp
                else
                        m_error_message = "GStreamer can't open filesrc " + (std::string)filename + "!\n";
        }
-       else if ( sourceinfo.is_streaming ) 
-       {
-               source = gst_element_factory_make ("neonhttpsrc", "http-source");
-               if (source)
-                       g_object_set (G_OBJECT (source), "automatic-redirect", TRUE, NULL);
-               else
-                       m_error_message = "GStreamer plugin neonhttpsrc not available!\n";
-       }
-       else
-       { 
-               int track = atoi(filename+18);
-               eDebug("play audio CD track #%i",track);
-               if (track > 0)
-                       g_object_set (G_OBJECT (source), "track", track, NULL);
-       }
        if ( sourceinfo.is_video )
        {
                        /* filesrc -> mpegdemux -> | queue_audio -> dvbaudiosink