Premiere NVOD Channels fix
Commit Message
Hello @all,
Fix Premiere NVOD Channels.
Link for new Channels over TransponderID added.
@@ -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)
{
@@ -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--; }
@@ -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) {