Premiere NVOD Channels fix

Message ID 20070704214409.tp5zweom8kcgw8oc@webmail.df.eu
State New
Headers

Commit Message

vdr@minivdr.de July 4, 2007, 7:44 p.m. UTC
  Hello @all,

Fix Premiere NVOD Channels.

Link for new Channels over TransponderID added.
  

Patch

diff -Nru vdr-1.4.7-org/channels.c vdr-1.4.7/channels.c
--- vdr-1.4.7-org/channels.c	2006-05-28 17:03:40.000000000 +0200
+++ vdr-1.4.7/channels.c	2007-07-04 21:28:36.000000000 +0200
@@ -1007,6 +1007,18 @@ 
      }
   return NULL;
 }
+cChannel *cChannels::GetByTransponderID(tChannelID ChannelID)
+{
+  int source = ChannelID.Source();
+  int nid = ChannelID.Nid(); // networkd
+  int tid = ChannelID.Tid(); // transponderId 
+ 
+     for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) {
+        if (channel->Tid() == tid &&  channel->Nid() == nid && channel->Source() == source)
+           return channel;
+        }
+    return NULL;
+}
 
 bool cChannels::HasUniqueChannelID(cChannel *NewChannel, cChannel *OldChannel)
 {
diff -Nru vdr-1.4.7-org/channels.h vdr-1.4.7/channels.h
--- vdr-1.4.7-org/channels.h	2006-05-28 17:03:56.000000000 +0200
+++ vdr-1.4.7/channels.h	2007-07-04 21:29:24.000000000 +0200
@@ -238,6 +238,7 @@ 
   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 *cChannels::GetByTransponderID(tChannelID ChannelID);
   int BeingEdited(void) { return beingEdited; }
   void IncBeingEdited(void) { beingEdited++; }
   void DecBeingEdited(void) { beingEdited--; }
diff -Nru vdr-1.4.7-org/eit.c vdr-1.4.7/eit.c
--- vdr-1.4.7-org/eit.c	2006-10-09 18:14:36.000000000 +0200
+++ vdr-1.4.7/eit.c	2007-07-04 21:27:20.000000000 +0200
@@ -196,7 +196,12 @@ 
                                 link->SetName(linkName, "", "");
                              }
                           else if (Setup.UpdateChannels >= 4) {
-                             link = Channels.NewChannel(channel, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
+                              if (channel->Tid() != ld->getTransportStreamId()) {
+                                 cChannel *transponder = Channels.GetByTransponderID(linkID);
+                                  link = Channels.NewChannel(transponder, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
+                                 }
+                              else 
+                                 link = Channels.NewChannel(channel, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
                              //XXX patFilter->Trigger();
                              }
                           if (link) {