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