Hi list,
since some time (1-2 years) I noticed that the DVB-T channels do not
show EPG anymore. I'm not sure what is the root-cause: either it
was the migration of French DVB-T to HD (in 2016) or an update of VDR.
Anyway, this morning I took the time to figure out what is wrong and
here is what I found.
In short, the channel-ID generated from the one received in the EIT
does not correspond to a known channel-ID from the channel list, and
VDR drops the whole section:
In cEIT::cEIT (from eit.c) we see
tChannelID channelID(Source, getOriginalNetworkId(), getTransportStreamId(), getServiceId());
cChannel *Channel = Channels->GetByChannelID(channelID, true);
and channel is NULL in my case.
I added some debug prints to GetByChannelID() in the search loop:
printf("sid: %d == %d, %s, %s %d\n",
Channel->Sid(),
sid,
(const char *)ChannelID.ToString(),
(const char *)Channel->GetChannelID().ToString(),
Channel->GetChannelID() == ChannelID);
And here is an example of what I get:
sid: 517 == 517, T-8442-2-517, T-0-506-517 0
The internal channel ID of vdr reads T-0-506-517. 517 is the SID, 506
is the radio-channel frequency in MHz. This is the right internal
channel for this EIT-section.
The EIT-channel-ID is telling me that 8442 is the original network ID
and 2 might be the radio-channel ID.
I tweaked the operator==() of ChannelID to make it work, but not in a
contributable manner.
How should this be fixed correctly?
Is this a regression introduced somewhere?
Can it be solved by configuration?
Thanks for any help.
best regards,
--
Patrick.