From 572caca1ba06dd8247724c9f5d6bcad515e2edf4 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Mon, 5 Dec 2005 19:24:42 +0000 Subject: add support for Linkage services ( Premiere Subservices ) TODO: show/hide green point depending on avail subservices --- lib/dvb/eit.cpp | 5 +++++ lib/dvb/eit.h | 1 + lib/dvb/idvb.h | 6 ++++++ lib/dvb/specs.h | 21 +++++++++++++++++++++ 4 files changed, 33 insertions(+) (limited to 'lib/dvb') diff --git a/lib/dvb/eit.cpp b/lib/dvb/eit.cpp index cc2c29b2..9f3169f9 100644 --- a/lib/dvb/eit.cpp +++ b/lib/dvb/eit.cpp @@ -42,6 +42,11 @@ void eDVBServiceEITHandler::start(iDVBDemux *demux, int sid) m_EIT.begin(eApp, eDVBEITSpec(sid), demux); } +void eDVBServiceEITHandler::startOther(iDVBDemux *demux, int sid) +{ + m_EIT.begin(eApp, eDVBEITSpecOther(sid), demux); +} + RESULT eDVBServiceEITHandler::getEvent(ePtr &event, int nownext) { event = nownext ? m_event_next : m_event_now; diff --git a/lib/dvb/eit.h b/lib/dvb/eit.h index 43bdb6b2..bc52e146 100644 --- a/lib/dvb/eit.h +++ b/lib/dvb/eit.h @@ -19,6 +19,7 @@ public: eDVBServiceEITHandler(); void start(iDVBDemux *demux, int sid); + void startOther(iDVBDemux *demux, int sid); RESULT getEvent(ePtr &event, int nownext); diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index 22eccbd9..742a3a32 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -153,6 +153,12 @@ struct eServiceReferenceDVB: public eServiceReference eDVBNamespace getDVBNamespace() const { return eDVBNamespace(data[4]); } void setDVBNamespace(eDVBNamespace dvbnamespace) { data[4]=dvbnamespace.get(); } + eServiceID getParentServiceID() const { return eServiceID(data[5]); } + void setParentServiceID( eServiceID sid ) { data[5]=sid.get(); } + + eTransportStreamID getParentTransportStreamID() const { return eTransportStreamID(data[6]); } + void setParentTransportStreamID( eTransportStreamID tsid ) { data[6]=tsid.get(); } + eServiceReferenceDVB(eDVBNamespace dvbnamespace, eTransportStreamID transport_stream_id, eOriginalNetworkID original_network_id, eServiceID service_id, int service_type) :eServiceReference(eServiceReference::idDVB, 0) { diff --git a/lib/dvb/specs.h b/lib/dvb/specs.h index 23ef2cec..afd5cef8 100644 --- a/lib/dvb/specs.h +++ b/lib/dvb/specs.h @@ -127,4 +127,25 @@ public: } }; +class eDVBEITSpecOther +{ + eDVBTableSpec m_spec; +public: + /* this is for now&next on actual transponder. */ + eDVBEITSpecOther(int sid) + { + m_spec.pid = EventInformationSection::PID; + m_spec.tid = TID_EIT_OTHER; + m_spec.tidext = sid; + m_spec.timeout = EventInformationSection::TIMEOUT; + m_spec.flags = eDVBTableSpec::tfAnyVersion | + eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfHaveTIDExt | + eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; + } + operator eDVBTableSpec &() + { + return m_spec; + } +}; + #endif -- cgit v1.2.3