Version 1.1.28

- Using masks in EIT filtering to reduce the number of filters (thanks to Andreas
  Schultz).
- Fixed handling Ca descriptors (thanks to Stefan Huelswitt).
- Now only those Ca descriptors are sent to a CAM that are actually understood
  by that CAM.
- Re-enabled CAM communication during replay and on non-Ca channels. This requires
  a DVB driver with firmware version 2613 or later.
- It is now possible to do simultaneous recording and replay with a single DVB
  card, even with encrypted channels. This requires the use of the Link Layer
  firmware, version 2613 or higher; the -icam firmware is still limited to live
  encrypted channels only. Finally we have time shift for encrypted channels on
  single card systems!
- Enhanced detection of pending user I/O from CAMs to avoid sluggish reaction
  to remote control keypresses.
- Implemented "pause live video". You can now press "Menu/Yellow" or "Pause" on
  your remote control while watching live video to start an instant recording
  of the current programme and immediately start replaying that recording.
This commit is contained in:
Klaus Schmidinger
2003-04-21 18:00:00 +02:00
parent 9f91980146
commit 21a52ccb6d
15 changed files with 240 additions and 138 deletions

14
eit.h
View File

@@ -16,7 +16,7 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* $Id: eit.h 1.25 2003/04/12 10:59:26 kls Exp $
* $Id: eit.h 1.28 2003/04/21 13:22:06 kls Exp $
***************************************************************************/
#ifndef __EIT_H
@@ -135,14 +135,13 @@ typedef struct sip_filter {
}SIP_FILTER;
class cCaDescriptor;
class cCaDescriptors;
class cSIProcessor : public cThread {
private:
static int numSIProcessors;
static cSchedules *schedules;
static cMutex schedulesMutex;
static cCaDescriptors *caDescriptors;
static cList<cCaDescriptor> caDescriptors;
static cMutex caDescriptorsMutex;
static const char *epgDataFileName;
static time_t lastDump;
@@ -155,10 +154,10 @@ private:
char *fileName;
bool active;
void Action(void);
bool AddFilter(unsigned short pid, u_char tid);
bool AddFilter(unsigned short pid, u_char tid, u_char mask = 0xFF);
bool DelFilter(unsigned short pid, u_char tid);
bool ShutDownFilters(void);
void NewCaDescriptor(struct Descriptor *d, int ProgramID);
void NewCaDescriptor(struct Descriptor *d, int ServiceId);
public:
cSIProcessor(const char *FileName);
~cSIProcessor();
@@ -168,10 +167,11 @@ public:
// Caller must provide a cMutexLock which has to survive the entire
// time the returned cSchedules is accessed. Once the cSchedules is no
// longer used, the cMutexLock must be destroyed.
static int GetCaDescriptors(int Source, int Transponder, int ServiceId, int BufSize, uchar *Data);
static int GetCaDescriptors(int Source, int Transponder, int ServiceId, const unsigned short *CaSystemIds, int BufSize, uchar *Data);
///< Gets all CA descriptors for a given channel.
///< Copies all available CA descriptors for the given Source, Transponder and ServiceId
///< into the provided buffer at Data (at most BufSize bytes).
///< into the provided buffer at Data (at most BufSize bytes). Only those CA descriptors
///< are copied that match one of the given CA system IDs.
///< \return Returns the number of bytes copied into Data (0 if no CA descriptors are
///< available), or -1 if BufSize was too small to hold all CA descriptors.
static bool Read(FILE *f = NULL);