X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/0c59a4279f93f08fe95fca5f2e55f3e025f0cceb..307b1a3a29f51944baf8866292f6150f6aa8ca62:/lib/service/servicemp3.cpp diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp index a453f54f..19b7735b 100644 --- a/lib/service/servicemp3.cpp +++ b/lib/service/servicemp3.cpp @@ -27,6 +27,7 @@ eServiceFactoryMP3::eServiceFactoryMP3() if (sc) { std::list extensions; + extensions.push_back("mp2"); extensions.push_back("mp3"); extensions.push_back("ogg"); extensions.push_back("mpg"); @@ -226,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; } @@ -242,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 @@ -273,31 +277,31 @@ eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eAp queue_audio = gst_element_factory_make("queue", "queue_audio"); queue_video = gst_element_factory_make("queue", "queue_video"); - char demux_type[14]; + std::string demux_type; switch (sourceinfo.containertype) { case ctMPEGTS: - strcat(demux_type, "flutsdemux"); + demux_type = "flutsdemux"; break; case ctMPEGPS: case ctVCD: - strcat(demux_type, "flupsdemux"); + demux_type = "flupsdemux"; break; case ctMKV: - strcat(demux_type, "matroskademux"); + demux_type = "matroskademux"; break; case ctAVI: - strcat(demux_type, "avidemux"); + demux_type = "avidemux"; break; case ctMP4: - strcat(demux_type, "qtdemux"); + demux_type = "qtdemux"; break; default: break; } - videodemux = gst_element_factory_make(demux_type, "videodemux"); + videodemux = gst_element_factory_make(demux_type.c_str(), "videodemux"); if (!videodemux) - m_error_message = "GStreamer plugin " + (std::string)demux_type + " not available!\n"; + m_error_message = "GStreamer plugin " + demux_type + " not available!\n"; switch_audio = gst_element_factory_make ("input-selector", "switch_audio"); if (!switch_audio)