From b09455febeca3d10b9c55ee8720d0831a52e0d69 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Wed, 18 Jan 2006 14:26:57 +0000 Subject: [PATCH] disable teletext on trickmodes, rename vtext to ttext --- lib/dvb/decoder.cpp | 20 ++++++++++++-------- lib/dvb/decoder.h | 10 +++++----- lib/dvb/demux.h | 2 +- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index bf0014d8..cbc40683 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -301,9 +301,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 +316,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 +340,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 +359,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 +476,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!"); diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index f1d074db..b8b58786 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -62,17 +62,17 @@ public: virtual ~eDVBPCR(); }; -class eDVBVText: public iObject +class eDVBTText: public iObject { -DECLARE_REF(eDVBVText); +DECLARE_REF(eDVBTText); private: ePtr m_demux; int m_fd_demux; public: - eDVBVText(eDVBDemux *demux); + eDVBTText(eDVBDemux *demux); int startPid(int pid); void stop(); - virtual ~eDVBVText(); + virtual ~eDVBTText(); }; class eTSMPEGDecoder: public Object, public iTSMPEGDecoder @@ -83,7 +83,7 @@ private: ePtr m_audio; ePtr m_video; ePtr m_pcr; - ePtr m_text; + ePtr m_text; int m_vpid, m_apid, m_atype, m_pcrpid, m_textpid; enum { diff --git a/lib/dvb/demux.h b/lib/dvb/demux.h index 167aa785..06c74c9a 100644 --- a/lib/dvb/demux.h +++ b/lib/dvb/demux.h @@ -32,7 +32,7 @@ private: friend class eDVBAudio; friend class eDVBVideo; friend class eDVBPCR; - friend class eDVBVText; + friend class eDVBTText; friend class eDVBTSRecorder; friend class eDVBCAService; Signal1 m_event; -- 2.30.2