Re: [vdr] vdr-1.7.15 problem with live TV [1.7.11 or older OK] [PROGRESS :) ]
On 05.09.2010 21:59, Simon Baxter wrote: Looks like there are TS packets in your stream that are marked as "scrambled", but not unscrambled by the CAM. Do you have any CAM in your system at all? Yes. System has 2x TT-1501-C cards and Alphacrypt CAMS Are the channels where this happens scrambled? Yes Do these channels have separate VPID and PPID? channels.conf looks like: ONE;T:578000:C0M64:C:6900:1305+1205=2:1405=...@4:579:606:1005:182:10:0 TV2;T:578000:C0M64:C:6900:1306+1206=2:1406=...@4:580:606:1006:182:10:0 TV3;T:578000:C0M64:C:6900:1303=2:14...@4:712:606,5601:1003:182:10:0 Does the problem go away if, instead of the above change, you comment out the line (Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) && in cReceiver::AddPids()? Yes - that fixes the problem ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Re: [vdr] vdr-1.7.15 problem with live TV [1.7.11 or older OK] [PROGRESS :) ]
On 05.09.2010 21:59, Simon Baxter wrote: >> Looks like there are TS packets in your stream that are marked as >> "scrambled", but not unscrambled by the CAM. >> >> Do you have any CAM in your system at all? > > Yes. System has 2x TT-1501-C cards and Alphacrypt CAMS > >> Are the channels where this happens scrambled? > Yes > >> Do these channels have separate VPID and PPID? > channels.conf looks like: > ONE;T:578000:C0M64:C:6900:1305+1205=2:1405=...@4:579:606:1005:182:10:0 > TV2;T:578000:C0M64:C:6900:1306+1206=2:1406=...@4:580:606:1006:182:10:0 > TV3;T:578000:C0M64:C:6900:1303=2:14...@4:712:606,5601:1003:182:10:0 > > >> Does the problem go away if, instead of the above change, you >> comment out the line >> >> (Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) && >> >> in cReceiver::AddPids()? > > I can't find that in cReceiver::AddPids() > > Do you mean in "bool cReceiver::SetPids(const cChannel *Channel)": > bool cReceiver::SetPids(const cChannel *Channel) > { > numPids = 0; > if (Channel) { > channelID = Channel->GetChannelID(); > return AddPid(Channel->Vpid()) && > //(Channel->Ppid() == Channel->Vpid() || > AddPid(Channel->Ppid())) && Yes. Klaus ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Re: [vdr] vdr-1.7.15 problem with live TV [1.7.11 or older OK] [PROGRESS :) ]
Looks like there are TS packets in your stream that are marked as "scrambled", but not unscrambled by the CAM. Do you have any CAM in your system at all? Yes. System has 2x TT-1501-C cards and Alphacrypt CAMS Are the channels where this happens scrambled? Yes Do these channels have separate VPID and PPID? channels.conf looks like: ONE;T:578000:C0M64:C:6900:1305+1205=2:1405=...@4:579:606:1005:182:10:0 TV2;T:578000:C0M64:C:6900:1306+1206=2:1406=...@4:580:606:1006:182:10:0 TV3;T:578000:C0M64:C:6900:1303=2:14...@4:712:606,5601:1003:182:10:0 Does the problem go away if, instead of the above change, you comment out the line (Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) && in cReceiver::AddPids()? I can't find that in cReceiver::AddPids() Do you mean in "bool cReceiver::SetPids(const cChannel *Channel)": bool cReceiver::SetPids(const cChannel *Channel) { numPids = 0; if (Channel) { channelID = Channel->GetChannelID(); return AddPid(Channel->Vpid()) && //(Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) && ? ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Re: [vdr] vdr-1.7.15 problem with live TV [1.7.11 or older OK] [PROGRESS :) ]
On 09/03/10 22:12, Simon Baxter wrote: > ... > So I've managed to get vdr-1.7.15 working just fine now, by disabling > this scramble check in device.c. Bit of a dirty hack!!! > > > >> Here's what I changed in device.c >> >> void cDevice::Action(void) >> { >> if (Running() && OpenDvr()) { >> while (Running()) { >> // Read data from the DVR device: >> uchar *b = NULL; >> if (GetTSPacket(b)) { >> if (b) { >> int Pid = TsPid(b); >> // Check whether the TS packets are scrambled: >> bool DetachReceivers = false; >> bool DescramblingOk = false; >> int CamSlotNumber = 0; >> if (startScrambleDetection) { >> cCamSlot *cs = CamSlot(); >>CamSlotNumber = cs ? cs->SlotNumber() : 0; >> //if (CamSlotNumber) { >> // bool Scrambled = b[3] & TS_SCRAMBLING_CONTROL; >> // int t = time(NULL) - startScrambleDetection; >> // if (Scrambled) { >> // if (t > TS_SCRAMBLING_TIMEOUT) >> // DetachReceivers = true; >> // } >> // else if (t > TS_SCRAMBLING_TIME_OK) { >> // DescramblingOk = true; >> // startScrambleDetection = 0; >> // } >> // } >> } >> // Distribute the packet to all attached receivers: >> Lock(); Looks like there are TS packets in your stream that are marked as "scrambled", but not unscrambled by the CAM. Do you have any CAM in your system at all? Are the channels where this happens scrambled? Do these channels have separate VPID and PPID? Does the problem go away if, instead of the above change, you comment out the line (Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) && in cReceiver::AddPids()? Klaus ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Re: [vdr] vdr-1.7.15 problem with live TV [1.7.11 or older OK] [PROGRESS :) ]
// Check whether the TS packets are scrambled: Maybe some packets have the TS_SCRAMBLING_CONTROL bits set here. This could be caused by recording the PCR packets since version 1.7.12. To debug this, just disable this check, and/or put in some debug printouts. Thanks Klaus I've commented out the below section in device.c, and I now get continuous video, but some video skips and lots of: Sep 3 21:36:29 freddy vdr: [31301] cVideoRepacker: operating in MPEG1/2 mode Sep 3 21:36:29 freddy vdr: [31301] cVideoRepacker: switching to MPEG1/2 mode Sep 3 21:36:29 freddy vdr: [31301] cVideoRepacker: operating in MPEG1/2 mode This cVideoRepacker problem has also been fixed with the attached patch. So I've managed to get vdr-1.7.15 working just fine now, by disabling this scramble check in device.c. Bit of a dirty hack!!! Here's what I changed in device.c void cDevice::Action(void) { if (Running() && OpenDvr()) { while (Running()) { // Read data from the DVR device: uchar *b = NULL; if (GetTSPacket(b)) { if (b) { int Pid = TsPid(b); // Check whether the TS packets are scrambled: bool DetachReceivers = false; bool DescramblingOk = false; int CamSlotNumber = 0; if (startScrambleDetection) { cCamSlot *cs = CamSlot(); CamSlotNumber = cs ? cs->SlotNumber() : 0; //if (CamSlotNumber) { // bool Scrambled = b[3] & TS_SCRAMBLING_CONTROL; // int t = time(NULL) - startScrambleDetection; // if (Scrambled) { // if (t > TS_SCRAMBLING_TIMEOUT) // DetachReceivers = true; // } // else if (t > TS_SCRAMBLING_TIME_OK) { // DescramblingOk = true; // startScrambleDetection = 0; // } // } } // Distribute the packet to all attached receivers: Lock(); Any ideas? ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr vdr-xine-0.9.3-1.7.12.diff Description: Binary data ___ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr