disable teletext on trickmodes, rename vtext to ttext
authorFelix Domke <tmbinc@elitedvb.net>
Wed, 18 Jan 2006 14:26:57 +0000 (14:26 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Wed, 18 Jan 2006 14:26:57 +0000 (14:26 +0000)
lib/dvb/decoder.cpp
lib/dvb/decoder.h
lib/dvb/demux.h

index bf0014d87e2fbf85d26f2c782e6a075333c65c3b..cbc40683fcbd0fa8253b8f151dc2284515bb023c 100644 (file)
@@ -301,9 +301,9 @@ eDVBPCR::~eDVBPCR()
                ::close(m_fd_demux);
 }
 
                ::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
 {
        char filename[128];
 #if HAVE_DVB_API_VERSION < 3
@@ -316,7 +316,7 @@ eDVBVText::eDVBVText(eDVBDemux *demux): m_demux(demux)
                eWarning("%s: %m", filename);
 }
 
                eWarning("%s: %m", filename);
 }
 
-int eDVBVText::startPid(int pid)
+int eDVBTText::startPid(int pid)
 {
        if (m_fd_demux < 0)
                return -1;
 {
        if (m_fd_demux < 0)
                return -1;
@@ -340,13 +340,13 @@ int eDVBVText::startPid(int pid)
        return 0;
 }
 
        return 0;
 }
 
-void eDVBVText::stop()
+void eDVBTText::stop()
 {
        if (::ioctl(m_fd_demux, DMX_STOP) < 0)
                eWarning("video: DMX_STOP: %m");
 }
 
 {
        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);
 {
        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 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 ((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();
 #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_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!");
                        if (m_text->startPid(m_textpid))
                        {
                                eWarning("text: startpid failed!");
index f1d074dbced85bff77229e5168058e5275c78439..b8b5878698b9b18a73cbef48c9a3c6ae6e281ccd 100644 (file)
@@ -62,17 +62,17 @@ public:
        virtual ~eDVBPCR();
 };
 
        virtual ~eDVBPCR();
 };
 
-class eDVBVText: public iObject
+class eDVBTText: public iObject
 {
 {
-DECLARE_REF(eDVBVText);
+DECLARE_REF(eDVBTText);
 private:
        ePtr<eDVBDemux> m_demux;
        int m_fd_demux;
 public:
 private:
        ePtr<eDVBDemux> m_demux;
        int m_fd_demux;
 public:
-       eDVBVText(eDVBDemux *demux);
+       eDVBTText(eDVBDemux *demux);
        int startPid(int pid);
        void stop();
        int startPid(int pid);
        void stop();
-       virtual ~eDVBVText();
+       virtual ~eDVBTText();
 };
 
 class eTSMPEGDecoder: public Object, public iTSMPEGDecoder
 };
 
 class eTSMPEGDecoder: public Object, public iTSMPEGDecoder
@@ -83,7 +83,7 @@ private:
        ePtr<eDVBAudio> m_audio;
        ePtr<eDVBVideo> m_video;
        ePtr<eDVBPCR> m_pcr;
        ePtr<eDVBAudio> m_audio;
        ePtr<eDVBVideo> m_video;
        ePtr<eDVBPCR> m_pcr;
-       ePtr<eDVBVText> m_text;
+       ePtr<eDVBTText> m_text;
        int m_vpid, m_apid, m_atype, m_pcrpid, m_textpid;
        enum
        {
        int m_vpid, m_apid, m_atype, m_pcrpid, m_textpid;
        enum
        {
index 167aa785c1991032642c7831419197236c431a7f..06c74c9a701520ad15116450356563e15ce08b3b 100644 (file)
@@ -32,7 +32,7 @@ private:
        friend class eDVBAudio;
        friend class eDVBVideo;
        friend class eDVBPCR;
        friend class eDVBAudio;
        friend class eDVBVideo;
        friend class eDVBPCR;
-       friend class eDVBVText;
+       friend class eDVBTText;
        friend class eDVBTSRecorder;
        friend class eDVBCAService;
        Signal1<void, int> m_event;
        friend class eDVBTSRecorder;
        friend class eDVBCAService;
        Signal1<void, int> m_event;