X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d7010ab56f9b823d56a5a5fa3ba7f7764bbfece4..477c468861635555c7179f2f4397dd765f499656:/lib/dvb/decoder.cpp diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index bf0014d8..8e21dcad 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -1,4 +1,3 @@ -#include #include #include #if HAVE_DVB_API_VERSION < 3 @@ -301,9 +300,9 @@ eDVBPCR::~eDVBPCR() ::close(m_fd_demux); } -DEFINE_REF(eDVBVText); +DEFINE_REF(eDVBTText); -eDVBVText::eDVBVText(eDVBDemux *demux): m_demux(demux) +eDVBTText::eDVBTText(eDVBDemux *demux): m_demux(demux) { char filename[128]; #if HAVE_DVB_API_VERSION < 3 @@ -316,7 +315,7 @@ eDVBVText::eDVBVText(eDVBDemux *demux): m_demux(demux) eWarning("%s: %m", filename); } -int eDVBVText::startPid(int pid) +int eDVBTText::startPid(int pid) { if (m_fd_demux < 0) return -1; @@ -340,13 +339,13 @@ int eDVBVText::startPid(int pid) return 0; } -void eDVBVText::stop() +void eDVBTText::stop() { if (::ioctl(m_fd_demux, DMX_STOP) < 0) eWarning("video: DMX_STOP: %m"); } -eDVBVText::~eDVBVText() +eDVBTText::~eDVBTText() { if (m_fd_demux >= 0) ::close(m_fd_demux); @@ -359,10 +358,14 @@ int eTSMPEGDecoder::setState() int res = 0; int noaudio = m_is_sm || m_is_ff || m_is_trickmode; - + int nott = noaudio; /* actually same conditions */ + if ((noaudio && m_audio) || (!m_audio && !noaudio)) m_changed |= changeAudio; + if ((nott && m_text) || (!m_text && !nott)) + m_changed |= changeText; + #if HAVE_DVB_API_VERSION < 3 if (m_changed & changeAudio && m_audio) m_audio->stopPid(); @@ -472,9 +475,9 @@ int eTSMPEGDecoder::setState() if (m_text) m_text->stop(); m_text = 0; - if ((m_textpid >= 0) && (m_textpid < 0x1FFF)) + if ((m_textpid >= 0) && (m_textpid < 0x1FFF) && !nott) { - m_text = new eDVBVText(m_demux); + m_text = new eDVBTText(m_demux); if (m_text->startPid(m_textpid)) { eWarning("text: startpid failed!");