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