eDebug("[eDVBServiceFCCPlay::changeFCCMode][%s] disable FCC decoding.", m_reference.toString().c_str());
m_fcc_mode = fcc_mode_preparing;
+ /* stop timeshift */
+ eDVBServicePlay::stopTimeshift();
+
/* remove CaHandler */
m_service_handler.removeCaHandler();
h.getDecodeDemux(m_decode_demux);
if (m_decode_demux)
{
- m_decode_demux->getMPEGDecoder(m_decoder, m_is_primary);
+ m_decode_demux->getMPEGDecoder(m_decoder, m_decoder_index);
if (m_decoder)
m_decoder->connectVideoEvent(slot(*this, &eDVBServiceFCCPlay::video_event), m_video_event_connection);
}
{
eDebug("[eDVBServiceFCCPlay::FCCDecoderStop][%s]", m_reference.toString().c_str());
- if ((m_fcc_flag & fcc_ready) && m_decoder)
+ if (m_decoder)
{
m_teletext_parser = 0;
m_new_subtitle_page_connection = 0;
m_subtitle_parser = 0;
m_new_dvb_subtitle_page_connection = 0;
- m_decoder->fccDecoderStop();
- m_fcc_flag &=~fcc_decoding;
+ if (m_fcc_flag & fcc_ready)
+ {
+ m_decoder->fccDecoderStop();
+ m_fcc_flag &=~fcc_decoding;
+ }
+ else if (m_fcc_flag & fcc_novideo)
+ {
+ m_video_event_connection = 0;
+ m_decoder = 0;
+ }
}
}