eDVBServicePMTHandler: remove use_decode_demux from tuneExt, use decode demux only...
authorTaapat <taapat@gmail.com>
Wed, 11 Nov 2015 16:39:40 +0000 (18:39 +0200)
committerErik Slagter <erik@openpli.org>
Thu, 12 Nov 2015 19:26:13 +0000 (20:26 +0100)
We need to m_use decode demux only when we are descrambling. To avoid confusion with use_decode_demux now we look only descramble argument.

This commit incorporates/obsoletes
0f43b118fe39b7c635d14d5858cc291857a2e5d6 "eDVBServicePMTHandler: tuneExt use decode demux only when descrambling" by athoik
d031659508d76048ded53559c1eaed88b3432e00 "eDVBServicePMTHandler: tuneExt remove use_decode_demux" by athoik

Original commits by athoik, composed and tested by taapat.

(cherry picked from commit e087fd914a1925b78583f30dc28696af39c2decb)
Signed-off-by: Erik Slagter <erik@openpli.org>

lib/dvb/pmt.cpp
lib/dvb/pmt.h
lib/service/servicedvb.cpp
lib/service/servicedvbrecord.cpp

index 24fa421..98fc9a5 100644 (file)
@@ -70,7 +70,7 @@ void eDVBServicePMTHandler::channelStateChanged(iDVBChannel *channel)
                        if (m_service && !m_service->cacheEmpty())
                        {
                                serviceEvent(eventNewProgramInfo);
-                               if (doDescramble)
+                               if (m_use_decode_demux)
                                {
                                        if (!m_ca_servicePtr)
                                        {
@@ -157,7 +157,7 @@ void eDVBServicePMTHandler::PMTready(int error)
                        /* do not start epg caching for other types of services */
                        break;
                }
-               if (doDescramble)
+               if (m_use_decode_demux)
                {
                        if (!m_ca_servicePtr)
                        {
@@ -766,19 +766,23 @@ void eDVBServicePMTHandler::SDTScanEvent(int event)
 int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux, eCueSheet *cue, bool simulate, eDVBService *service, serviceType type, bool descramble)
 {
        ePtr<iTsSource> s;
-       return tuneExt(ref, use_decode_demux, s, NULL, cue, simulate, service, type, descramble);
+       return tuneExt(ref, s, NULL, cue, simulate, service, type, descramble);
 }
 
-int eDVBServicePMTHandler::tuneExt(eServiceReferenceDVB &ref, int use_decode_demux, ePtr<iTsSource> &source, const char *streaminfo_file, eCueSheet *cue, bool simulate, eDVBService *service, serviceType type, bool descramble)
+int eDVBServicePMTHandler::tuneExt(eServiceReferenceDVB &ref, ePtr<iTsSource> &source, const char *streaminfo_file, eCueSheet *cue, bool simulate, eDVBService *service, serviceType type, bool descramble)
 {
        RESULT res=0;
        m_reference = ref;
-       m_use_decode_demux = (use_decode_demux || descramble);
+
+               /*
+                * We need to m_use decode demux only when we are descrambling (demuxers > ca demuxers)
+                * To avoid confusion with use_decode_demux now we look only descramble argument
+                */
+       m_use_decode_demux = descramble;
+
        m_no_pat_entry_delay->stop();
        m_service_type = type;
 
-       doDescramble = descramble;
-
                /* use given service as backup. This is used for timeshift where we want to clone the live stream using the cache, but in fact have a PVR channel */
        m_service = service;
 
index c743be3..9c3949e 100644 (file)
@@ -50,7 +50,6 @@ class eDVBServicePMTHandler: public eDVBPMTParser
 
        int m_last_channel_state;
        eDVBCAService *m_ca_servicePtr;
-       bool doDescramble;
        ePtr<eDVBScan> m_dvb_scan; // for sdt scan
 
        eAUTable<eTable<ProgramAssociationSection> > m_PAT;
@@ -152,7 +151,7 @@ public:
        int tune(eServiceReferenceDVB &ref, int use_decode_demux, eCueSheet *sg=0, bool simulate=false, eDVBService *service = 0, serviceType type = livetv, bool descramble = true);
 
        /* new interface */
-       int tuneExt(eServiceReferenceDVB &ref, int use_decode_demux, ePtr<iTsSource> &, const char *streaminfo_file, eCueSheet *sg=0, bool simulate=false, eDVBService *service = 0, serviceType type = livetv, bool descramble = true);
+       int tuneExt(eServiceReferenceDVB &ref, ePtr<iTsSource> &, const char *streaminfo_file, eCueSheet *sg=0, bool simulate=false, eDVBService *service = 0, serviceType type = livetv, bool descramble = true);
 
        void free();
 private:
index 9c61daa..2f0becb 100644 (file)
@@ -1294,7 +1294,7 @@ void eDVBServicePlay::serviceEventTimeshift(int event)
                        if (m_skipmode < 0)
                                m_cue->seekTo(0, -1000);
                        ePtr<iTsSource> source = createTsSource(r);
-                       m_service_handler_timeshift.tuneExt(r, 1, source, r.path.c_str(), m_cue, 0, m_dvb_service, false); /* use the decoder demux for everything */
+                       m_service_handler_timeshift.tuneExt(r, source, r.path.c_str(), m_cue, 0, m_dvb_service, false); /* use the decoder demux for everything */
 
                        m_event((iPlayableService*)this, evUser+1);
                }
@@ -1324,7 +1324,7 @@ void eDVBServicePlay::serviceEventTimeshift(int event)
                                resetTimeshift(1);
 
                                ePtr<iTsSource> source = createTsSource(r);
-                               m_service_handler_timeshift.tuneExt(r, 1, source, m_timeshift_file_next.c_str(), m_cue, 0, m_dvb_service, eDVBServicePMTHandler::timeshift_playback, false); /* use the decoder demux for everything */
+                               m_service_handler_timeshift.tuneExt(r, source, m_timeshift_file_next.c_str(), m_cue, 0, m_dvb_service, eDVBServicePMTHandler::timeshift_playback, false); /* use the decoder demux for everything */
 
                                m_event((iPlayableService*)this, evUser+1);
                        }
@@ -1380,7 +1380,7 @@ RESULT eDVBServicePlay::start()
 
        m_first_program_info = 1;
        ePtr<iTsSource> source = createTsSource(service, packetsize);
-       m_service_handler.tuneExt(service, false, source, service.path.c_str(), m_cue, false, m_dvb_service, type, scrambled);
+       m_service_handler.tuneExt(service, source, service.path.c_str(), m_cue, false, m_dvb_service, type, scrambled);
 
        if (m_is_pvr)
        {
@@ -2756,7 +2756,7 @@ void eDVBServicePlay::switchToTimeshift()
        m_cue->seekTo(0, -1000);
 
        ePtr<iTsSource> source = createTsSource(r);
-       m_service_handler_timeshift.tuneExt(r, 1, source, m_timeshift_file.c_str(), m_cue, 0, m_dvb_service, eDVBServicePMTHandler::timeshift_playback, false); /* use the decoder demux for everything */
+       m_service_handler_timeshift.tuneExt(r, source, m_timeshift_file.c_str(), m_cue, 0, m_dvb_service, eDVBServicePMTHandler::timeshift_playback, false); /* use the decoder demux for everything */
 
        eDebug("[eDVBServicePlay] switchToTimeshift, in pause mode now.");
        pause();
index a7d7d31..e5a93cd 100644 (file)
@@ -276,7 +276,7 @@ int eDVBServiceRecord::doPrepare()
                                source = ePtr<iTsSource>(f);
                        }
                }
-               return m_service_handler.tuneExt(m_ref, 0, source, m_ref.path.c_str(), 0, m_simulate, NULL, servicetype, m_descramble);
+               return m_service_handler.tuneExt(m_ref, source, m_ref.path.c_str(), 0, m_simulate, NULL, servicetype, m_descramble);
        }
        return 0;
 }