diff options
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | channels.c | 13 | ||||
-rw-r--r-- | channels.h | 3 | ||||
-rw-r--r-- | eit.c | 7 |
4 files changed, 20 insertions, 4 deletions
@@ -5293,3 +5293,4 @@ Video Disk Recorder Revision History - Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed it to handle the most common case of 'no leading space' very fast, and avoid calling isspace(), which made the whole function a lot faster. +- Fixed detection of Premiere NVOD channel links (thanks to anonymous). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.c 1.53 2006/05/28 15:03:40 kls Exp $ + * $Id: channels.c 1.54 2007/07/21 14:55:01 kls Exp $ */ #include "channels.h" @@ -1007,6 +1007,17 @@ cChannel *cChannels::GetByChannelID(tChannelID ChannelID, bool TryWithoutRid, bo } return NULL; } +cChannel *cChannels::GetByTransponderID(tChannelID ChannelID) +{ + int source = ChannelID.Source(); + int nid = ChannelID.Nid(); + int tid = ChannelID.Tid(); + for (cChannel *channel = First(); channel; channel = Next(channel)) { + if (channel->Tid() == tid && channel->Nid() == nid && channel->Source() == source) + return channel; + } + return NULL; +} bool cChannels::HasUniqueChannelID(cChannel *NewChannel, cChannel *OldChannel) { @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.h 1.43 2007/01/07 14:37:35 kls Exp $ + * $Id: channels.h 1.44 2007/07/21 14:58:36 kls Exp $ */ #ifndef __CHANNELS_H @@ -239,6 +239,7 @@ public: cChannel *GetByNumber(int Number, int SkipGap = 0); cChannel *GetByServiceID(int Source, int Transponder, unsigned short ServiceID); cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false, bool TryWithoutPolarization = false); + cChannel *GetByTransponderID(tChannelID ChannelID); int BeingEdited(void) { return beingEdited; } void IncBeingEdited(void) { beingEdited++; } void DecBeingEdited(void) { beingEdited--; } @@ -8,7 +8,7 @@ * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>. * - * $Id: eit.c 1.123 2007/06/10 12:51:05 kls Exp $ + * $Id: eit.c 1.124 2007/07/21 14:58:04 kls Exp $ */ #include "eit.h" @@ -197,7 +197,10 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo link->SetName(linkName, "", ""); } else if (Setup.UpdateChannels >= 4) { - link = Channels.NewChannel(channel, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId()); + cChannel *transponder = channel; + if (channel->Tid() != ld->getTransportStreamId()) + channel = Channels.GetByTransponderID(linkID); + link = Channels.NewChannel(transponder, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId()); //XXX patFilter->Trigger(); } if (link) { |