eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eApp, 1)
{
+ m_seekTimeout = eTimer::create(eApp);
m_stream_tags = 0;
- m_audioStreams.clear();
- m_subtitleStreams.clear();
m_currentAudioStream = 0;
m_currentSubtitleStream = 0;
m_subtitle_widget = 0;
m_currentTrickRatio = 0;
- CONNECT(m_seekTimeout.timeout, eServiceMP3::seekTimeoutCB);
+ CONNECT(m_seekTimeout->timeout, eServiceMP3::seekTimeoutCB);
CONNECT(m_pump.recv_msg, eServiceMP3::gstPoll);
GstElement *source = 0;
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)
{
m_currentTrickRatio = ratio;
if (ratio)
- m_seekTimeout.start(1000, 0);
+ m_seekTimeout->start(1000, 0);
else
- m_seekTimeout.stop();
+ m_seekTimeout->stop();
return 0;
}
if (ppos < 0)
{
ppos = 0;
- m_seekTimeout.stop();
+ m_seekTimeout->stop();
}
if (ppos > len)
{
ppos = 0;
stop();
- m_seekTimeout.stop();
+ m_seekTimeout->stop();
return;
}
seekTo(ppos);