MythTV  master
mpegstreamdata.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // Copyright (c) 2003-2004, Daniel Thor Kristjansson
3 #ifndef MPEGSTREAMDATA_H_
4 #define MPEGSTREAMDATA_H_
5 
6 // C++
7 #include <cstdint> // uint64_t
8 #include <vector>
9 using namespace std;
10 
11 // Qt
12 #include <QMap>
13 
14 #include "tspacket.h"
15 #include "mythtimer.h"
16 #include "streamlisteners.h"
17 #include "eitscanner.h"
18 #include "mythtvexp.h"
19 #include "tablestatus.h"
20 
21 class EITHelper;
22 class PSIPTable;
23 
24 using uint_vec_t = vector<uint>;
25 
26 using pid_psip_map_t = QMap<unsigned int, PSIPTable*>;
27 using psip_refcnt_map_t = QMap<const PSIPTable*, int>;
28 
31 using pat_vec_t = vector<const ProgramAssociationTable *>;
32 using pat_map_t = QMap<uint, pat_vec_t>;
33 using pat_cache_t = QMap<uint, ProgramAssociationTable*>;
34 
37 using cat_vec_t = vector<const ConditionalAccessTable *>;
38 using cat_map_t = QMap<uint, cat_vec_t>;
39 using cat_cache_t = QMap<uint, ConditionalAccessTable*>;
40 
43 using pmt_vec_t = vector<const ProgramMapTable*>;
44 using pmt_map_t = QMap<uint, pmt_vec_t>;
45 using pmt_cache_t = QMap<uint, ProgramMapTable*>;
46 
47 using uchar_vec_t = vector<unsigned char>;
48 
49 using mpeg_listener_vec_t = vector<MPEGStreamListener*>;
50 using ts_listener_vec_t = vector<TSPacketListener*>;
51 using ts_av_listener_vec_t = vector<TSPacketListenerAV*>;
52 using mpeg_sp_listener_vec_t = vector<MPEGSingleProgramStreamListener*>;
53 using ps_listener_vec_t = vector<PSStreamListener*>;
54 
56 {
60 };
61 
63 {
64  public:
65  CryptInfo() = default;
66  CryptInfo(uint e, uint d) : m_encryptedMin(e), m_decryptedMin(d) { }
67 
68  public:
70  uint m_encryptedPackets {0};
71  uint m_decryptedPackets {0};
72  uint m_encryptedMin {1000};
73  uint m_decryptedMin {8};
74 };
75 
77 {
82 };
83 using pid_map_t = QMap<uint, PIDPriority>;
84 
86 {
87  public:
88  MPEGStreamData(int desiredProgram, int cardnum, bool cacheTables);
89  ~MPEGStreamData() override;
90 
91  void SetCaching(bool cacheTables) { m_cacheTables = cacheTables; }
92  void SetListeningDisabled(bool lt) { m_listeningDisabled = lt; }
93 
94  virtual void Reset(void) { Reset(-1); }
95  virtual void Reset(int desiredProgram);
96 
98  double TimeOffset(void) const;
99 
100  // EIT Source
101  void SetEITHelper(EITHelper *eit_helper) override; // EITSource
102  void SetEITRate(float rate) override; // EITSource
103  virtual bool HasEITPIDChanges(const uint_vec_t& /*in_use_pids*/) const
104  { return false; }
105  virtual bool GetEITPIDChanges(const uint_vec_t& /*in_use_pids*/,
106  uint_vec_t& /*add_pids*/,
107  uint_vec_t& /*del_pids*/) const
108  { return false; }
109 
110  // Table processing
111  void SetIgnoreCRC(bool haveCRCbug) { m_haveCrcBug = haveCRCbug; }
112  virtual bool IsRedundant(uint pid, const PSIPTable &psip) const;
113  virtual bool HandleTables(uint pid, const PSIPTable &psip);
114  virtual void HandleTSTables(const TSPacket* tspacket);
115  virtual bool ProcessTSPacket(const TSPacket& tspacket);
116  virtual int ProcessData(const unsigned char *buffer, int len);
117  inline void HandleAdaptationFieldControl(const TSPacket* tspacket);
118 
119  // Listening
120  virtual void AddListeningPID(
121  uint pid, PIDPriority priority = kPIDPriorityNormal)
122  { m_pidsListening[pid] = priority; }
123  virtual void AddNotListeningPID(uint pid)
124  { m_pidsNotListening[pid] = kPIDPriorityNormal; }
125  virtual void AddWritingPID(
126  uint pid, PIDPriority priority = kPIDPriorityHigh)
127  { m_pidsWriting[pid] = priority; }
128  virtual void AddAudioPID(
129  uint pid, PIDPriority priority = kPIDPriorityHigh)
130  { m_pidsAudio[pid] = priority; }
131 
132  virtual void RemoveListeningPID(uint pid) { m_pidsListening.remove(pid); }
133  virtual void RemoveNotListeningPID(uint pid)
134  { m_pidsNotListening.remove(pid); }
135  virtual void RemoveWritingPID(uint pid) { m_pidsWriting.remove(pid); }
136  virtual void RemoveAudioPID(uint pid) { m_pidsAudio.remove(pid); }
137 
138  virtual bool IsListeningPID(uint pid) const;
139  virtual bool IsNotListeningPID(uint pid) const;
140  virtual bool IsWritingPID(uint pid) const;
141  bool IsVideoPID(uint pid) const
142  { return m_pidVideoSingleProgram == pid; }
143  virtual bool IsAudioPID(uint pid) const;
144 
145  const pid_map_t& ListeningPIDs(void) const
146  { return m_pidsListening; }
147  const pid_map_t& AudioPIDs(void) const
148  { return m_pidsAudio; }
149  const pid_map_t& WritingPIDs(void) const
150  { return m_pidsWriting; }
151 
152  uint GetPIDs(pid_map_t &pids) const;
153 
154  // PID Priorities
155  PIDPriority GetPIDPriority(uint pid) const;
156 
157  // Table versions
158  void SetVersionPAT(uint tsid, int version, uint last_section)
159  {
160  m_patStatus.SetVersion(tsid, version, last_section);
161  }
162  void SetVersionPMT(uint pnum, int version, uint last_section)
163  {
164  m_pmtStatus.SetVersion(pnum, version, last_section);
165  }
166 
167  // Sections seen
168  bool HasAllPATSections(uint tsid) const;
169 
170  bool HasAllCATSections(uint tsid) const;
171 
172  bool HasAllPMTSections(uint prog_num) const;
173 
174  // Caching
175  bool HasProgram(uint progNum) const;
176 
177  bool HasCachedAllPAT(uint tsid) const;
178  bool HasCachedAnyPAT(uint tsid) const;
179  bool HasCachedAnyPAT(void) const;
180 
181  bool HasCachedAllCAT(uint tsid) const;
182  bool HasCachedAnyCAT(uint tsid) const;
183  bool HasCachedAnyCAT(void) const;
184 
185  bool HasCachedAllPMT(uint pnum) const;
186  bool HasCachedAnyPMT(uint pnum) const;
187  bool HasCachedAllPMTs(void) const;
188  bool HasCachedAnyPMTs(void) const;
189 
190  pat_const_ptr_t GetCachedPAT(uint tsid, uint section_num) const;
191  pat_vec_t GetCachedPATs(uint tsid) const;
192  pat_vec_t GetCachedPATs(void) const;
194 
195  cat_const_ptr_t GetCachedCAT(uint tsid, uint section_num) const;
196  cat_vec_t GetCachedCATs(uint tsid) const;
197  cat_vec_t GetCachedCATs(void) const;
199 
200  pmt_const_ptr_t GetCachedPMT(uint program_num, uint section_num) const;
201  pmt_vec_t GetCachedPMTs(void) const;
202  pmt_map_t GetCachedPMTMap(void) const;
203 
204  virtual void ReturnCachedTable(const PSIPTable *psip) const;
205  virtual void ReturnCachedPATTables(pat_vec_t &pats) const;
206  virtual void ReturnCachedPATTables(pat_map_t &pats) const;
207  virtual void ReturnCachedCATTables(cat_vec_t &cats) const;
208  virtual void ReturnCachedCATTables(cat_map_t &cats) const;
209  virtual void ReturnCachedPMTTables(pmt_vec_t &pmts) const;
210  virtual void ReturnCachedPMTTables(pmt_map_t &pmts) const;
211 
212  // Encryption Monitoring
213  void AddEncryptionTestPID(uint pnum, uint pid, bool isvideo);
214  void RemoveEncryptionTestPIDs(uint pnum);
215  bool IsEncryptionTestPID(uint pid) const;
216 
217  void TestDecryption(const ProgramMapTable* pmt);
218  void ResetDecryptionMonitoringState(void);
219 
220  bool IsProgramDecrypted(uint pnum) const;
221  bool IsProgramEncrypted(uint pnum) const;
222 
223  // "signals"
224  void AddMPEGListener(MPEGStreamListener *val);
225  void RemoveMPEGListener(MPEGStreamListener *val);
226 
227  void AddWritingListener(TSPacketListener *val);
228  void RemoveWritingListener(TSPacketListener *val);
229 
230  // Single Program Stuff, signals with processed tables
231  void AddMPEGSPListener(MPEGSingleProgramStreamListener *val);
232  void RemoveMPEGSPListener(MPEGSingleProgramStreamListener *val);
233  void AddAVListener(TSPacketListenerAV *val);
234  void RemoveAVListener(TSPacketListenerAV *val);
235 
236  // Program Stream Stuff
237  void AddPSStreamListener(PSStreamListener *val);
238  void RemovePSStreamListener(PSStreamListener *val);
239 
240  public:
241  // Single program stuff, sets
242  void SetDesiredProgram(int p);
243  inline void SetPATSingleProgram(ProgramAssociationTable *pat);
244  inline void SetPMTSingleProgram(ProgramMapTable *pmt);
246  { m_pmtSingleProgramNumVideo = num; }
248  { return m_pmtSingleProgramNumVideo; }
250  { m_pmtSingleProgramNumAudio = num; }
252  { return m_pmtSingleProgramNumAudio; }
253  void SetRecordingType(const QString &recording_type);
254 
255  // Single program stuff, gets
256  int DesiredProgram(void) const { return m_desiredProgram; }
257  uint VideoPIDSingleProgram(void) const { return m_pidVideoSingleProgram; }
258  QString GetRecordingType(void) const { return m_recordingType; }
259 
261  { return m_patSingleProgram; }
263  { return m_pmtSingleProgram; }
264 
266  { return m_patSingleProgram; }
268  { return m_pmtSingleProgram; }
269 
270  // Single program stuff, mostly used internally
271  int VersionPATSingleProgram(void) const;
272  int VersionPMTSingleProgram(void) const;
273 
274  bool CreatePATSingleProgram(const ProgramAssociationTable &pat);
275  bool CreatePMTSingleProgram(const ProgramMapTable &pmt);
276 
277  protected:
278  // Table processing -- for internal use
279  PSIPTable* AssemblePSIP(const TSPacket* tspacket, bool& moreTablePackets);
280  bool AssemblePSIP(PSIPTable& psip, TSPacket* tspacket);
281  void SavePartialPSIP(uint pid, PSIPTable* packet);
283  { return m_partialPsipPacketCache[pid]; }
285  { m_partialPsipPacketCache.remove(pid); }
286  void DeletePartialPSIP(uint pid);
287  void ProcessPAT(const ProgramAssociationTable *pat);
288  void ProcessCAT(const ConditionalAccessTable *cat);
289  void ProcessPMT(const ProgramMapTable *pmt);
290  void ProcessEncryptedPacket(const TSPacket &tspacket);
291 
292  static int ResyncStream(const unsigned char *buffer, int curr_pos, int len);
293 
294  void UpdateTimeOffset(uint64_t si_utc_time);
295 
296  // Caching
297  void IncrementRefCnt(const PSIPTable *psip) const;
298  virtual bool DeleteCachedTable(const PSIPTable *psip) const;
299  void CachePAT(const ProgramAssociationTable *pat);
300  void CacheCAT(const ConditionalAccessTable *_cat);
301  void CachePMT(const ProgramMapTable *pmt);
302 
303  protected:
304  int m_cardId;
305  QString m_siStandard {"mpeg"};
306 
307  bool m_haveCrcBug {false};
308 
309  mutable QMutex m_siTimeLock;
310  uint m_siTimeOffsetCnt {0};
311  uint m_siTimeOffsetIndx {0};
312  std::array<double,16> m_siTimeOffsets {0.0};
313 
314  // Generic EIT stuff used for ATSC and DVB
315  EITHelper *m_eitHelper {nullptr};
316  float m_eitRate {0.0F};
317 
318  // Listening
323  bool m_listeningDisabled {false};
324 
325  // Encryption monitoring
326  mutable QMutex m_encryptionLock {QMutex::Recursive};
327  QMap<uint, CryptInfo> m_encryptionPidToInfo;
328  QMap<uint, uint_vec_t> m_encryptionPnumToPids;
329  QMap<uint, uint_vec_t> m_encryptionPidToPnums;
330  QMap<uint, CryptStatus> m_encryptionPnumToStatus;
331 
332  // Signals
333  mutable QMutex m_listenerLock {QMutex::Recursive};
339 
340  // Table versions
344 
345  // PSIP construction
347 
348  // Caching
350  mutable QMutex m_cacheLock {QMutex::Recursive};
356 
357  // Single program variables
359  QString m_recordingType {"all"};
360  bool m_stripPmtDescriptors {false};
361  bool m_normalizeStreamType {true};
362  uint m_pidVideoSingleProgram {0xffffffff};
363  uint m_pidPmtSingleProgram {0xffffffff};
364  uint m_pmtSingleProgramNumVideo {1};
365  uint m_pmtSingleProgramNumAudio {0};
366  ProgramAssociationTable *m_patSingleProgram {nullptr};
367  ProgramMapTable *m_pmtSingleProgram {nullptr};
368 
369  // PAT Timeout handling.
370  private:
371  bool m_invalidPatSeen {false};
372  bool m_invalidPatWarning {false};
374 };
375 
376 #include "mpegtables.h"
377 
379 {
380  delete m_patSingleProgram;
381  m_patSingleProgram = pat;
382 }
383 
385 {
386  delete m_pmtSingleProgram;
387  m_pmtSingleProgram = pmt;
388 }
389 
391 {
392  return (m_patSingleProgram) ? int(m_patSingleProgram->Version()) : -1;
393 }
394 
396 {
397  return (m_pmtSingleProgram) ? int(m_pmtSingleProgram->Version()) : -1;
398 }
399 
401 {
402  // TODO
403  //AdaptationFieldControl afc(tspacket.data()+4);
404 }
405 
406 #endif
MPEGStreamData::m_cachedRefCnt
psip_refcnt_map_t m_cachedRefCnt
Definition: mpegstreamdata.h:354
MPEGStreamData::PMTSingleProgram
ProgramMapTable * PMTSingleProgram(void)
Definition: mpegstreamdata.h:267
pat_vec_t
vector< const ProgramAssociationTable * > pat_vec_t
Definition: mpegstreamdata.h:31
MPEGStreamData::m_siTimeLock
QMutex m_siTimeLock
Definition: mpegstreamdata.h:309
pmt_vec_t
vector< const ProgramMapTable * > pmt_vec_t
Definition: channelscan_sm.h:63
MPEGStreamData::m_partialPsipPacketCache
pid_psip_map_t m_partialPsipPacketCache
Definition: mpegstreamdata.h:346
e
QDomElement e
Definition: mythplugins/mytharchive/mytharchivehelper/main.cpp:1417
kEncUnknown
@ kEncUnknown
Definition: mpegstreamdata.h:57
PSStreamListener
Definition: streamlisteners.h:104
kEncEncrypted
@ kEncEncrypted
Definition: mpegstreamdata.h:59
MPEGStreamData::m_pidsListening
pid_map_t m_pidsListening
Definition: mpegstreamdata.h:319
MPEGStreamData::SetVideoStreamsRequired
void SetVideoStreamsRequired(uint num)
Definition: mpegstreamdata.h:245
MPEGStreamData::ClearPartialPSIP
void ClearPartialPSIP(uint pid)
Definition: mpegstreamdata.h:284
MPEGStreamData::m_pidsWriting
pid_map_t m_pidsWriting
Definition: mpegstreamdata.h:321
MPEGStreamData::m_invalidPatTimer
MythTimer m_invalidPatTimer
Definition: mpegstreamdata.h:373
mpeg_sp_listener_vec_t
vector< MPEGSingleProgramStreamListener * > mpeg_sp_listener_vec_t
Definition: mpegstreamdata.h:52
MythTimer
A QElapsedTimer based timer to replace use of QTime as a timer.
Definition: mythtimer.h:14
MPEGStreamData::SetCaching
void SetCaching(bool cacheTables)
Definition: mpegstreamdata.h:91
pmt_cache_t
QMap< uint, ProgramMapTable * > pmt_cache_t
Definition: mpegstreamdata.h:45
ps_listener_vec_t
vector< PSStreamListener * > ps_listener_vec_t
Definition: mpegstreamdata.h:53
eitscanner.h
MPEGStreamData::VideoPIDSingleProgram
uint VideoPIDSingleProgram(void) const
Definition: mpegstreamdata.h:257
MPEGStreamData::m_encryptionPidToInfo
QMap< uint, CryptInfo > m_encryptionPidToInfo
Definition: mpegstreamdata.h:327
pid_psip_map_t
QMap< unsigned int, PSIPTable * > pid_psip_map_t
Definition: mpegstreamdata.h:26
pat_map_t
QMap< uint, pat_vec_t > pat_map_t
Definition: mpegstreamdata.h:32
mythtvexp.h
d
static const uint16_t * d
Definition: iso6937tables.cpp:1025
hardwareprofile.devicelist.cat
def cat(file_name)
Definition: devicelist.py:95
MPEGStreamData::AddNotListeningPID
virtual void AddNotListeningPID(uint pid)
Definition: mpegstreamdata.h:123
ProgramMapTable
A PMT table maps a program described in the ProgramAssociationTable to various PID's which describe t...
Definition: mpegtables.h:667
MPEGStreamData::GetCachedCATMap
cat_map_t GetCachedCATMap(void) const
MPEGStreamData::IsVideoPID
bool IsVideoPID(uint pid) const
Definition: mpegstreamdata.h:141
MPEGStreamData::GetVideoStreamsRequired
uint GetVideoStreamsRequired() const
Definition: mpegstreamdata.h:247
uchar_vec_t
vector< unsigned char > uchar_vec_t
Definition: mpegstreamdata.h:47
TSPacketListener
Definition: streamlisteners.h:63
MPEGSingleProgramStreamListener
Definition: streamlisteners.h:94
streamlisteners.h
kPIDPriorityNone
@ kPIDPriorityNone
Definition: mpegstreamdata.h:78
MPEGStreamData::RemoveNotListeningPID
virtual void RemoveNotListeningPID(uint pid)
Definition: mpegstreamdata.h:133
MPEGStreamData::SetPMTSingleProgram
void SetPMTSingleProgram(ProgramMapTable *pmt)
Definition: mpegstreamdata.h:384
CryptInfo::CryptInfo
CryptInfo(uint e, uint d)
Definition: mpegstreamdata.h:66
cat_vec_t
vector< const ConditionalAccessTable * > cat_vec_t
Definition: mpegstreamdata.h:37
MPEGStreamData::PMTSingleProgram
const ProgramMapTable * PMTSingleProgram(void) const
Definition: mpegstreamdata.h:262
PSIPTable
A PSIP table is a variant of a PES packet containing an MPEG, ATSC or DVB table.
Definition: mpegtables.h:387
MPEGStreamData::VersionPATSingleProgram
int VersionPATSingleProgram(void) const
Definition: mpegstreamdata.h:390
kPIDPriorityNormal
@ kPIDPriorityNormal
Definition: mpegstreamdata.h:80
MPEGStreamData::SetIgnoreCRC
void SetIgnoreCRC(bool haveCRCbug)
Definition: mpegstreamdata.h:111
cat_cache_t
QMap< uint, ConditionalAccessTable * > cat_cache_t
Definition: mpegstreamdata.h:39
MPEGStreamData::PATSingleProgram
const ProgramAssociationTable * PATSingleProgram(void) const
Definition: mpegstreamdata.h:260
CryptInfo
Definition: mpegstreamdata.h:63
MPEGStreamData::m_tsAvListeners
ts_av_listener_vec_t m_tsAvListeners
Definition: mpegstreamdata.h:337
MPEGStreamData::m_pidsNotListening
pid_map_t m_pidsNotListening
Definition: mpegstreamdata.h:320
psip_refcnt_map_t
QMap< const PSIPTable *, int > psip_refcnt_map_t
Definition: mpegstreamdata.h:27
MPEGStreamData::m_desiredProgram
int m_desiredProgram
Definition: mpegstreamdata.h:358
hardwareprofile.config.p
p
Definition: config.py:33
MPEGStreamListener
Definition: streamlisteners.h:82
MPEGStreamData::m_cachedCats
cat_cache_t m_cachedCats
Definition: mpegstreamdata.h:352
TSPacketListenerAV
Definition: streamlisteners.h:72
MPEGStreamData::GetCachedPATMap
pat_map_t GetCachedPATMap(void) const
MPEGStreamData::SetVersionPAT
void SetVersionPAT(uint tsid, int version, uint last_section)
Definition: mpegstreamdata.h:158
TSPacket
Used to access the data of a Transport Stream packet.
Definition: tspacket.h:167
pmt_const_ptr_t
ProgramMapTable const * pmt_const_ptr_t
Definition: mpegstreamdata.h:42
kPIDPriorityLow
@ kPIDPriorityLow
Definition: mpegstreamdata.h:79
MPEGStreamData::m_pidsAudio
pid_map_t m_pidsAudio
Definition: mpegstreamdata.h:322
MPEGStreamData::m_cardId
int m_cardId
Definition: mpegstreamdata.h:304
MPEGStreamData
Encapsulates data about MPEG stream and emits events for each table.
Definition: mpegstreamdata.h:86
CryptStatus
CryptStatus
Definition: mpegstreamdata.h:56
TableStatusMap
Definition: tablestatus.h:37
MPEGStreamData::VersionPMTSingleProgram
int VersionPMTSingleProgram(void) const
Definition: mpegstreamdata.h:395
tspacket.h
mpegtables.h
tablestatus.h
MPEGStreamData::AssemblePSIP
bool AssemblePSIP(PSIPTable &psip, TSPacket *tspacket)
MPEGStreamData::m_mpegListeners
mpeg_listener_vec_t m_mpegListeners
Definition: mpegstreamdata.h:334
MPEGStreamData::m_catStatus
TableStatusMap m_catStatus
Definition: mpegstreamdata.h:342
MPEGStreamData::SetAudioStreamsRequired
void SetAudioStreamsRequired(uint num)
Definition: mpegstreamdata.h:249
MPEGStreamData::WritingPIDs
const pid_map_t & WritingPIDs(void) const
Definition: mpegstreamdata.h:149
MPEGStreamData::m_pmtStatus
TableStatusMap m_pmtStatus
Definition: mpegstreamdata.h:343
uint
unsigned int uint
Definition: compat.h:140
EITHelper
Definition: eithelper.h:93
kEncDecrypted
@ kEncDecrypted
Definition: mpegstreamdata.h:58
ProgramAssociationTable
The Program Association Table lists all the programs in a stream, and is always found on PID 0.
Definition: mpegtables.h:590
MPEGStreamData::m_encryptionPnumToStatus
QMap< uint, CryptStatus > m_encryptionPnumToStatus
Definition: mpegstreamdata.h:330
pid_map_t
QMap< uint, PIDPriority > pid_map_t
Definition: mpegstreamdata.h:83
kPIDPriorityHigh
@ kPIDPriorityHigh
Definition: mpegstreamdata.h:81
MPEGStreamData::RemoveAudioPID
virtual void RemoveAudioPID(uint pid)
Definition: mpegstreamdata.h:136
TimeOffset
Definition: channelsettings.cpp:175
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
MPEGStreamData::GetAudioStreamsRequired
uint GetAudioStreamsRequired() const
Definition: mpegstreamdata.h:251
MPEGStreamData::AddWritingPID
virtual void AddWritingPID(uint pid, PIDPriority priority=kPIDPriorityHigh)
Definition: mpegstreamdata.h:125
cat_map_t
QMap< uint, cat_vec_t > cat_map_t
Definition: mpegstreamdata.h:38
MPEGStreamData::DesiredProgram
int DesiredProgram(void) const
Definition: mpegstreamdata.h:256
pat_cache_t
QMap< uint, ProgramAssociationTable * > pat_cache_t
Definition: mpegstreamdata.h:33
pmt_map_t
QMap< uint, pmt_vec_t > pmt_map_t
Definition: channelscan_sm.h:64
MPEGStreamData::m_mpegSpListeners
mpeg_sp_listener_vec_t m_mpegSpListeners
Definition: mpegstreamdata.h:335
ts_av_listener_vec_t
vector< TSPacketListenerAV * > ts_av_listener_vec_t
Definition: mpegstreamdata.h:51
MPEGStreamData::SetPATSingleProgram
void SetPATSingleProgram(ProgramAssociationTable *pat)
Definition: mpegstreamdata.h:378
ConditionalAccessTable
The CAT is used to transmit additional ConditionalAccessDescriptor instances, in addition to the ones...
Definition: mpegtables.h:830
MPEGStreamData::ListeningPIDs
const pid_map_t & ListeningPIDs(void) const
Definition: mpegstreamdata.h:145
uint_vec_t
vector< uint > uint_vec_t
Definition: mpegstreamdata.h:24
MPEGStreamData::m_cachedSlatedForDeletion
psip_refcnt_map_t m_cachedSlatedForDeletion
Definition: mpegstreamdata.h:355
MPEGStreamData::AddAudioPID
virtual void AddAudioPID(uint pid, PIDPriority priority=kPIDPriorityHigh)
Definition: mpegstreamdata.h:128
MPEGStreamData::HandleAdaptationFieldControl
void HandleAdaptationFieldControl(const TSPacket *tspacket)
Definition: mpegstreamdata.h:400
MPEGStreamData::m_psListeners
ps_listener_vec_t m_psListeners
Definition: mpegstreamdata.h:338
mythtimer.h
MPEGStreamData::GetEITPIDChanges
virtual bool GetEITPIDChanges(const uint_vec_t &, uint_vec_t &, uint_vec_t &) const
Definition: mpegstreamdata.h:105
MPEGStreamData::m_cacheTables
bool m_cacheTables
Definition: mpegstreamdata.h:349
MPEGStreamData::m_tsWritingListeners
ts_listener_vec_t m_tsWritingListeners
Definition: mpegstreamdata.h:336
MPEGStreamData::GetRecordingType
QString GetRecordingType(void) const
Definition: mpegstreamdata.h:258
MPEGStreamData::AddListeningPID
virtual void AddListeningPID(uint pid, PIDPriority priority=kPIDPriorityNormal)
Definition: mpegstreamdata.h:120
MPEGStreamData::AudioPIDs
const pid_map_t & AudioPIDs(void) const
Definition: mpegstreamdata.h:147
MPEGStreamData::SetVersionPMT
void SetVersionPMT(uint pnum, int version, uint last_section)
Definition: mpegstreamdata.h:162
MPEGStreamData::m_patStatus
TableStatusMap m_patStatus
Definition: mpegstreamdata.h:341
MPEGStreamData::m_cachedPats
pat_cache_t m_cachedPats
Definition: mpegstreamdata.h:351
MPEGStreamData::RemoveWritingPID
virtual void RemoveWritingPID(uint pid)
Definition: mpegstreamdata.h:135
MPEGStreamData::HasEITPIDChanges
virtual bool HasEITPIDChanges(const uint_vec_t &) const
Definition: mpegstreamdata.h:103
MPEGStreamData::m_encryptionPnumToPids
QMap< uint, uint_vec_t > m_encryptionPnumToPids
Definition: mpegstreamdata.h:328
MPEGStreamData::m_encryptionPidToPnums
QMap< uint, uint_vec_t > m_encryptionPidToPnums
Definition: mpegstreamdata.h:329
MPEGStreamData::PATSingleProgram
ProgramAssociationTable * PATSingleProgram(void)
Definition: mpegstreamdata.h:265
PIDPriority
PIDPriority
Definition: mpegstreamdata.h:77
CryptInfo::CryptInfo
CryptInfo()=default
nv_python_libs.bbciplayer.bbciplayer_api.version
string version
Definition: bbciplayer_api.py:81
MPEGStreamData::GetPartialPSIP
PSIPTable * GetPartialPSIP(uint pid)
Definition: mpegstreamdata.h:282
MPEGStreamData::RemoveListeningPID
virtual void RemoveListeningPID(uint pid)
Definition: mpegstreamdata.h:132
MPEGStreamData::SetListeningDisabled
void SetListeningDisabled(bool lt)
Definition: mpegstreamdata.h:92
ts_listener_vec_t
vector< TSPacketListener * > ts_listener_vec_t
Definition: mpegstreamdata.h:50
MPEGStreamData::m_cachedPmts
pmt_cache_t m_cachedPmts
Definition: mpegstreamdata.h:353
EITSource
Definition: eitscanner.h:20
mpeg_listener_vec_t
vector< MPEGStreamListener * > mpeg_listener_vec_t
Definition: mpegstreamdata.h:49