eTransportStreamID getParentTransportStreamID() const { return eTransportStreamID(data[6]); }
void setParentTransportStreamID( eTransportStreamID tsid ) { data[6]=tsid.get(); }
+ eServiceReferenceDVB getParentServiceReference() const
+ {
+ eServiceReferenceDVB tmp(*this);
+ if (data[4] && data[5])
+ {
+ tmp.data[1] = data[5];
+ tmp.data[2] = data[6];
+ tmp.data[5] = tmp.data[6] = 0;
+ }
+ else
+ tmp.type = idInvalid;
+ return tmp;
+ }
+
eServiceReferenceDVB(eDVBNamespace dvbnamespace, eTransportStreamID transport_stream_id, eOriginalNetworkID original_network_id, eServiceID service_id, int service_type)
:eServiceReference(eServiceReference::idDVB, 0)
{
{
eEPGCache::getInstance()->Lock();
const eit_event_struct *event = 0;
+ eServiceReferenceDVB ref = m_ref.getParentServiceReference();
+ if (!ref.valid())
+ ref = m_ref;
if ( eit_event_id != -1 )
{
eDebug("query epg event id %d", eit_event_id);
- eEPGCache::getInstance()->lookupEventId(m_ref, eit_event_id, event);
+ eEPGCache::getInstance()->lookupEventId(ref, eit_event_id, event);
}
if ( !event && (begTime != -1 && endTime != -1) )
{
beg.tm_hour, beg.tm_min, beg.tm_sec,
end.tm_hour, end.tm_min, end.tm_sec,
query.tm_hour, query.tm_min, query.tm_sec);
- eEPGCache::getInstance()->lookupEventTime(m_ref, queryTime, event);
+ eEPGCache::getInstance()->lookupEventTime(ref, queryTime, event);
}
if ( event )
{