diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c7bb07a5..4bd4059b 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3243,10 +3243,6 @@ Thomas Reufer for suggesting to add a note to ePlayMode in device.h that VDR itself always uses pmAudioVideo when replaying a recording -Mariusz Bialonczyk - for fixing sending CA descriptors to CAMs in case a cReceiver is not used for a - recording or live view, like e.g. streaming clients - Eike Sauer for reporting a problem with channels that need more than 5 TS packets for detecting frame borders diff --git a/HISTORY b/HISTORY index d992eb54..3843d3a9 100644 --- a/HISTORY +++ b/HISTORY @@ -8140,8 +8140,6 @@ Video Disk Recorder Revision History - Improved locking for CAM slots and made the pure functions of cCiAdapter have default implementations, to fix a possible crash with CI adapters and CAM slots that are implemented in a plugin. -- Fixed sending CA descriptors to CAMs in case a cReceiver is not used for a - recording or live view, like e.g. streaming clients (thanks to Mariusz Bialonczyk). - Added logging the supported system ids of a CAM. - Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 10 in order to be able to record channels that need more than 5 TS packets for detecting frame borders (reported by diff --git a/ci.c b/ci.c index 7b4aad46..370f9051 100644 --- a/ci.c +++ b/ci.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: ci.c 3.9 2014/01/22 09:39:06 kls Exp $ + * $Id: ci.c 3.10 2014/01/24 11:53:53 kls Exp $ */ #include "ci.h" @@ -592,7 +592,6 @@ private: int transponder; int programNumber; int caSystemIds[MAXCASYSTEMIDS + 1]; // list is zero terminated! - bool gotCaDescriptors; void AddCaDescriptors(int Length, const uint8_t *Data); public: cCiCaPmt(uint8_t CmdId, int Source, int Transponder, int ProgramNumber, const int *CaSystemIds); @@ -600,12 +599,10 @@ public: void SetListManagement(uint8_t ListManagement); uint8_t ListManagement(void) { return capmt[0]; } void AddPid(int Pid, uint8_t StreamType); - bool GotCaDescriptors(void) { return gotCaDescriptors; } }; cCiCaPmt::cCiCaPmt(uint8_t CmdId, int Source, int Transponder, int ProgramNumber, const int *CaSystemIds) { - gotCaDescriptors = false; cmdId = CmdId; source = Source; transponder = Transponder; @@ -661,7 +658,6 @@ void cCiCaPmt::AddCaDescriptors(int Length, const uint8_t *Data) int l = length - esInfoLengthPos - 2; capmt[esInfoLengthPos] = (l >> 8) & 0xFF; capmt[esInfoLengthPos + 1] = l & 0xFF; - gotCaDescriptors = true; } } else @@ -1810,7 +1806,6 @@ cCiEnquiry *cCamSlot::GetEnquiry(void) void cCamSlot::SendCaPmt(uint8_t CmdId) { cMutexLock MutexLock(&mutex); - bool needResend = false; cCiConditionalAccessSupport *cas = (cCiConditionalAccessSupport *)GetSessionByResourceId(RI_CONDITIONAL_ACCESS_SUPPORT); if (cas) { const int *CaSystemIds = cas->GetCaSystemIds(); @@ -1843,12 +1838,8 @@ void cCamSlot::SendCaPmt(uint8_t CmdId) } if (cas->RepliesToQuery()) CaPmt.SetListManagement(Active ? CPLM_ADD : CPLM_UPDATE); - if (Active || cas->RepliesToQuery()) { - if ((CaPmt.ListManagement() == CPLM_ADD || CaPmt.ListManagement() == CPLM_ONLY) && !CaPmt.GotCaDescriptors()) - needResend = true; - else - cas->SendPMT(&CaPmt); - } + if (Active || cas->RepliesToQuery()) + cas->SendPMT(&CaPmt); p->modified = false; } } @@ -1858,7 +1849,7 @@ void cCamSlot::SendCaPmt(uint8_t CmdId) if (cDevice *d = Device()) d->AttachReceiver(caPidReceiver); } - resendPmt = needResend; + resendPmt = false; } else { cCiCaPmt CaPmt(CmdId, 0, 0, 0, NULL);