Re: [vdr] Blank screen when switching channels on same transponderwithDpid
Tomas Berglund wrote: Now I can switch channels with Dpid without problem. The following patch in cDvbDevice::SetChannelDevice fixes it. The PRINTPIDs debug function now show adding and deleting Dpids. But when I select the Dolby track my kernel panics... Well.. I'm not Klaus ;-) Just tried you patch, and my system also freezed. @@ -849,15 +857,16 @@ if (TurnOnLivePIDs) { SetAudioBypass(false); - if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(Channel->Vpid(), ptVideo) && AddPid(Channel->Apid(0), ptAudio))) { + if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(Channel->Vpid(), ptVideo) && AddPid(Channel->Apid(0), ptAudio) && AddPid(Channel->Dpid(0), ptDolby))) { I guess the basic problem is with your CAM, which probably only supports a very limited number of PIDs to decode at the same time. There is indeed an unsymmetry in the way VDR handles the additional live audio PIDs, which doesn't matter too much if the CAM is powerful enough to handle many PIDs. Once you switch to a different transponder the problem should be gone, since then all PIDs are cleared in the CAM. What I could suggest as a quick workaround is this: --- dvbdevice.c 2006/06/11 09:03:55 1.159 +++ dvbdevice.c 2006/08/12 12:42:12 @@ -856,7 +856,8 @@ //XXX quick workaround for additional live audio PIDs: if (ciHandler) { ciHandler->SetPid(Channel->Apid(1), true); -ciHandler->SetPid(Channel->Dpid(0), true); +if (Setup.UseDolbyDigital) + ciHandler->SetPid(Channel->Dpid(0), true); } if (IsPrimaryDevice()) AddPid(Channel->Tpid(), ptTeletext); This would at least not set the DPID if you don't use Dolby. The change you have suggested above actually sets up a PID filter in the DVB device for the DPID, which apparently causes trouble when actually trying to switch to live Dolby. I can see that this is a bit messy right now, but improving the CAM handling is the first thing I'm going to do in version 1.5... Klaus ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
RE: [vdr] Blank screen when switching channels on same transponderwithDpid
Now I can switch channels with Dpid without problem. The following patch in cDvbDevice::SetChannelDevice fixes it. The PRINTPIDs debug function now show adding and deleting Dpids. But when I select the Dolby track my kernel panics... Well.. I'm not Klaus ;-) @@ -849,15 +857,16 @@ if (TurnOnLivePIDs) { SetAudioBypass(false); - if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(Channel->Vpid(), ptVideo) && AddPid(Channel->Apid(0), ptAudio))) { + if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(Channel->Vpid(), ptVideo) && AddPid(Channel->Apid(0), ptAudio) && AddPid(Channel->Dpid(0), ptDolby))) { > -Ursprungligt meddelande- > Från: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] För Tomas Berglund > Skickat: den 11 augusti 2006 01:38 > Till: 'VDR Mailing List' > Ämne: RE: [vdr] Blank screen when switching channels on same > transponderwithDpid > > > Just an idea... In dvbdevice.c line 863, additional Dpid(0) > is set. When I tune between ch1 and ch2 twice the screen goes > blank. Can > it be because Dpid(0) is never deleted in DelPid() ?? > > In the log Dpid(0) 4614 is set but never deleted. > Attached log below: > > > Aug 11 01:30:37 htpc vdr: [4829] switching to channel 1 > Aug 11 01:30:37 htpc vdr: [4829] 0 D 4358 1 4102 1 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 E 0 0 4102 1 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 D 0 0 4102 1 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 E 0 00 0 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 D 0 00 0 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 E 0 00 00 0 > 7942 10 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 D 0 00 00 0 > 7942 10 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 E 0 00 00 0 > 0 00 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 C 0 00 0 4102 1 > 0 00 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 C 0 0 4102 1 4102 1 > 0 00 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] 0 C 4358 1 4102 1 4102 1 > 0 00 0 *0 00 0 > Aug 11 01:30:37 htpc vdr: [4829] DEBUG: Set additional live > audio PIDs, Apid(1) 0, Dpid(0) 4614 > Aug 11 01:30:37 htpc vdr: [4829] 0 C 4358 1 4102 1 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] switching to channel 2 > Aug 11 01:31:36 htpc vdr: [4829] 0 D 4358 1 4102 1 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 E 0 0 4102 1 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 D 0 0 4102 1 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 E 0 00 0 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 D 0 00 0 4102 1 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 E 0 00 00 0 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 D 0 00 00 0 > 7942 10 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 E 0 00 00 0 > 0 00 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 C 0 00 0 4103 1 > 0 00 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 C 0 0 4103 1 4103 1 > 0 00 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] 0 C 4359 1 4103 1 4103 1 > 0 00 0 *0 00 0 > Aug 11 01:31:36 htpc vdr: [4829] DEBUG: Set additional live > audio PIDs, Apid(1) 0, Dpid(0) 4615 > Aug 11 01:31:36 htpc vdr: [4829] 0 C 4359 1 4103 1 4103 1 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] switching to channel 1 > Aug 11 01:31:41 htpc vdr: [4829] 0 D 4359 1 4103 1 4103 1 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 E 0 0 4103 1 4103 1 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 D 0 0 4103 1 4103 1 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 E 0 00 0 4103 1 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 D 0 00 0 4103 1 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 E 0 00 00 0 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 D 0 00 00 0 > 7943 10 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 E 0 00 00 0 > 0 00 0 *0 00 0 > Aug 11 01:31:41 htpc vdr: [4829] 0 C 0 00 0 4102 1 > 0 00 0 *0 00