6#include "libmythbase/mythconfig.h"
113 return (pesdata()[3]<<8) | pesdata()[4];
129 return (m_ptrs[i][0]<<8) | m_ptrs[i][1];
132 QString TableClassString(
uint i)
const;
137 return ((m_ptrs[i][2]<<8) | (m_ptrs[i][3])) & 0x1fff;
143 return (m_ptrs[i][4]) & 0x1f;
148 return ((m_ptrs[i][5]<<24) | (m_ptrs[i][6]<<16) |
149 (m_ptrs[i][7]<<8) | (m_ptrs[i][8]));
155 return ((m_ptrs[i][9]<<8) | (m_ptrs[i][10])) & 0xfff;
170 return ((m_ptrs[TableCount()][0]<<8) |
171 (m_ptrs[TableCount()][1])) & 0xfff;
176 return m_ptrs[TableCount()]+2;
183 void Parse(
void)
const;
184 QString
toString(
void)
const override;
185 QString toStringXML(
uint indent_level)
const override;
187 mutable std::vector<unsigned char*>
m_ptrs;
235 if (i >= ChannelCount())
239 const auto* ustr =
reinterpret_cast<const unsigned short*
>(m_ptrs[i]);
240 for (
int j=0; j<7; j++)
242 QChar c(qFromBigEndian(ustr[j]));
243 if (c != QChar(
'\0')) str.append(c);
245 return str.simplified();
254 return (((m_ptrs[i][14])<<6)&0x3c0) | (m_ptrs[i][15]>>2);
259 return (((m_ptrs[i][15])<<8)&0x300) | m_ptrs[i][16];
264 return m_ptrs[i][17];
266 QString ModulationModeString(
uint i)
const;
271 return ((m_ptrs[i][22]<<8) | m_ptrs[i][23]);
276 return ((m_ptrs[i][24]<<8) | m_ptrs[i][25]);
281 return (m_ptrs[i][26]>>6) & 0x03;
286 return ( m_ptrs[i][26] & 0x20 ) != 0;
291 return ( m_ptrs[i][26] & 0x10 ) != 0;
297 return ( m_ptrs[i][26] & 0x02 ) != 0;
303 return m_ptrs[i][27] & 0x3f;
305 QString ServiceTypeString(
uint i)
const;
309 return ((m_ptrs[i][28]<<8) | m_ptrs[i][29]);
315 return ((m_ptrs[i][30]<<8) | m_ptrs[i][31]) & 0x03ff;
327 uint i = ChannelCount();
328 return ((m_ptrs[i][0]<<8) | m_ptrs[i][1]) & 0x03ff;
333 return m_ptrs[ChannelCount()]+2;
337 int Find(
int major,
int minor)
const;
338 QString GetExtendedChannelName(
uint idx)
const;
339 QString
toString(
void)
const override;
341 QString toStringXML(
uint indent_level)
const override;
342 virtual QString ChannelStringXML(
uint indent_level,
uint channel)
const;
343 virtual QString XMLChannelValues(
uint indent_level,
uint channel)
const;
345 mutable std::vector<unsigned char*>
m_ptrs;
412 QString ChannelString(
uint channel)
const override;
413 QString XMLChannelValues(
uint indent_level,
uint channel)
const override;
453 return (pesdata()[3]<<8) | pesdata()[4];
474 return (MajorChannel(i) >> 4) == 0x3f;
478 return MajorChannel(i) < 1000;
485 if (SCTEIsChannelNumberOnePart(i))
486 return ((MajorChannel(i) & 0xf) << 10) | MinorChannel(i);
500 return ( m_ptrs[i][26] & 0x08 ) != 0;
505 return ( m_ptrs[i][26] & 0x04 ) != 0;
519 QString ChannelString(
uint channel)
const override;
520 QString XMLChannelValues(
uint indent_level,
uint channel)
const override;
568 return ((m_ptrs[i][0]<<8) | m_ptrs[i][1])&0x3fff;
573 return ((m_ptrs[i][2]<<24) | (m_ptrs[i][3]<<16) |
574 (m_ptrs[i][4]<<8) | (m_ptrs[i][5]));
585 return (m_ptrs[i][6]>>4)&3;
590 return ((m_ptrs[i][6]<<16) | (m_ptrs[i][7]<<8) |
591 (m_ptrs[i][8])) & 0xfffff;
595 {
return m_ptrs[i][9]; }
605 unsigned char *desc=m_ptrs[i]+10+TitleLength(i);
606 return ((desc[0]<<8)|(desc[1]))&0xfff;
613 return m_ptrs[i]+12+TitleLength(i);
621 mutable std::vector<unsigned char*>
m_ptrs;
657 { SetTableIDExtension(
id); }
664 bool IsEventETM(
void)
const {
return 2 == (psipdata()[4] & 3); }
666 {
return (psipdata()[1] << 8) | psipdata()[2]; }
668 {
return (psipdata()[3] << 6) | (psipdata()[4] >> 2); }
716 return ((pesdata()[9] <<24) | (pesdata()[10]<<16) |
717 (pesdata()[11]<< 8) | pesdata()[12]);
726 {
return GPSUnix() - GPSOffset(); }
741 QString
toString(
void)
const override;
742 QString toStringXML(
uint indent_level)
const override;
907 {
return "AggregateEventInformationTable\n"; }
909 {
return "<AggregateEventInformationTable />"; }
966 {
return "AggregateExtendedTextTable\n"; }
968 {
return "<AggregateExtendedTextTable />"; }
QString toStringXML(uint) const override
QString toString(void) const override
AggregateExtendedTextTable(const AggregateExtendedTextTable &table)
AggregateExtendedTextTable(const PSIPTable &table)
This table contains information about the cable channels transmitted on this multiplex.
bool IsPathSelect(uint i) const
CableVirtualChannelTable(const CableVirtualChannelTable &table)
bool SCTEIsChannelNumberOnePart(uint i) const
CableVirtualChannelTable(const PSIPTable &table)
~CableVirtualChannelTable() override
bool SCTEIsChannelNumberTwoPart(uint i) const
bool IsOutOfBand(uint i) const
uint SCTEOnePartChannel(uint i) const
No one has had time to decode this table yet...
DirectedChannelChangeSelectionCodeTable(const DirectedChannelChangeSelectionCodeTable &table)
DirectedChannelChangeSelectionCodeTable(const PSIPTable &table)
No one has had time to decode this table yet...
DirectedChannelChangeTable(const DirectedChannelChangeTable &table)
DirectedChannelChangeTable(const PSIPTable &table)
ExtendedTextTable contain additional text not contained in EventInformationTables.
uint SourceID(void) const
bool IsEventETM(void) const
void SetExtendedTextTableID(uint id)
ExtendedTextTable(const ExtendedTextTable &table)
~ExtendedTextTable() override
ExtendedTextTable(const PSIPTable &table)
MultipleStringStructure ExtendedTextMessage() const
uint ExtendedTextTableID() const
bool IsChannelETM(void) const
This table tells the decoder on which PIDs to find other tables, and their sizes and each table's cur...
std::vector< unsigned char * > m_ptrs
~MasterGuideTable() override
MasterGuideTable(const MasterGuideTable &table)
const unsigned char * TableDescriptors(uint i) const
uint TableType(uint i) const
uint TableDescriptorsLength(uint i) const
uint GlobalDescriptorsLength() const
MasterGuideTable(const PSIPTable &table)
const unsigned char * GlobalDescriptors() const
uint TableDescriptorsBytes(uint i) const
uint TableCountRaw() const
uint TablePID(uint i) const
uint TableVersion(uint i) const
A PSIP table is a variant of a PES packet containing an MPEG, ATSC or DVB table.
No one has had time to decode this table yet...
RatingRegionTable(const PSIPTable &table)
RatingRegionTable(const RatingRegionTable &table)
Contains listing of Table ID's for various tables (PAT=0,PMT=2,etc).
This table contains information about the terrestrial channels transmitted on this multiplex.
TerrestrialVirtualChannelTable(const PSIPTable &table)
~TerrestrialVirtualChannelTable() override
TerrestrialVirtualChannelTable(const TerrestrialVirtualChannelTable &table)
This table contains information about the channels transmitted on this multiplex.
QString ShortChannelName(uint i) const
bool IsHiddenInGuide(uint i) const
bool IsHidden(uint i) const
uint MajorChannel(uint i) const
const unsigned char * Descriptors(uint i) const
~VirtualChannelTable() override
uint ChannelTransportStreamID(uint i) const
uint TransportStreamID() const
uint MinorChannel(uint i) const
virtual QString ChannelString(uint channel) const =0
uint GlobalDescriptorsLength() const
bool IsAccessControlled(uint i) const
uint ETMlocation(uint i) const
uint ProgramNumber(uint i) const
uint SourceID(uint i) const
uint DescriptorsLength(uint i) const
uint ServiceType(uint i) const
uint ChannelCountRaw() const
VirtualChannelTable(const VirtualChannelTable &table)
uint ModulationMode(uint i) const
std::vector< unsigned char * > m_ptrs
uint ChannelCount() const
VirtualChannelTable(const PSIPTable &table)
const unsigned char * GlobalDescriptors() const
static constexpr qint64 GPS_EPOCH
Seconds between start of GPS time and the start of UNIX time.
MBASE_PUBLIC QDateTime fromSecsSinceEpoch(int64_t seconds)
This function takes the number of seconds since the start of the epoch and returns a QDateTime with t...
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.