summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2007-07-21 15:05:20 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2007-07-21 15:05:20 +0200
commita1663a36125cd7b73162104aecd619653c625cc5 (patch)
treeac9337c2ba04b5f6e81d4bfce7c562f8b6de1bb4
parent593013c94c97b82485c895a717591a15086497f2 (diff)
downloadvdr-a1663a36125cd7b73162104aecd619653c625cc5.tar.gz
vdr-a1663a36125cd7b73162104aecd619653c625cc5.tar.bz2
Fixed detection of Premiere NVOD channel links
-rw-r--r--HISTORY1
-rw-r--r--channels.c13
-rw-r--r--channels.h3
-rw-r--r--eit.c7
4 files changed, 20 insertions, 4 deletions
diff --git a/HISTORY b/HISTORY
index 6b933e80..a7139801 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/channels.c b/channels.c
index 67cf3c9d..d725ac76 100644
--- a/channels.c
+++ b/channels.c
@@ -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)
{
diff --git a/channels.h b/channels.h
index e34cb0ef..6381a201 100644
--- a/channels.h
+++ b/channels.h
@@ -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--; }
diff --git a/eit.c b/eit.c
index e1e47f48..cc2d0863 100644
--- a/eit.c
+++ b/eit.c
@@ -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) {