From patchwork Wed Jul 4 19:44:09 2007 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: vdr@minivdr.de X-Patchwork-Id: 12488 Received: from webmailfront01.ispgateway.de ([80.67.16.111]) by www.linuxtv.org with esmtp (Exim 4.63) (envelope-from ) id 1I6Alo-0008HX-Iz for vdr@linuxtv.org; Wed, 04 Jul 2007 21:44:12 +0200 Received: from webmailfront01.ispgateway.de (localhost [127.0.0.1]) by webmailfront01.ispgateway.de (8.14.0/8.14.0) with ESMTP id l64JiA5u014226 for ; Wed, 4 Jul 2007 21:44:10 +0200 Received: (from nobody@localhost) by webmailfront01.ispgateway.de (8.14.0/8.14.0/Submit) id l64Ji9u0014225 for vdr@linuxtv.org; Wed, 4 Jul 2007 21:44:09 +0200 Received: from dslb-088-065-252-188.pools.arcor-ip.net (dslb-088-065-252-188.pools.arcor-ip.net [88.65.252.188]) by webmail.df.eu (Horde MIME library) with HTTP; Wed, 04 Jul 2007 21:44:09 +0200 Message-ID: <20070704214409.tp5zweom8kcgw8oc@webmail.df.eu> Date: Wed, 04 Jul 2007 21:44:09 +0200 From: vdr@minivdr.de To: VDR Mailing List MIME-Version: 1.0 User-Agent: domainFACTORY X-Originating-IP: 88.65.252.188 Subject: [vdr] Premiere NVOD Channels fix X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.9 Precedence: list Reply-To: VDR Mailing List List-Id: VDR Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jul 2007 19:44:12 -0000 Status: O X-Status: X-Keywords: X-UID: 13470 Hello @all, Fix Premiere NVOD Channels. Link for new Channels over TransponderID added. 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) {