From patchwork Fri Aug 31 19:29:56 2007 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reinhard Nissl X-Patchwork-Id: 12521 Received: from mail.gmx.net ([213.165.64.20]) by www.linuxtv.org with smtp (Exim 4.63) (envelope-from ) id 1IRCCK-0002co-A7 for vdr@linuxtv.org; Fri, 31 Aug 2007 21:30:28 +0200 Received: (qmail invoked by alias); 31 Aug 2007 19:29:58 -0000 Received: from p54932D37.dip0.t-ipconnect.de (EHLO [192.168.101.15]) [84.147.45.55] by mail.gmx.net (mp029) with SMTP; 31 Aug 2007 21:29:58 +0200 X-Authenticated: #527675 X-Provags-ID: V01U2FsdGVkX1/ekycuDVLeg5LJv0nqj4LROzLYI5mt5sfva1oHqV cpnN4lEx7jS1s0 Message-ID: <46D86C34.80506@gmx.de> Date: Fri, 31 Aug 2007 21:29:56 +0200 From: Reinhard Nissl User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20060911 SUSE/1.5.0.12-3.4 Thunderbird/1.5.0.12 Mnenhy/0.7.4.666 MIME-Version: 1.0 To: VDR Mailing List References: <46D4A316.8090409@gmx.de> <3e063bbf0708310232k647576advb447b8b69ab04ddc@mail.gmail.com> <46D85CE8.2050805@gmx.de> <1188585260.31994.12.camel@core> <46D86B37.3020701@gmx.de> In-Reply-To: <46D86B37.3020701@gmx.de> X-Y-GMX-Trusted: 0 Subject: Re: [vdr] [ANNOUNCE] H.264 updates for VDR-1.5.9 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: Fri, 31 Aug 2007 19:30:28 -0000 Status: O X-Status: X-Keywords: X-UID: 13990 Hi, Reinhard Nissl wrote: >>> But I don't understand why streamdev still delivers a decrypted video >>> stream in that case. Can it be that the client asks streamdev to filter >>> certain TS packets and therefore uses the correct VPID? >> Yes. In http streaming mode streamdev parses PIDs directly from PMT and >> does not use VDR channel data. But the VDR<->VDR streaming mode probably >> does not work if PIDs are not "real" ones. > > Please try the attached patch which adds VPID clipping to some locations. Please try this one. I better should have checked the previous one before posting -- it contained changes for DVB-S2 support. Bye. --- ../vdr-1.5.9-orig/ci.c 2007-04-30 15:02:49.000000000 +0200 +++ ci.c 2007-08-31 21:08:30.000000000 +0200 @@ -1880,7 +1880,7 @@ void cCamSlot::AddChannel(const cChannel source = Channel->Source(); transponder = Channel->Transponder(); if (Channel->Ca() >= CA_ENCRYPTED_MIN) { - AddPid(Channel->Sid(), Channel->Vpid(), STREAM_TYPE_VIDEO); + AddPid(Channel->Sid(), VPID_FROM_ANY(Channel->Vpid()), STREAM_TYPE_VIDEO); for (const int *Apid = Channel->Apids(); *Apid; Apid++) AddPid(Channel->Sid(), *Apid, STREAM_TYPE_AUDIO); for (const int *Dpid = Channel->Dpids(); *Dpid; Dpid++) @@ -1901,7 +1901,7 @@ bool cCamSlot::CanDecrypt(const cChannel if (cas && cas->RepliesToQuery()) { cCiCaPmt CaPmt(CPCI_QUERY, Channel->Source(), Channel->Transponder(), Channel->Sid(), GetCaSystemIds()); CaPmt.SetListManagement(CPLM_ADD); // WORKAROUND: CPLM_ONLY doesn't work with Alphacrypt 3.09 (deletes existing CA_PMTs) - CaPmt.AddPid(Channel->Vpid(), STREAM_TYPE_VIDEO); + CaPmt.AddPid(VPID_FROM_ANY(Channel->Vpid()), STREAM_TYPE_VIDEO); for (const int *Apid = Channel->Apids(); *Apid; Apid++) CaPmt.AddPid(*Apid, STREAM_TYPE_AUDIO); for (const int *Dpid = Channel->Dpids(); *Dpid; Dpid++) --- ../vdr-1.5.9-orig/dvbdevice.c 2007-08-17 15:37:56.000000000 +0200 +++ dvbdevice.c 2007-08-31 21:20:22.000000000 +0200 @@ -758,7 +806,7 @@ bool cDvbDevice::ProvidesChannel(const c result = hasPriority; if (Priority >= 0 && Receiving(true)) { if (dvbTuner->IsTunedTo(Channel)) { - if (Channel->Vpid() && !HasPid(Channel->Vpid()) || Channel->Apid(0) && !HasPid(Channel->Apid(0))) { + if (Channel->Vpid() && !HasPid(VPID_FROM_ANY(Channel->Vpid())) || Channel->Apid(0) && !HasPid(Channel->Apid(0))) { #ifdef DO_MULTIPLE_RECORDINGS if (CamSlot() && Channel->Ca() >= CA_ENCRYPTED_MIN) { if (CamSlot()->CanDecrypt(Channel)) @@ -794,7 +842,7 @@ bool cDvbDevice::IsTunedToTransponder(co bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) { int apid = Channel->Apid(0); - int vpid = Channel->Vpid(); + int vpid = VPID_FROM_ANY(Channel->Vpid()); int dpid = Channel->Dpid(0); bool DoTune = !dvbTuner->IsTunedTo(Channel); @@ -855,7 +903,7 @@ bool cDvbDevice::SetChannelDevice(const CHECK(ioctl(fd_audio, AUDIO_SET_AV_SYNC, true)); } else if (StartTransferMode) - cControl::Launch(new cTransferControl(this, Channel->GetChannelID(), vpid, Channel->Apids(), Channel->Dpids(), Channel->Spids())); + cControl::Launch(new cTransferControl(this, Channel->GetChannelID(), Channel->Vpid(), Channel->Apids(), Channel->Dpids(), Channel->Spids())); return true; }