From 2257bf78a5ea5aba595fb59dc6f4af409e179146 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Wed, 1 Oct 2008 11:29:26 +0000 Subject: [PATCH] add long pat/pmt timeout on ts playback --- lib/dvb/pmt.cpp | 6 +++--- lib/dvb/specs.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 4047be5c..5fb1e9ee 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -50,9 +50,9 @@ void eDVBServicePMTHandler::channelStateChanged(iDVBChannel *channel) eDebug("ok ... now we start!!"); if (m_pmt_pid == -1) - m_PAT.begin(eApp, eDVBPATSpec(), m_demux); + m_PAT.begin(eApp, eDVBPATSpec(m_reference.path.empty() ? false : true), m_demux); else - m_PMT.begin(eApp, eDVBPMTSpec(m_pmt_pid, m_reference.getServiceID().get()), m_demux); + m_PMT.begin(eApp, eDVBPMTSpec(m_pmt_pid, m_reference.getServiceID().get(), m_reference.path.empty() ? false : true), m_demux); if ( m_service && !m_service->cacheEmpty() ) serviceEvent(eventNewProgramInfo); @@ -135,7 +135,7 @@ void eDVBServicePMTHandler::PATready(int) if (pmtpid == -1) serviceEvent(eventNoPATEntry); else - m_PMT.begin(eApp, eDVBPMTSpec(pmtpid, m_reference.getServiceID().get()), m_demux); + m_PMT.begin(eApp, eDVBPMTSpec(pmtpid, m_reference.getServiceID().get(), m_reference.path.empty() ? false : true), m_demux); } else serviceEvent(eventNoPAT); } diff --git a/lib/dvb/specs.h b/lib/dvb/specs.h index c53a23b5..514bc341 100644 --- a/lib/dvb/specs.h +++ b/lib/dvb/specs.h @@ -14,12 +14,12 @@ struct eDVBPMTSpec { eDVBTableSpec m_spec; public: - eDVBPMTSpec(int pid, int sid) + eDVBPMTSpec(int pid, int sid, bool long_timeout = false) { m_spec.pid = pid; m_spec.tid = ProgramMapSection::TID; m_spec.tidext = sid; - m_spec.timeout = 4000; // ProgramMapSection::TIMEOUT; + m_spec.timeout = long_timeout ? 20000 : 4000; // ProgramMapSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfHaveTIDExt | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; @@ -108,11 +108,11 @@ struct eDVBPATSpec { eDVBTableSpec m_spec; public: - eDVBPATSpec() + eDVBPATSpec(bool long_timeout=false) { m_spec.pid = ProgramAssociationSection::PID; m_spec.tid = ProgramAssociationSection::TID; - m_spec.timeout = 4000; // ProgramAssociationSection::TIMEOUT; + m_spec.timeout = long_timeout ? 20000 : 4000; // ProgramAssociationSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; -- 2.30.2