1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed detection of Premiere NVOD channel links

This commit is contained in:
Klaus Schmidinger 2007-07-21 15:05:20 +02:00
parent 593013c94c
commit a1663a3612
4 changed files with 20 additions and 4 deletions

View File

@ -5293,3 +5293,4 @@ Video Disk Recorder Revision History
- Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed - 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 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. calling isspace(), which made the whole function a lot faster.
- Fixed detection of Premiere NVOD channel links (thanks to anonymous).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "channels.h"
@ -1007,6 +1007,17 @@ cChannel *cChannels::GetByChannelID(tChannelID ChannelID, bool TryWithoutRid, bo
} }
return NULL; 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) bool cChannels::HasUniqueChannelID(cChannel *NewChannel, cChannel *OldChannel)
{ {

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __CHANNELS_H
@ -239,6 +239,7 @@ public:
cChannel *GetByNumber(int Number, int SkipGap = 0); cChannel *GetByNumber(int Number, int SkipGap = 0);
cChannel *GetByServiceID(int Source, int Transponder, unsigned short ServiceID); cChannel *GetByServiceID(int Source, int Transponder, unsigned short ServiceID);
cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false, bool TryWithoutPolarization = false); cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false, bool TryWithoutPolarization = false);
cChannel *GetByTransponderID(tChannelID ChannelID);
int BeingEdited(void) { return beingEdited; } int BeingEdited(void) { return beingEdited; }
void IncBeingEdited(void) { beingEdited++; } void IncBeingEdited(void) { beingEdited++; }
void DecBeingEdited(void) { beingEdited--; } void DecBeingEdited(void) { beingEdited--; }

7
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * 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>. * 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" #include "eit.h"
@ -197,7 +197,10 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo
link->SetName(linkName, "", ""); link->SetName(linkName, "", "");
} }
else if (Setup.UpdateChannels >= 4) { 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(); //XXX patFilter->Trigger();
} }
if (link) { if (link) {