X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/f94e2c9821eb8784ca03b7122485d4720ec6d6e6..20fdb2a2af40da98427a702a03a79b1fbec3d7af:/lib/service/event.cpp 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;