mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
VDR developer version 2.1.5 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.5.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.4-2.1.5.diff MD5 checksums: ce561eef64c13e24e4817f70a6d9d5b0 vdr-2.1.5.tar.bz2 f433e78d90bc414bd9d858ca6e58e539 vdr-2.1.4-2.1.5.diff WARNING: ======== This is a *developer* version. Even though *I* use it in my productive environment, I strongly recommend that you only use it under controlled conditions and for testing and debugging. From the HISTORY file: - Now checking whether the primary device actually has a decoder before retuning the current channel after a change in its parameters. This fixes broken recordings on the primary device on "headless" systems. - Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 100 and introduced counting the number of actual video TS packets in cTsPayload in order to be able to record channels that sometimes need even more than 10 TS packets for detecting frame borders (reported by Oliver Endriss). - Fixed sorting recordings by time in the Recordings menu if "Setup/OSD/Recording directories" is set to "no". - Fixed clearing non-editable members in the channel editor (thanks to Rolf Ahrenberg). - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Further clarified the semantics of cCamSlot::Decrypt(). - Fixed flickering if subtitles are active while the OSD demo is running. - Fixed numbering frames. Previously they were numbered starting from 1, while it is apparently standard to number them from 0. Any existing recordings with editing marks (which will now be off by one) can still be cut with all VDR versions from 1.7.32, because these will automatically adjust editing marks to I-frames. Users of stable releases shouldn't notice any problems. - Fixed a possible crash in the OSD demo (reported by Christopher Reimer). - Fixed some compiler warnings with Clang 3.4.1 (reported by Paul Menzel). - Added LinkageTypePremiere to libsi/si.h and eit.c to avoid a compiler warning with Clang 3.4.1 (suggested by Tony Houghten). - Replaced the NULL pointer assignment in ~cReceiver() to force a segfault with a call to abort() (suggested by Tony Houghten). - Fixed learning keyboard remote control codes (thanks to Lars Hanisch). - Improved PAT/PMT scanning to speed up initial tuning to encrypted channels on transponders with many PAT entries (reported by Mariusz Bialonczyk). - Fixed the replay progress display for very long recordings. - Fixed detecting broken video data streams when recording. - Fixed handling frame detection buffer length (reported by Eike Sauer).
60 lines
2.3 KiB
C++
60 lines
2.3 KiB
C++
/*
|
|
* pat.h: PAT section filter
|
|
*
|
|
* See the main source file 'vdr.c' for copyright information and
|
|
* how to reach the author.
|
|
*
|
|
* $Id: pat.h 3.3 2014/02/18 11:22:34 kls Exp $
|
|
*/
|
|
|
|
#ifndef __PAT_H
|
|
#define __PAT_H
|
|
|
|
#include <stdint.h>
|
|
#include "filter.h"
|
|
#include "thread.h"
|
|
|
|
#define MAXPMTENTRIES 64
|
|
|
|
class cPatFilter : public cFilter {
|
|
private:
|
|
cMutex mutex;
|
|
cTimeMs timer;
|
|
int patVersion;
|
|
int pmtIndex;
|
|
int pmtId[MAXPMTENTRIES];
|
|
int pmtVersion[MAXPMTENTRIES];
|
|
int numPmtEntries;
|
|
int sid;
|
|
int GetPmtPid(int Index) { return pmtId[Index] & 0x0000FFFF; }
|
|
int MakePmtId(int PmtPid, int Sid) { return PmtPid | (Sid << 16); }
|
|
bool PmtVersionChanged(int PmtPid, int Sid, int Version, bool SetNewVersion = false);
|
|
void SwitchToNextPmtPid(void);
|
|
protected:
|
|
virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
|
|
public:
|
|
cPatFilter(void);
|
|
virtual void SetStatus(bool On);
|
|
void Trigger(int Sid = -1);
|
|
};
|
|
|
|
int GetCaDescriptors(int Source, int Transponder, int ServiceId, const int *CaSystemIds, int BufSize, uchar *Data, int EsPid);
|
|
///< 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). Only those CA descriptors
|
|
///< are copied that match one of the given CA system IDs (or all of them, if CaSystemIds
|
|
///< is 0xFFFF).
|
|
///< 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.
|
|
|
|
int GetCaPids(int Source, int Transponder, int ServiceId, const int *CaSystemIds, int BufSize, int *Pids);
|
|
///< Gets all CA pids for a given channel.
|
|
///< Copies all available CA pids from the CA descriptors for the given Source, Transponder and ServiceId
|
|
///< into the provided buffer at Pids (at most BufSize - 1 entries, the list will be zero-terminated).
|
|
///< Only the CA pids of those CA descriptors are copied that match one of the given CA system IDs
|
|
///< (or all of them, if CaSystemIds is 0xFFFF).
|
|
///< Returns the number of pids copied into Pids (0 if no CA descriptors are
|
|
///< available), or -1 if BufSize was too small to hold all CA pids.
|
|
|
|
#endif //__PAT_H
|