channels with same pids

Message ID 1203834024.14699.23.camel@ua0lnjhome
State New
Headers

Commit Message

ua0lnj Feb. 24, 2008, 6:20 a.m. UTC
  Hi
1. cChannel::PluginParam() need for iptv plugin.
sorry, i was attached bad version for native vdr.
See attach for this message.

2. You right of cause, the triplet SID/NID/TID is supposed to be unique
within one satellite, but in really we have incorrect pid tables on many
satellites, and in local iptv networks. Example, see
http://www.lyngsat.com/eam2.html, some channels have equal pids:
11650V, 11190H, and 11044H too.
This is fault of sat providers, but we have it as is. And be a fine, if
vdr can works correct with such channels, without editing channel.conf
manually.



On Sat, 23/02/2008 18:03 +0100, Klaus Schmidinger wrote:
> On 02/22/08 04:29, ua0lnj wrote:
> > Hi.
> > Some satellites have many channels with same sid, nid, tid on different
> > transponders. This is incorrect pid table, and vdr works with it not
> > good, need scan channels and change rid manually, but if you select
> > "transponder update" all you settings will be rewrite and channels
> > deleted as duplicate.
> > I have this trouble on ABS1 75.0 E and Express AM2 80.0 E, and I have
> > very many channels with same pids on my iptv stream.
> > After this patch, vdr parsing duplicate pids, and if transponders is
> > not equal, channel not deleted, but rid wil be increased. If pids and
> > transponders are equal, channel will be deleted as duplicate.
> > Patch was made for vdr-1.5.12, but works with 1.5.15 too.
> > Attached 3 patches, for native vdr and vdr + iptv plugin patched and for
> > native reelchannelscan-0.4.1 plugin (include patch for 1.5.xx).
> 
> First of all, there is no cChannel::PluginParam() in plain vanilla VDR 1.5.15.
> 
> Secondly, as far as I understand this, the triplet SID/NID/TID is supposed
> to be unique within one satellite.
> Can you point me to a standard document that would indicate otherwise?
> 
> Klaus
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  

Comments

Klaus Schmidinger Feb. 24, 2008, 9:34 a.m. UTC | #1
On 02/24/08 07:20, ua0lnj wrote:
> Hi
> 1. cChannel::PluginParam() need for iptv plugin.
> sorry, i was attached bad version for native vdr.
> See attach for this message.
> 
> 2. You right of cause, the triplet SID/NID/TID is supposed to be unique
> within one satellite, but in really we have incorrect pid tables on many
> satellites, and in local iptv networks. Example, see
> http://www.lyngsat.com/eam2.html, some channels have equal pids:
> 11650V, 11190H, and 11044H too.
> This is fault of sat providers, but we have it as is. And be a fine, if
> vdr can works correct with such channels, without editing channel.conf
> manually.

Have you ever tried complaining to those providers, telling them about
their non-standard behavior?

If we always just work around the provider's faults, we're never going
to get standard behavior...

Klaus

> On Sat, 23/02/2008 18:03 +0100, Klaus Schmidinger wrote:
>> On 02/22/08 04:29, ua0lnj wrote:
>>> Hi.
>>> Some satellites have many channels with same sid, nid, tid on different
>>> transponders. This is incorrect pid table, and vdr works with it not
>>> good, need scan channels and change rid manually, but if you select
>>> "transponder update" all you settings will be rewrite and channels
>>> deleted as duplicate.
>>> I have this trouble on ABS1 75.0 E and Express AM2 80.0 E, and I have
>>> very many channels with same pids on my iptv stream.
>>> After this patch, vdr parsing duplicate pids, and if transponders is
>>> not equal, channel not deleted, but rid wil be increased. If pids and
>>> transponders are equal, channel will be deleted as duplicate.
>>> Patch was made for vdr-1.5.12, but works with 1.5.15 too.
>>> Attached 3 patches, for native vdr and vdr + iptv plugin patched and for
>>> native reelchannelscan-0.4.1 plugin (include patch for 1.5.xx).
>> First of all, there is no cChannel::PluginParam() in plain vanilla VDR 1.5.15.
>>
>> Secondly, as far as I understand this, the triplet SID/NID/TID is supposed
>> to be unique within one satellite.
>> Can you point me to a standard document that would indicate otherwise?
>>
>> Klaus
  
Goga777 Feb. 24, 2008, 11:35 a.m. UTC | #2
> Have you ever tried complaining to those providers, telling them about
> their non-standard behavior?

I have tried. Several times. No results. I can confirm that only VDR has this problem. Other receivers (dreambox for example) don't have this problem.

Igor
  
Klaus Schmidinger Feb. 24, 2008, 2 p.m. UTC | #3
On 02/24/08 12:35, Igor wrote:
>> Have you ever tried complaining to those providers, telling them about
>> their non-standard behavior?
> 
> I have tried. Several times. No results.

I wonder why these people think that the DVB standards don't apply to them...

> I can confirm that only VDR has this problem. Other receivers (dreambox for example) don't have this problem.

Does this mean that the dreambox doesn't identify channels using NID/TID/SID?

VDR itself doesn't use the RID, and I don't like starting to use it
just to iron out the inability of some providers to adhere to the standard.
I'd rather like to get rid of the RID altogether.

Klaus
  
ua0lnj Feb. 24, 2008, 3:28 p.m. UTC | #4
I think, may be not need use rid, but add new parameter for channel
identify, such as transponder example, or add some variants of identify
and select it in settings...
Nid/Tid/Sid or Transponder/Channel Name or Transponder/Sid/Tid...
Because wanted use "transponder update" and don't want edit channel.conf
manually...



? ???, 24/02/2008 ? 15:00 +0100, Klaus Schmidinger ?????:
> On 02/24/08 12:35, Igor wrote:
> >> Have you ever tried complaining to those providers, telling them about
> >> their non-standard behavior?
> > 
> > I have tried. Several times. No results.
> 
> I wonder why these people think that the DVB standards don't apply to them...
> 
> > I can confirm that only VDR has this problem. Other receivers (dreambox for example) don't have this problem.
> 
> Does this mean that the dreambox doesn't identify channels using NID/TID/SID?
> 
> VDR itself doesn't use the RID, and I don't like starting to use it
> just to iron out the inability of some providers to adhere to the standard.
> I'd rather like to get rid of the RID altogether.
> 
> Klaus
> 
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  
Timothy D. Lenz Feb. 24, 2008, 8:08 p.m. UTC | #5
Trying working with NA sats. At least in Europe you have standards. Here the
only standard is that there is no standard.
For example, on 97w after using a custome scanner, if I allow VDR to auto
update channel names, then surf through the channels with a fresh conf, some
channels dissapear, others get renamed to wrong names, etc.. Using yaepg
while fliping through I can see some channels get shuffled and renamed.

----- Original Message ----- 
From: "Klaus Schmidinger" <Klaus.Schmidinger@cadsoft.de>
To: <vdr@linuxtv.org>
Sent: Sunday, February 24, 2008 7:00 AM
Subject: Re: [vdr] [patch] channels with same pids


> On 02/24/08 12:35, Igor wrote:
> >> Have you ever tried complaining to those providers, telling them about
> >> their non-standard behavior?
> >
> > I have tried. Several times. No results.
>
> I wonder why these people think that the DVB standards don't apply to
them...
>
> > I can confirm that only VDR has this problem. Other receivers (dreambox
for example) don't have this problem.
>
> Does this mean that the dreambox doesn't identify channels using
NID/TID/SID?
>
> VDR itself doesn't use the RID, and I don't like starting to use it
> just to iron out the inability of some providers to adhere to the
standard.
> I'd rather like to get rid of the RID altogether.
>
> Klaus
>
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  
Malcolm Caldwell Feb. 25, 2008, 12:46 a.m. UTC | #6
On Sun, 2008-02-24 at 10:34 +0100, Klaus Schmidinger wrote:
> On 02/24/08 07:20, ua0lnj wrote:
> > Hi
> > 1. cChannel::PluginParam() need for iptv plugin.
> > sorry, i was attached bad version for native vdr.
> > See attach for this message.
> > 
> > 2. You right of cause, the triplet SID/NID/TID is supposed to be unique
> > within one satellite, but in really we have incorrect pid tables on many
> > satellites, and in local iptv networks. Example, see
> > http://www.lyngsat.com/eam2.html, some channels have equal pids:
> > 11650V, 11190H, and 11044H too.
> > This is fault of sat providers, but we have it as is. And be a fine, if
> > vdr can works correct with such channels, without editing channel.conf
> > manually.
> 
> Have you ever tried complaining to those providers, telling them about
> their non-standard behavior?
> 
> If we always just work around the provider's faults, we're never going
> to get standard behavior...

Satellites are a multi-million dollar business.  Do we really think that
a few VDR users complaining that they cannot use their particular choice
of receiver (VDR) is going to make a difference?

> Klaus
> 
> > On Sat, 23/02/2008 18:03 +0100, Klaus Schmidinger wrote:
> >> On 02/22/08 04:29, ua0lnj wrote:
> >>> Hi.
> >>> Some satellites have many channels with same sid, nid, tid on different
> >>> transponders. This is incorrect pid table, and vdr works with it not
> >>> good, need scan channels and change rid manually, but if you select
> >>> "transponder update" all you settings will be rewrite and channels
> >>> deleted as duplicate.
> >>> I have this trouble on ABS1 75.0 E and Express AM2 80.0 E, and I have
> >>> very many channels with same pids on my iptv stream.
> >>> After this patch, vdr parsing duplicate pids, and if transponders is
> >>> not equal, channel not deleted, but rid wil be increased. If pids and
> >>> transponders are equal, channel will be deleted as duplicate.
> >>> Patch was made for vdr-1.5.12, but works with 1.5.15 too.
> >>> Attached 3 patches, for native vdr and vdr + iptv plugin patched and for
> >>> native reelchannelscan-0.4.1 plugin (include patch for 1.5.xx).
> >> First of all, there is no cChannel::PluginParam() in plain vanilla VDR 1.5.15.
> >>
> >> Secondly, as far as I understand this, the triplet SID/NID/TID is supposed
> >> to be unique within one satellite.
> >> Can you point me to a standard document that would indicate otherwise?
> >>
> >> Klaus
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  

Patch

diff -Nup vdr-1.5.12/channels.c vdr-1.5.12mod/channels.c
--- vdr-1.5.12/channels.c	2007-10-13 01:40:53.000000000 +1100
+++ vdr-1.5.12mod/channels.c	2008-01-08 23:41:56.000000000 +1000
@@ -876,6 +876,7 @@  cChannels::cChannels(void)
   modified = CHANNELSMOD_NONE;
 }
 
+
 void cChannels::DeleteDuplicateChannels(void)
 {
   cList<cChannelSorter> ChannelSorter;
@@ -887,12 +888,21 @@  void cChannels::DeleteDuplicateChannels(
   cChannelSorter *cs = ChannelSorter.First();
   while (cs) {
         cChannelSorter *next = ChannelSorter.Next(cs);
-        if (next && cs->channelID == next->channelID) {
+        if (next && cs->channelID == next->channelID && cs->channel->Transponder() == next->channel->Transponder()) {
            dsyslog("deleting duplicate channel %s", *next->channel->ToText());
            Del(next->channel);
            }
-        cs = next;
-        }
+        else  if (next && cs->channelID == next->channelID) {
+           dsyslog("deleting duplicate id %s", *next->channel->ToText());
+           int sid = cs->channel->Sid();
+           int nid = cs->channel->Nid();
+           int tid = cs->channel->Tid();
+           int rid = cs->channel->Rid();
+           next->channel->SetId(nid, tid, sid, rid+1);
+           }
+       cs = next;
+       }
+       Channels.Save();
 }
 
 bool cChannels::Load(const char *FileName, bool AllowComments, bool MustExist)
diff -Nup vdr-1.5.12/nit.c vdr-1.5.12mod/nit.c
--- vdr-1.5.12/nit.c	2007-08-18 01:02:45.000000000 +1100
+++ vdr-1.5.12mod/nit.c	2007-12-29 13:39:39.000000000 +1000
@@ -143,7 +143,7 @@  void cNitFilter::Process(u_short Pid, u_
                  if (Setup.UpdateChannels >= 5) {
                     bool found = false;
                     for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
-                        if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
+                        if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Transponder() == Transponder() && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { 
                            int transponder = Channel->Transponder();
                            if (!ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), transponder)) {
                               for (int n = 0; n < NumFrequencies; n++) {
diff -Nup vdr-1.5.12/sdt.c vdr-1.5.12mod/sdt.c
--- vdr-1.5.12/sdt.c	2007-06-10 19:50:49.000000000 +1100
+++ vdr-1.5.12mod/sdt.c	2008-01-08 23:48:59.000000000 +1000
@@ -78,7 +78,7 @@  void cSdtFilter::Process(u_short Pid, u_
                         char *pp = compactspace(ProviderNameBuf);
                         if (channel) {
                            channel->SetId(sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId());
-                           if (Setup.UpdateChannels == 1 || Setup.UpdateChannels >= 3)
+                           if ((Setup.UpdateChannels == 1 || Setup.UpdateChannels >= 3) && channel->Transponder() == Transponder())
                               channel->SetName(pn, ps, pp);
                            // Using SiSdtService.getFreeCaMode() is no good, because some
                            // tv stations set this flag even for non-encrypted channels :-(