3#ifndef MPEG_DESCRIPTORS_H
4#define MPEG_DESCRIPTORS_H
305 operator const unsigned char*()
const {
return m_data; }
309 if ((len < 2) || (
int(DescriptorLength()) + 2) > len)
314 if ((data.size() < 2) ||
315 ((
static_cast<size_t>(DescriptorLength()) + 2) > data.size()))
319 int len,
uint tag) : m_data(data)
321 if ((len < 2) || ((
int(DescriptorLength()) + 2) > len)
322 || (DescriptorTag() != tag))
327 if ((data.size() < 2) ||
328 ((
static_cast<size_t>(DescriptorLength()) + 2) > data.size())
329 || (DescriptorTag() != tag))
333 int len,
uint tag,
uint req_desc_len) : m_data(data)
335 if ((len < 2) || ((
int(DescriptorLength()) + 2) > len)
336 || (DescriptorTag() != tag)
337 || (DescriptorLength() != req_desc_len))
343 uint size(
void)
const {
return DescriptorLength() + 2; }
348 QString DescriptorTagString(
void)
const;
350 virtual QString
toString(
void)
const;
351 virtual QString toStringPD(
uint priv_dsid)
const;
352 virtual QString toStringXML(
uint indent_level)
const;
354 template <
typename DESC_NAME>
359 DESC_NAME
d(m_data, DescriptorLength()+2);
366 static desc_list_t ParseAndExclude(
const unsigned char *data,
uint len,
367 int excluded_descid);
368 static desc_list_t ParseOnlyInclude(
const unsigned char *data,
uint len,
369 int excluded_descid);
371 static const unsigned char *Find(
const desc_list_t &parsed,
uint desc_tag);
372 static const unsigned char *FindExtension(
const desc_list_t &parsed,
uint desc_tag);
375 static const unsigned char *FindBestMatch(
384 QString hexdump(
void)
const;
385 QString descrDump(
const QString &name)
const;
429 bool ID(
void)
const {
return (
m_data[2] & 0x40) != 0; }
456 return QString(
"") + QChar(
m_data[2]) + QChar(
m_data[3]) +
575 QString
toString(
void)
const override;
604 const {
return (
m_data[5]&0x20 ) != 0; }
ISO 13818-1:2000/Amd.3:2004 page 12 ISO/IEC 13818-1:2019 (E) p 103.
AVCTimingAndHRDDescriptor(const unsigned char *data, int len=300)
bool HRDManagementValid(void) const
bool HasPictureAndTimingInfo(void) const
ISO 13818-1:2000/Amd.3:2004 page 11.
bool AVCStill(void) const
uint LevelIDC(void) const
bool FramePackingSEINotPresentFlag(void) const
QString toString() const override
bool ConstraintSet1(void) const
bool ConstraintSet2(void) const
bool AVC24HourPicture(void) const
bool ConstraintSet0(void) const
AVCVideoDescriptor(const unsigned char *data, int len=300)
uint AVCCompatible(void) const
uint ProfileIDC(void) const
AudioStreamDescriptor(const unsigned char *data, int len=300)
bool FreeFormatFlag(void) const
QString toString() const override
bool VariableRateAudioIndicator(void) const
QString toString() const override
const unsigned char * Data(void) const
ConditionalAccessDescriptor(const unsigned char *data, int len=300)
uint DataSize(void) const
uint SystemID(void) const
QString toString() const override
uint AlignmentType(void) const
DataStreamAlignmentDescriptor(const unsigned char *data, int len=300)
@ satellite_delivery_system
@ dvb_time_shifted_service
@ atsc_time_shifted_service
@ partial_transport_stream
@ multilingual_network_name
@ atsc_content_identifier
@ c2_bundle_delivery_system
@ terrestrial_delivery_system
@ atsc_private_information
@ multiprotocol_encapsulation
@ time_slice_fec_identifier
@ scte_revision_detection
@ multilingual_bouquet_name
@ deferred_association_tag
@ s2x_satellite_delivery_system
@ atsc_program_identifier
@ s2_satellite_delivery_system
@ multiplex_buffer_utilization
@ scte_transport_stream_id
@ multilingual_service_name
ISO 13818-1:2013/FDAM 3 (E) page 7 ISO/IEC 13818-1:2019 (E) page 121.
HEVCVideoDescriptor(const unsigned char *data, int len=300)
QString toString() const override
uint ProfileSpace(void) const
uint ProfileIDC(void) const
QString LanguageString(void) const
QString CanonicalLanguageString(void) const
const unsigned char * CodeRaw() const
int CanonicalLanguageKey(void) const
QString toString() const override
ISO639LanguageDescriptor(const unsigned char *data, int len=300)
int LanguageKey(void) const
QString descrToString() const
virtual ~MPEGDescriptor()=default
MPEGDescriptor(const unsigned char *data, int len, uint tag, uint req_desc_len)
uint DescriptorLength(void) const
uint DescriptorTag(void) const
MPEGDescriptor(const std::vector< uint8_t > &data)
uint DescriptorTagExtension(void) const
MPEGDescriptor(const unsigned char *data, int len, uint tag)
MPEGDescriptor(const unsigned char *data, int len=300)
MPEGDescriptor(const std::vector< uint8_t > &data, uint tag)
const unsigned char * m_data
uint MaximumBitrate(void) const
QString toString() const override
MaximumBitrateDescriptor(const unsigned char *data, int len=300)
@ ziggo_package_descriptor
@ premiere_parental_information
@ freesat_chan_cat_mapping
@ upc_event_episode_title
@ dvb_logical_channel_descriptor
@ premiere_content_transmission
@ nordig_content_protection
@ ci_protection_descriptor
@ dvb_simulcast_channel_descriptor
static QMap< QString, QString > description_map
static void InitializeDescriptionMap(void)
static QMutex description_map_lock
static QString GetDescription(const QString &fmt)
static bool description_map_initialized
RegistrationDescriptor(const unsigned char *data, int len=300)
uint FormatIdentifier(void) const
QString toString() const override
QString FormatIdentifierString(void) const
QString toString(void) const override
uint SBLeakRate(void) const
SmoothingBufferDescriptor(const unsigned char *data, int len=300)
uint ClockAccuracyExponent(void) const
bool ExternalClockReferenceIndicator(void) const
uint ClockAccuracyInteger(void) const
SystemClockDescriptor(const unsigned char *data, int len=300)
QString toString() const override
VideoStreamDescriptor(const unsigned char *data, int len=300)
bool FrameRateExtensionFlag(void) const
bool ConstrainedParameterFlag(void) const
QString toString() const override
bool MultipleFrameRateFlag(void) const
uint ChromaFormat(void) const
uint ProfileAndLevelIndication(void) const
uint FrameRateCode(void) const
bool MPEG1OnlyFlag(void) const
bool StillPictureFlag(void) const
int iso639_key_to_canonical_key(int iso639_2)
ISO 639-1 and ISO 639-2 support functions.
static QString iso639_key_to_str3(int code)
static int iso639_str3_to_key(const unsigned char *iso639_2)
static const iso6937table * d
std::vector< const unsigned char * > desc_list_t
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.