diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-05 19:24:42 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-05 19:24:42 +0000 |
| commit | 572caca1ba06dd8247724c9f5d6bcad515e2edf4 (patch) | |
| tree | 8525a3017c1d58b03b667cd8d77f942318256ddd /lib/dvb | |
| parent | 3c2c648735df18576453aa52f0d8441793619dc7 (diff) | |
| download | enigma2-572caca1ba06dd8247724c9f5d6bcad515e2edf4.tar.gz enigma2-572caca1ba06dd8247724c9f5d6bcad515e2edf4.zip | |
add support for Linkage services ( Premiere Subservices )
TODO: show/hide green point depending on avail subservices
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/eit.cpp | 5 | ||||
| -rw-r--r-- | lib/dvb/eit.h | 1 | ||||
| -rw-r--r-- | lib/dvb/idvb.h | 6 | ||||
| -rw-r--r-- | lib/dvb/specs.h | 21 |
4 files changed, 33 insertions, 0 deletions
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<eServiceEvent> &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<eServiceEvent> &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 |
