From: Andreas Monzner Date: Mon, 28 Nov 2005 17:10:42 +0000 (+0000) Subject: work on (premiere) subservice selection X-Git-Tag: 2.6.0~4905 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/669088fb85f6d0e6c0f7c424df2d1c5dc1141d84 work on (premiere) subservice selection sorry this needs another one libdvbsi++ update --- diff --git a/lib/service/event.cpp b/lib/service/event.cpp index cfd2ac5f..e76ea315 100644 --- a/lib/service/event.cpp +++ b/lib/service/event.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include DEFINE_REF(eServiceEvent); @@ -60,6 +61,9 @@ bool eServiceEvent::loadLanguage(Event *evt, std::string lang, int tsidonid) { switch ((*desc)->getTag()) { + case LINKAGE_DESCRIPTOR: + m_linkage_services.clear(); + break; case SHORT_EVENT_DESCRIPTOR: { const ShortEventDescriptor *sed = (ShortEventDescriptor*)*desc; @@ -99,6 +103,31 @@ bool eServiceEvent::loadLanguage(Event *evt, std::string lang, int tsidonid) break; } } + if ( retval == 1 ) + { + for (DescriptorConstIterator desc = evt->getDescriptors()->begin(); desc != evt->getDescriptors()->end(); ++desc) + { + switch ((*desc)->getTag()) + { + case LINKAGE_DESCRIPTOR: + { + const LinkageDescriptor *ld = (LinkageDescriptor*)*desc; + if ( ld->getLinkageType() == 0xB0 ) + { + linkage_service s; + s.onid = ld->getOriginalNetworkId(); + s.tsid = ld->getTransportStreamId(); + s.sid = ld->getServiceId(); + const PrivateDataByteVector *privateData = + ld->getPrivateDataBytes(); + s.description.assign((const char*)&((*privateData)[0]), privateData->size()); + m_linkage_services.push_back(s); + } + break; + } + } + } + } if ( m_extended_description.find(m_short_description) == 0 ) m_short_description=""; return retval; diff --git a/lib/service/event.h b/lib/service/event.h index 07106e40..3bbb322e 100644 --- a/lib/service/event.h +++ b/lib/service/event.h @@ -4,6 +4,7 @@ #ifndef SWIG #include #include +#include #include class Event; #endif @@ -16,6 +17,14 @@ DECLARE_REF(eServiceEvent); #endif public: #ifndef SWIG + struct linkage_service + { + uint16_t sid; + uint16_t onid; + uint16_t tsid; + std::string description; + }; + std::list m_linkage_services; time_t m_begin; int m_duration; std::string m_event_name, m_short_description, m_extended_description;