31 changes: 27 additions & 4 deletions mythtv/libs/libmythtv/mpeg/mpegdescriptors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,8 +279,8 @@ const char *descriptor_tag_strings[256] =
/* 0x76 */ "DVB Content Identifier",/* 0x77 */ "Time Slice FEC Identifier",
/* 0x78 */ "ECM Repetition Rate", /* 0x79 */ "DVB-S2 Delivery Identifier",
/* 0x7A */ "E-AC-3", /* 0x7B */ "DTS",
/* 0x7C */ "AAC", /* 0x7D */ "",
/* 0x7E */ "", /* 0x7F */ "",
/* 0x7C */ "AAC", /* 0x7D */ "XAIT location",
/* 0x7E */ "FTA content management",/* 0x7F */ "Extension",

/* 0x80 */ "ATSC Stuffing", /* 0x81 */ "AC-3 Audio",
/* 0x82 */ "SCTE Frame Rate", /* 0x83 */ "SCTE Extended Video",
Expand Down Expand Up @@ -491,9 +491,32 @@ QString MPEGDescriptor::toStringPD(uint priv_dsid) const
{
SET_STRING(DefaultAuthorityDescriptor);
}
else if (DescriptorID::t2_terrestrial_delivery_system == DescriptorTag())
//
// Extension descriptors for extension 0x7F
else if (DescriptorTag() == DescriptorID::extension &&
DescriptorTagExtension() == DescriptorID::image_icon)
{
SET_STRING(ImageIconDescriptor);
}
else if (DescriptorTag() == DescriptorID::extension &&
DescriptorTagExtension() == DescriptorID::t2_delivery_system)
{
SET_STRING(T2DeliverySystemDescriptor);
}
else if (DescriptorTag() == DescriptorID::extension &&
DescriptorTagExtension() == DescriptorID::c2_delivery_system)
{
SET_STRING(C2DeliverySystemDescriptor);
}
else if (DescriptorTag() == DescriptorID::extension &&
DescriptorTagExtension() == DescriptorID::sh_delivery_system)
{
SET_STRING(SHDeliverySystemDescriptor);
}
else if (DescriptorTag() == DescriptorID::extension &&
DescriptorTagExtension() == DescriptorID::s2x_satellite_delivery_system)
{
SET_STRING(T2TerrestrialDeliverySystemDescriptor);
SET_STRING(S2XSatelliteDeliverySystemDescriptor);
}
//
// User Defined DVB descriptors, range 0x80-0xFE
Expand Down
24 changes: 21 additions & 3 deletions mythtv/libs/libmythtv/mpeg/mpegdescriptors.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class DescriptorID
flex_mux_timing = 0x2C,
hevc_video = 0x38,

// DVB
// DVB Bluebook A038 (Feb 2019) p 36-38, Table 12
network_name = 0x40, /* implemented */
service_list = 0x41, /* implemented */
dvb_stuffing = 0x42, /* implemented */
Expand Down Expand Up @@ -135,7 +135,24 @@ class DescriptorID
aac = 0x7C,
xait_location = 0x7D,
fta_content_management = 0x7E,
t2_terrestrial_delivery_system = 0x7F,
extension = 0x7F,

// DVB Bluebook A038 (Feb 2019) p 94, Table 109
//
// Extension descriptors
image_icon = 0x00,
t2_delivery_system = 0x04,
sh_delivery_system = 0x05,
network_change_notify = 0x07,
message = 0x08,
target_region = 0x09,
target_region_name = 0x0A,
xait_pid = 0x0C,
c2_delivery_system = 0x0D,
uri_linkage = 0x13,
ci_ancillary_data = 0x14,
c2_bundle_delivery_system = 0x16,
s2x_satellite_delivery_system = 0x17,

// ATSC
atsc_stuffing = 0x80,
Expand Down Expand Up @@ -297,8 +314,9 @@ class MTV_PUBLIC MPEGDescriptor
uint size(void) const { return DescriptorLength() + 2; }

uint DescriptorTag(void) const { return m_data[0]; }
QString DescriptorTagString(void) const;
uint DescriptorLength(void) const { return m_data[1]; }
uint DescriptorTagExtension(void) const { return m_data[2]; }
QString DescriptorTagString(void) const;

virtual QString toString(void) const;
virtual QString toStringPD(uint priv_dsid) const;
Expand Down