TSDuck Version 3.21-1704 (TSDuck - The MPEG Transport Stream Toolkit)
ts::AbstractDescriptor Class Referenceabstract

Abstract base class for MPEG PSI/SI descriptors. More...

Inheritance diagram for ts::AbstractDescriptor:
Collaboration diagram for ts::AbstractDescriptor:

Public Member Functions

virtual ~AbstractDescriptor ()
 Virtual destructor.
 
virtual Standards definingStandards () const override
 Get the list of standards which define this object. More...
 
virtual void deserialize (DuckContext &duck, const Descriptor &bin)=0
 This abstract method deserializes a binary descriptor. More...
 
void deserialize (DuckContext &duck, const DescriptorList &dlist, size_t index)
 Deserialize a descriptor from a descriptor list. More...
 
virtual void fromXML (DuckContext &duck, const xml::Element *element)=0
 This abstract converts an XML structure to a table or descriptor. More...
 
void invalidate ()
 Invalidate this object. More...
 
bool isPrivateDescriptor () const
 Check if this descriptor is a private descriptor. More...
 
bool isValid () const
 Check if this object is valid. More...
 
PDS requiredPDS () const
 Get the required private data specifier. More...
 
virtual void serialize (DuckContext &duck, Descriptor &bin) const =0
 This abstract method serializes a descriptor. More...
 
DID tag () const
 Get the descriptor tag. More...
 
virtual xml::ElementtoXML (DuckContext &duck, xml::Element *parent) const
 This method converts this object to XML. More...
 
UString xmlName () const
 Get the XMl node name representing this table or descriptor. More...
 

Static Public Member Functions

static UString DeserializeLanguageCode (const uint8_t *data)
 This static method deserializes a 3-byte language or country code. More...
 
static bool SerializeFixedLength (DuckContext &duck, ByteBlock &bb, const UString &str, const size_t size)
 This static method serializes a DVB string with a required fixed size. More...
 
static bool SerializeLanguageCode (ByteBlock &bb, const UString &str, bool allow_empty=false)
 This static method serializes a 3-byte language or country code. More...
 

Static Public Attributes

static const UChar *const XML_GENERIC_DESCRIPTOR
 XML tag name for generic descriptors.
 
static const UChar *const XML_GENERIC_LONG_TABLE
 XML tag name for generic tables with long sections.
 
static const UChar *const XML_GENERIC_SHORT_TABLE
 XML tag name for generic short sections.
 

Protected Member Functions

 AbstractDescriptor (DID tag, const UChar *xml_name, Standards standards, PDS pds)
 Protected constructor for subclasses. More...
 
virtual void buildXML (DuckContext &duck, xml::Element *root) const
 Helper method to convert this object to XML. More...
 
bool checkXMLName (const xml::Element *element, const UChar *legacy_name=nullptr) const
 Check that an XML element has the right name for this table. More...
 
bool deserializeBool (bool &value, const uint8_t *&data, size_t &size, size_t bit=0)
 Deserialize a one-bit boolean inside one byte. More...
 
template<typename INT , typename std::enable_if< std::is_integral< INT >::value >::type * = nullptr>
bool deserializeInt (INT &value, const uint8_t *&data, size_t &size)
 Deserialize an integer. More...
 
bool deserializeLanguageCode (UString &lang, const uint8_t *&data, size_t &size)
 Deserialize a 3-byte language or country code. More...
 
bool serializeEnd (Descriptor &bin, const ByteBlockPtr &bbp) const
 Tool for serialization: complete a serialization. More...
 
ByteBlockPtr serializeStart () const
 Tool for serialization: get a byte buffer for serialization. More...
 

Protected Attributes

bool _is_valid
 It is the responsibility of the subclasses to set the valid flag.
 
PDS _required_pds
 Required private data specified.
 
DID _tag
 The descriptor tag can be modified by subclasses only.
 
const UChar *const _xml_name
 XML table or descriptor name.
 

Detailed Description

Abstract base class for MPEG PSI/SI descriptors.

Constructor & Destructor Documentation

◆ AbstractDescriptor()

ts::AbstractDescriptor::AbstractDescriptor ( DID  tag,
const UChar xml_name,
Standards  standards,
PDS  pds 
)
protected

Protected constructor for subclasses.

Parameters
[in]tagDescriptor tag.
[in]xml_nameDescriptor name, as used in XML structures.
[in]standardsA bit mask of standards which define this structure.
[in]pdsRequired private data specifier if this is a private descriptor.

Member Function Documentation

◆ tag()

DID ts::AbstractDescriptor::tag ( ) const
inline

Get the descriptor tag.

Returns
The descriptor tag.

◆ requiredPDS()

PDS ts::AbstractDescriptor::requiredPDS ( ) const
inline

Get the required private data specifier.

Returns
The private data specifier which is required to interpret correctly this descriptor in a section. Return zero if this descriptor is a DVB-defined or MPEG-defined descriptor, not a private specifier.

◆ isPrivateDescriptor()

bool ts::AbstractDescriptor::isPrivateDescriptor ( ) const
inline

Check if this descriptor is a private descriptor.

Returns
True if this descriptor is a private descriptor, false if it is a DVB-defined or MPEG-defined descriptor.

◆ serialize()

virtual void ts::AbstractDescriptor::serialize ( DuckContext duck,
Descriptor bin 
) const
pure virtual

This abstract method serializes a descriptor.

Parameters
[in,out]duckTSDuck execution context.
[out]binA binary descriptor object. Its content is replaced with a binary representation of this object.

Implemented in ts::LinkageDescriptor, ts::TeletextDescriptor, ts::SSULinkageDescriptor, ts::TransportProtocolDescriptor, ts::SSUDataBroadcastIdDescriptor, ts::SHDeliverySystemDescriptor, ts::VBIDataDescriptor, ts::NorDigLogicalChannelDescriptorV2, ts::ContentDescriptor, ts::CADescriptor, ts::NPTReferenceDescriptor, ts::ExtendedEventDescriptor, ts::ServiceListDescriptor, ts::SkyLogicalChannelNumberDescriptor, ts::EutelsatChannelNumberDescriptor, ts::ISO639LanguageDescriptor, ts::ParentalRatingDescriptor, ts::SubtitlingDescriptor, ts::T2DeliverySystemDescriptor, ts::NetworkChangeNotifyDescriptor, ts::DTSHDDescriptor, ts::CellListDescriptor, ts::EASInbandExceptionChannelsDescriptor, ts::ExternalApplicationAuthorizationDescriptor, ts::LogicalChannelNumberDescriptor, ts::NorDigLogicalChannelDescriptorV1, ts::SpliceSegmentationDescriptor, ts::DIILocationDescriptor, ts::HDSimulcastLogicalChannelDescriptor, ts::ApplicationRecordingDescriptor, ts::ApplicationSignallingDescriptor, ts::TargetIPSourceSlashDescriptor, ts::TargetIPv6SourceSlashDescriptor, ts::CellFrequencyLinkDescriptor, ts::FMCDescriptor, ts::PrefetchDescriptor, ts::ServiceLocationDescriptor, ts::ATSCTimeShiftedServiceDescriptor, ts::AudioPreselectionDescriptor, ts::CaptionServiceDescriptor, ts::NVODReferenceDescriptor, ts::S2XSatelliteDeliverySystemDescriptor, ts::LocalTimeOffsetDescriptor, ts::TargetIPSlashDescriptor, ts::TargetIPv6SlashDescriptor, ts::C2BundleDeliverySystemDescriptor, ts::EASAudioFileDescriptor, ts::TargetMACAddressRangeDescriptor, ts::ApplicationDescriptor, ts::MosaicDescriptor, ts::AnnouncementSupportDescriptor, ts::MultilingualServiceNameDescriptor, ts::ATSCEAC3AudioDescriptor, ts::ContentAdvisoryDescriptor, ts::FrequencyListDescriptor, ts::ShortEventDescriptor, ts::TargetRegionNameDescriptor, ts::ATSCAC3AudioStreamDescriptor, ts::EacemPreferredNameListDescriptor, ts::TargetRegionDescriptor, ts::HEVCVideoDescriptor, ts::VideoDepthRangeDescriptor, ts::DVBEnhancedAC3Descriptor, ts::SchedulingDescriptor, ts::DataBroadcastIdDescriptor, ts::CountryAvailabilityDescriptor, ts::TargetIPAddressDescriptor, ts::TargetIPv6AddressDescriptor, ts::TelephoneDescriptor, ts::SpliceDTMFDescriptor, ts::TargetMACAddressDescriptor, ts::AbstractMultilingualDescriptor, ts::AVCTimingAndHRDDescriptor, ts::DVBAC3Descriptor, ts::J2KVideoDescriptor, ts::StreamEventDescriptor, ts::TerrestrialDeliverySystemDescriptor, ts::ImageIconDescriptor, ts::MessageDescriptor, ts::SVCExtensionDescriptor, ts::ApplicationStorageDescriptor, ts::IPMACGenericStreamLocationDescriptor, ts::MVCExtensionDescriptor, ts::SatelliteDeliverySystemDescriptor, ts::AVCVideoDescriptor, ts::IPMACStreamLocationDescriptor, ts::SpliceTimeDescriptor, ts::SSUEnhancedMessageDescriptor, ts::TargetSmartcardDescriptor, ts::CAIdentifierDescriptor, ts::CueIdentifierDescriptor, ts::DTSDescriptor, ts::GraphicsConstraintsDescriptor, ts::HierarchyDescriptor, ts::IPMACPlatformNameDescriptor, ts::IPMACPlatformProviderNameDescriptor, ts::SSUMessageDescriptor, ts::TargetSerialNumberDescriptor, ts::UpdateDescriptor, ts::VideoStreamDescriptor, ts::ApplicationIconsDescriptor, ts::C2DeliverySystemDescriptor, ts::ComponentDescriptor, ts::DVBJApplicationLocationDescriptor, ts::EASInbandDetailsChannelDescriptor, ts::EASMetadataDescriptor, ts::HEVCTimingAndHRDDescriptor, ts::ISPAccessModeDescriptor, ts::MaximumBitrateDescriptor, ts::PartialTransportStreamDescriptor, ts::ServiceAvailabilityDescriptor, ts::ServiceDescriptor, ts::SSUEventNameDescriptor, ts::SSULocationDescriptor, ts::SSUURIDescriptor, ts::TimeSliceFECIdentifierDescriptor, ts::ApplicationUsageDescriptor, ts::DVBHTMLApplicationBoundaryDescriptor, ts::DVBHTMLApplicationDescriptor, ts::DVBHTMLApplicationLocationDescriptor, ts::IPSignallingDescriptor, ts::S2SatelliteDeliverySystemDescriptor, ts::SpliceAvailDescriptor, ts::AACDescriptor, ts::CableDeliverySystemDescriptor, ts::CPDescriptor, ts::DataBroadcastDescriptor, ts::DVBAC4Descriptor, ts::DVBJApplicationDescriptor, ts::EacemPreferredNameIdentifierDescriptor, ts::EacemStreamIdentifierDescriptor, ts::NPTEndpointDescriptor, ts::SimpleApplicationBoundaryDescriptor, ts::SimpleApplicationLocationDescriptor, ts::SSUSubgroupAssociationDescriptor, ts::StereoscopicVideoInfoDescriptor, ts::SupplementaryAudioDescriptor, ts::AssociationTagDescriptor, ts::AudioStreamDescriptor, ts::DeferredAssociationTagsDescriptor, ts::DSNGDescriptor, ts::FlexMuxTimingDescriptor, ts::FTAContentManagementDescriptor, ts::PDCDescriptor, ts::RegistrationDescriptor, ts::ServiceIdentifierDescriptor, ts::T2MIDescriptor, ts::URILinkageDescriptor, ts::BouquetNameDescriptor, ts::DCCArrivingRequestDescriptor, ts::DCCDepartingRequestDescriptor, ts::ECMRepetitionRateDescriptor, ts::IBPDescriptor, ts::MetadataSTDDescriptor, ts::MPEG2AACAudioDescriptor, ts::MultiplexBufferUtilizationDescriptor, ts::NetworkNameDescriptor, ts::ServiceMoveDescriptor, ts::ServiceRelocatedDescriptor, ts::ShortSmoothingBufferDescriptor, ts::StreamModeDescriptor, ts::SystemClockDescriptor, ts::TargetBackgroundGridDescriptor, ts::TransportStreamDescriptor, ts::VideoWindowDescriptor, ts::AdaptationFieldDataDescriptor, ts::AncillaryDataDescriptor, ts::ATSCStuffingDescriptor, ts::CarouselIdentifierDescriptor, ts::ComponentNameDescriptor, ts::CopyrightDescriptor, ts::DTSNeuralDescriptor, ts::DVBStuffingDescriptor, ts::ExtendedChannelNameDescriptor, ts::GenreDescriptor, ts::MPEG2StereoscopicVideoFormatDescriptor, ts::MultiplexBufferDescriptor, ts::PrivateDataIndicatorDescriptor, ts::PrivateDataSpecifierDescriptor, ts::ProtectionMessageDescriptor, ts::RedistributionControlDescriptor, ts::ScramblingDescriptor, ts::SmoothingBufferDescriptor, ts::STDDescriptor, ts::StreamIdentifierDescriptor, ts::TimeShiftedEventDescriptor, ts::TransportProfileDescriptor, ts::CIAncillaryDataDescriptor, ts::CPIdentifierDescriptor, ts::DataStreamAlignmentDescriptor, ts::DVBTimeShiftedServiceDescriptor, ts::ExternalESIdDescriptor, ts::MPEG4AudioDescriptor, ts::MPEG4VideoDescriptor, ts::SLDescriptor, ts::StereoscopicProgramInfoDescriptor, and ts::AFExtensionsDescriptor.

◆ deserialize() [1/2]

virtual void ts::AbstractDescriptor::deserialize ( DuckContext duck,
const Descriptor bin 
)
pure virtual

This abstract method deserializes a binary descriptor.

In case of success, this object is replaced with the interpreted content of bin. In case of error, this object is invalidated.

Parameters
[in,out]duckTSDuck execution context.
[in]binA binary descriptor to interpret according to the descriptor subclass.

Implemented in ts::LinkageDescriptor, ts::TeletextDescriptor, ts::SSULinkageDescriptor, ts::TransportProtocolDescriptor, ts::SSUDataBroadcastIdDescriptor, ts::SHDeliverySystemDescriptor, ts::VBIDataDescriptor, ts::NorDigLogicalChannelDescriptorV2, ts::ContentDescriptor, ts::CADescriptor, ts::NPTReferenceDescriptor, ts::ExtendedEventDescriptor, ts::ServiceListDescriptor, ts::SkyLogicalChannelNumberDescriptor, ts::EutelsatChannelNumberDescriptor, ts::ISO639LanguageDescriptor, ts::ParentalRatingDescriptor, ts::SubtitlingDescriptor, ts::T2DeliverySystemDescriptor, ts::NetworkChangeNotifyDescriptor, ts::DTSHDDescriptor, ts::CellListDescriptor, ts::EASInbandExceptionChannelsDescriptor, ts::ExternalApplicationAuthorizationDescriptor, ts::LogicalChannelNumberDescriptor, ts::NorDigLogicalChannelDescriptorV1, ts::SpliceSegmentationDescriptor, ts::DIILocationDescriptor, ts::HDSimulcastLogicalChannelDescriptor, ts::ApplicationRecordingDescriptor, ts::ApplicationSignallingDescriptor, ts::TargetIPSourceSlashDescriptor, ts::TargetIPv6SourceSlashDescriptor, ts::CellFrequencyLinkDescriptor, ts::FMCDescriptor, ts::PrefetchDescriptor, ts::ServiceLocationDescriptor, ts::ATSCTimeShiftedServiceDescriptor, ts::AudioPreselectionDescriptor, ts::CaptionServiceDescriptor, ts::NVODReferenceDescriptor, ts::S2XSatelliteDeliverySystemDescriptor, ts::LocalTimeOffsetDescriptor, ts::TargetIPSlashDescriptor, ts::TargetIPv6SlashDescriptor, ts::C2BundleDeliverySystemDescriptor, ts::EASAudioFileDescriptor, ts::TargetMACAddressRangeDescriptor, ts::ApplicationDescriptor, ts::MosaicDescriptor, ts::AnnouncementSupportDescriptor, ts::MultilingualServiceNameDescriptor, ts::ATSCEAC3AudioDescriptor, ts::ContentAdvisoryDescriptor, ts::FrequencyListDescriptor, ts::ShortEventDescriptor, ts::TargetRegionNameDescriptor, ts::ATSCAC3AudioStreamDescriptor, ts::EacemPreferredNameListDescriptor, ts::TargetRegionDescriptor, ts::HEVCVideoDescriptor, ts::VideoDepthRangeDescriptor, ts::DVBEnhancedAC3Descriptor, ts::SchedulingDescriptor, ts::DataBroadcastIdDescriptor, ts::CountryAvailabilityDescriptor, ts::TargetIPAddressDescriptor, ts::TargetIPv6AddressDescriptor, ts::TelephoneDescriptor, ts::SpliceDTMFDescriptor, ts::TargetMACAddressDescriptor, ts::AbstractMultilingualDescriptor, ts::AVCTimingAndHRDDescriptor, ts::DVBAC3Descriptor, ts::J2KVideoDescriptor, ts::StreamEventDescriptor, ts::TerrestrialDeliverySystemDescriptor, ts::ImageIconDescriptor, ts::MessageDescriptor, ts::SVCExtensionDescriptor, ts::ApplicationStorageDescriptor, ts::IPMACGenericStreamLocationDescriptor, ts::MVCExtensionDescriptor, ts::SatelliteDeliverySystemDescriptor, ts::AVCVideoDescriptor, ts::IPMACStreamLocationDescriptor, ts::SpliceTimeDescriptor, ts::SSUEnhancedMessageDescriptor, ts::TargetSmartcardDescriptor, ts::CAIdentifierDescriptor, ts::CueIdentifierDescriptor, ts::DTSDescriptor, ts::GraphicsConstraintsDescriptor, ts::HierarchyDescriptor, ts::IPMACPlatformNameDescriptor, ts::IPMACPlatformProviderNameDescriptor, ts::SSUMessageDescriptor, ts::TargetSerialNumberDescriptor, ts::UpdateDescriptor, ts::VideoStreamDescriptor, ts::ApplicationIconsDescriptor, ts::C2DeliverySystemDescriptor, ts::ComponentDescriptor, ts::DVBJApplicationLocationDescriptor, ts::EASInbandDetailsChannelDescriptor, ts::EASMetadataDescriptor, ts::HEVCTimingAndHRDDescriptor, ts::ISPAccessModeDescriptor, ts::MaximumBitrateDescriptor, ts::PartialTransportStreamDescriptor, ts::ServiceAvailabilityDescriptor, ts::ServiceDescriptor, ts::SSUEventNameDescriptor, ts::SSULocationDescriptor, ts::SSUURIDescriptor, ts::TimeSliceFECIdentifierDescriptor, ts::ApplicationUsageDescriptor, ts::DVBHTMLApplicationBoundaryDescriptor, ts::DVBHTMLApplicationDescriptor, ts::DVBHTMLApplicationLocationDescriptor, ts::IPSignallingDescriptor, ts::S2SatelliteDeliverySystemDescriptor, ts::SpliceAvailDescriptor, ts::AACDescriptor, ts::CableDeliverySystemDescriptor, ts::CPDescriptor, ts::DataBroadcastDescriptor, ts::DVBAC4Descriptor, ts::DVBJApplicationDescriptor, ts::EacemPreferredNameIdentifierDescriptor, ts::EacemStreamIdentifierDescriptor, ts::NPTEndpointDescriptor, ts::SimpleApplicationBoundaryDescriptor, ts::SimpleApplicationLocationDescriptor, ts::SSUSubgroupAssociationDescriptor, ts::StereoscopicVideoInfoDescriptor, ts::SupplementaryAudioDescriptor, ts::AssociationTagDescriptor, ts::AudioStreamDescriptor, ts::DeferredAssociationTagsDescriptor, ts::DSNGDescriptor, ts::FlexMuxTimingDescriptor, ts::FTAContentManagementDescriptor, ts::PDCDescriptor, ts::RegistrationDescriptor, ts::ServiceIdentifierDescriptor, ts::T2MIDescriptor, ts::URILinkageDescriptor, ts::BouquetNameDescriptor, ts::DCCArrivingRequestDescriptor, ts::DCCDepartingRequestDescriptor, ts::ECMRepetitionRateDescriptor, ts::IBPDescriptor, ts::MetadataSTDDescriptor, ts::MPEG2AACAudioDescriptor, ts::MultiplexBufferUtilizationDescriptor, ts::NetworkNameDescriptor, ts::ServiceMoveDescriptor, ts::ServiceRelocatedDescriptor, ts::ShortSmoothingBufferDescriptor, ts::StreamModeDescriptor, ts::SystemClockDescriptor, ts::TargetBackgroundGridDescriptor, ts::TransportStreamDescriptor, ts::VideoWindowDescriptor, ts::AdaptationFieldDataDescriptor, ts::AncillaryDataDescriptor, ts::ATSCStuffingDescriptor, ts::CarouselIdentifierDescriptor, ts::ComponentNameDescriptor, ts::CopyrightDescriptor, ts::DTSNeuralDescriptor, ts::DVBStuffingDescriptor, ts::ExtendedChannelNameDescriptor, ts::GenreDescriptor, ts::MPEG2StereoscopicVideoFormatDescriptor, ts::MultiplexBufferDescriptor, ts::PrivateDataIndicatorDescriptor, ts::PrivateDataSpecifierDescriptor, ts::ProtectionMessageDescriptor, ts::RedistributionControlDescriptor, ts::ScramblingDescriptor, ts::SmoothingBufferDescriptor, ts::STDDescriptor, ts::StreamIdentifierDescriptor, ts::TimeShiftedEventDescriptor, ts::TransportProfileDescriptor, ts::CIAncillaryDataDescriptor, ts::CPIdentifierDescriptor, ts::DataStreamAlignmentDescriptor, ts::DVBTimeShiftedServiceDescriptor, ts::ExternalESIdDescriptor, ts::MPEG4AudioDescriptor, ts::MPEG4VideoDescriptor, ts::SLDescriptor, ts::StereoscopicProgramInfoDescriptor, and ts::AFExtensionsDescriptor.

◆ deserialize() [2/2]

void ts::AbstractDescriptor::deserialize ( DuckContext duck,
const DescriptorList dlist,
size_t  index 
)

Deserialize a descriptor from a descriptor list.

In case of success, this object is replaced with the interpreted content of the binary descriptor. In case of error, this object is invalidated.

Parameters
[in,out]duckTSDuck execution context.
[in]dlistA list of binary descriptors.
[in]indexIndex of the descriptor to deserialize in dlist.

◆ serializeStart()

ByteBlockPtr ts::AbstractDescriptor::serializeStart ( ) const
protected

Tool for serialization: get a byte buffer for serialization.

Returns
A safe pointer to a two-byte byffer containing the descriptor tag and zero as length.

◆ serializeEnd()

bool ts::AbstractDescriptor::serializeEnd ( Descriptor bin,
const ByteBlockPtr bbp 
) const
protected

Tool for serialization: complete a serialization.

Parameters
[out]binA binary descriptor object which receives the serialized object.
[in]bbpSafe pointer containing the serialized data, typically returned by serializeStart(). The tag and length will be updated.
Returns
True if the serialized descriptor is valid.

◆ isValid()

bool ts::AbstractSignalization::isValid ( ) const
inlineinherited

Check if this object is valid.

Returns
True if this object is valid.

◆ invalidate()

void ts::AbstractSignalization::invalidate ( )
inlineinherited

Invalidate this object.

This object must be rebuilt.

◆ xmlName()

UString ts::AbstractSignalization::xmlName ( ) const
inherited

Get the XMl node name representing this table or descriptor.

Returns
The XML node name.

◆ toXML()

virtual xml::Element* ts::AbstractSignalization::toXML ( DuckContext duck,
xml::Element parent 
) const
virtualinherited

This method converts this object to XML.

When this object is valid, the default implementation of toXML() creates a root node with the default XML name and then invoke buildXML() to populate the XML node.

Subclasses have the choice to either implement buildXML() or toXML(). If the object is serialized as one single XML node, it is simpler to implement buildXML().

Parameters
[in,out]duckTSDuck execution context.
[in,out]parentThe parent node for the new XML tree.
Returns
The new XML element.

Reimplemented in ts::SSULinkageDescriptor, and ts::SSUDataBroadcastIdDescriptor.

◆ fromXML()

virtual void ts::AbstractSignalization::fromXML ( DuckContext duck,
const xml::Element element 
)
pure virtualinherited

This abstract converts an XML structure to a table or descriptor.

In case of success, this object is replaced with the interpreted content of the XML structure. In case of error, this object is invalidated.

Parameters
[in,out]duckTSDuck execution context.
[in]elementXML element to convert.

Implemented in ts::SDT, ts::UNT, ts::EIT, ts::DCCT, ts::PMT, ts::VCT, ts::CableEmergencyAlertTable, ts::LinkageDescriptor, ts::DCCSCT, ts::TeletextDescriptor, ts::SSULinkageDescriptor, ts::TransportProtocolDescriptor, ts::SpliceInsert, ts::SSUDataBroadcastIdDescriptor, ts::AIT, ts::SpliceSchedule, ts::SHDeliverySystemDescriptor, ts::VBIDataDescriptor, ts::RRT, ts::NorDigLogicalChannelDescriptorV2, ts::ContentDescriptor, ts::INT, ts::CADescriptor, ts::NPTReferenceDescriptor, ts::ExtendedEventDescriptor, ts::ATSCEIT, ts::ServiceListDescriptor, ts::SkyLogicalChannelNumberDescriptor, ts::MGT, ts::STT, ts::EutelsatChannelNumberDescriptor, ts::ISO639LanguageDescriptor, ts::ParentalRatingDescriptor, ts::SubtitlingDescriptor, ts::T2DeliverySystemDescriptor, ts::SelectionInformationTable, ts::NetworkChangeNotifyDescriptor, ts::DTSHDDescriptor, ts::CellListDescriptor, ts::EASInbandExceptionChannelsDescriptor, ts::ExternalApplicationAuthorizationDescriptor, ts::LogicalChannelNumberDescriptor, ts::NorDigLogicalChannelDescriptorV1, ts::SpliceSegmentationDescriptor, ts::DIILocationDescriptor, ts::HDSimulcastLogicalChannelDescriptor, ts::ApplicationRecordingDescriptor, ts::TOT, ts::ApplicationSignallingDescriptor, ts::TargetIPSourceSlashDescriptor, ts::TargetIPv6SourceSlashDescriptor, ts::NIT, ts::RST, ts::CellFrequencyLinkDescriptor, ts::FMCDescriptor, ts::PrefetchDescriptor, ts::ServiceLocationDescriptor, ts::ATSCTimeShiftedServiceDescriptor, ts::AudioPreselectionDescriptor, ts::CaptionServiceDescriptor, ts::NVODReferenceDescriptor, ts::S2XSatelliteDeliverySystemDescriptor, ts::LocalTimeOffsetDescriptor, ts::TargetIPSlashDescriptor, ts::TargetIPv6SlashDescriptor, ts::C2BundleDeliverySystemDescriptor, ts::EASAudioFileDescriptor, ts::TargetMACAddressRangeDescriptor, ts::SpliceInformationTable, ts::ApplicationDescriptor, ts::MosaicDescriptor, ts::AnnouncementSupportDescriptor, ts::MultilingualServiceNameDescriptor, ts::ATSCEAC3AudioDescriptor, ts::ContentAdvisoryDescriptor, ts::FrequencyListDescriptor, ts::ShortEventDescriptor, ts::TargetRegionNameDescriptor, ts::ATSCAC3AudioStreamDescriptor, ts::EacemPreferredNameListDescriptor, ts::TargetRegionDescriptor, ts::HEVCVideoDescriptor, ts::VideoDepthRangeDescriptor, ts::DVBEnhancedAC3Descriptor, ts::SchedulingDescriptor, ts::DataBroadcastIdDescriptor, ts::DSMCCStreamDescriptorsTable, ts::CountryAvailabilityDescriptor, ts::TargetIPAddressDescriptor, ts::TargetIPv6AddressDescriptor, ts::TelephoneDescriptor, ts::BAT, ts::SpliceDTMFDescriptor, ts::TargetMACAddressDescriptor, ts::PAT, ts::AbstractMultilingualDescriptor, ts::AVCTimingAndHRDDescriptor, ts::DVBAC3Descriptor, ts::J2KVideoDescriptor, ts::StreamEventDescriptor, ts::TerrestrialDeliverySystemDescriptor, ts::ImageIconDescriptor, ts::MessageDescriptor, ts::SVCExtensionDescriptor, ts::ApplicationStorageDescriptor, ts::IPMACGenericStreamLocationDescriptor, ts::MVCExtensionDescriptor, ts::SatelliteDeliverySystemDescriptor, ts::AVCVideoDescriptor, ts::IPMACStreamLocationDescriptor, ts::SpliceTimeDescriptor, ts::SSUEnhancedMessageDescriptor, ts::TargetSmartcardDescriptor, ts::CAIdentifierDescriptor, ts::CueIdentifierDescriptor, ts::DTSDescriptor, ts::GraphicsConstraintsDescriptor, ts::HierarchyDescriptor, ts::IPMACPlatformNameDescriptor, ts::IPMACPlatformProviderNameDescriptor, ts::SSUMessageDescriptor, ts::TargetSerialNumberDescriptor, ts::UpdateDescriptor, ts::VideoStreamDescriptor, ts::ApplicationIconsDescriptor, ts::C2DeliverySystemDescriptor, ts::ComponentDescriptor, ts::DVBJApplicationLocationDescriptor, ts::EASInbandDetailsChannelDescriptor, ts::EASMetadataDescriptor, ts::HEVCTimingAndHRDDescriptor, ts::ISPAccessModeDescriptor, ts::MaximumBitrateDescriptor, ts::PartialTransportStreamDescriptor, ts::ServiceAvailabilityDescriptor, ts::ServiceDescriptor, ts::SSUEventNameDescriptor, ts::SSULocationDescriptor, ts::SSUURIDescriptor, ts::TimeSliceFECIdentifierDescriptor, ts::ApplicationUsageDescriptor, ts::DVBHTMLApplicationBoundaryDescriptor, ts::DVBHTMLApplicationDescriptor, ts::DVBHTMLApplicationLocationDescriptor, ts::IPSignallingDescriptor, ts::S2SatelliteDeliverySystemDescriptor, ts::SpliceAvailDescriptor, ts::AACDescriptor, ts::CableDeliverySystemDescriptor, ts::CPDescriptor, ts::DataBroadcastDescriptor, ts::DVBAC4Descriptor, ts::DVBJApplicationDescriptor, ts::EacemPreferredNameIdentifierDescriptor, ts::EacemStreamIdentifierDescriptor, ts::NPTEndpointDescriptor, ts::SimpleApplicationBoundaryDescriptor, ts::SimpleApplicationLocationDescriptor, ts::SSUSubgroupAssociationDescriptor, ts::StereoscopicVideoInfoDescriptor, ts::SupplementaryAudioDescriptor, ts::AssociationTagDescriptor, ts::AudioStreamDescriptor, ts::DeferredAssociationTagsDescriptor, ts::DSNGDescriptor, ts::FlexMuxTimingDescriptor, ts::FTAContentManagementDescriptor, ts::PDCDescriptor, ts::RegistrationDescriptor, ts::ServiceIdentifierDescriptor, ts::T2MIDescriptor, ts::URILinkageDescriptor, ts::ETT, ts::BouquetNameDescriptor, ts::DCCArrivingRequestDescriptor, ts::DCCDepartingRequestDescriptor, ts::ECMRepetitionRateDescriptor, ts::IBPDescriptor, ts::MetadataSTDDescriptor, ts::MPEG2AACAudioDescriptor, ts::MultiplexBufferUtilizationDescriptor, ts::NetworkNameDescriptor, ts::ServiceMoveDescriptor, ts::ServiceRelocatedDescriptor, ts::ShortSmoothingBufferDescriptor, ts::StreamModeDescriptor, ts::SystemClockDescriptor, ts::TargetBackgroundGridDescriptor, ts::TransportStreamDescriptor, ts::VideoWindowDescriptor, ts::AdaptationFieldDataDescriptor, ts::AncillaryDataDescriptor, ts::ATSCStuffingDescriptor, ts::CarouselIdentifierDescriptor, ts::ComponentNameDescriptor, ts::CopyrightDescriptor, ts::DTSNeuralDescriptor, ts::DVBStuffingDescriptor, ts::ExtendedChannelNameDescriptor, ts::GenreDescriptor, ts::MPEG2StereoscopicVideoFormatDescriptor, ts::MultiplexBufferDescriptor, ts::PrivateDataIndicatorDescriptor, ts::PrivateDataSpecifierDescriptor, ts::ProtectionMessageDescriptor, ts::RedistributionControlDescriptor, ts::ScramblingDescriptor, ts::SmoothingBufferDescriptor, ts::STDDescriptor, ts::StreamIdentifierDescriptor, ts::TimeShiftedEventDescriptor, ts::TransportProfileDescriptor, ts::CIAncillaryDataDescriptor, ts::CPIdentifierDescriptor, ts::DataStreamAlignmentDescriptor, ts::DVBTimeShiftedServiceDescriptor, ts::ExternalESIdDescriptor, ts::MPEG4AudioDescriptor, ts::MPEG4VideoDescriptor, ts::SLDescriptor, ts::StereoscopicProgramInfoDescriptor, ts::DiscontinuityInformationTable, ts::AFExtensionsDescriptor, ts::TDT, ts::MultilingualComponentDescriptor, and ts::AbstractDescriptorsTable.

◆ definingStandards()

virtual Standards ts::AbstractSignalization::definingStandards ( ) const
overridevirtualinherited

Get the list of standards which define this object.

Returns
A bit mask of standards.

Implements ts::AbstractDefinedByStandards.

◆ SerializeFixedLength()

static bool ts::AbstractSignalization::SerializeFixedLength ( DuckContext duck,
ByteBlock bb,
const UString str,
const size_t  size 
)
staticinherited

This static method serializes a DVB string with a required fixed size.

Parameters
[in,out]duckTSDuck execution context.
[in,out]bbA byte-block where str will be appended if its size is correct.
[in]strString to serialize.
[in]sizeRequired size in bytes of the serialized string.
Returns
True if the size has the required length and has been serialized.

◆ SerializeLanguageCode()

static bool ts::AbstractSignalization::SerializeLanguageCode ( ByteBlock bb,
const UString str,
bool  allow_empty = false 
)
staticinherited

This static method serializes a 3-byte language or country code.

Parameters
[in,out]bbA byte-block where str will be appended if its size is correct.
[in]strString to serialize.
[in]allow_emptyIf true, an empty string is allowed and serialized as zeroes.
Returns
True if the size has the required length and has been serialized.

◆ DeserializeLanguageCode()

static UString ts::AbstractSignalization::DeserializeLanguageCode ( const uint8_t *  data)
staticinherited

This static method deserializes a 3-byte language or country code.

Parameters
[in]dataAddress of a 3-byte memory area.
Returns
Deserialized string.

◆ buildXML()

virtual void ts::AbstractSignalization::buildXML ( DuckContext duck,
xml::Element root 
) const
protectedvirtualinherited

Helper method to convert this object to XML.

When this object is valid, the default implementation of toXML() creates a root node with the default XML name and then invoke buildXML() to populate the XML node.

The default implementation is to do nothing. Subclasses which override toXML() do not need to implement buildXML() since it won't be invoked.

Parameters
[in,out]rootThe root node for the new XML tree.
[in,out]duckTSDuck execution context.

Reimplemented in ts::SDT, ts::UNT, ts::EIT, ts::VCT, ts::DCCT, ts::PMT, ts::CableEmergencyAlertTable, ts::LinkageDescriptor, ts::TeletextDescriptor, ts::DCCSCT, ts::AIT, ts::TransportProtocolDescriptor, ts::RRT, ts::MGT, ts::SHDeliverySystemDescriptor, ts::VBIDataDescriptor, ts::INT, ts::NorDigLogicalChannelDescriptorV2, ts::ContentDescriptor, ts::ATSCEIT, ts::SpliceInsert, ts::CADescriptor, ts::NPTReferenceDescriptor, ts::ExtendedEventDescriptor, ts::SpliceSchedule, ts::ServiceListDescriptor, ts::STT, ts::AbstractMultilingualDescriptor, ts::SelectionInformationTable, ts::EutelsatChannelNumberDescriptor, ts::ISO639LanguageDescriptor, ts::ParentalRatingDescriptor, ts::SubtitlingDescriptor, ts::T2DeliverySystemDescriptor, ts::NetworkChangeNotifyDescriptor, ts::SkyLogicalChannelNumberDescriptor, ts::DTSHDDescriptor, ts::CellListDescriptor, ts::EASInbandExceptionChannelsDescriptor, ts::ExternalApplicationAuthorizationDescriptor, ts::LogicalChannelNumberDescriptor, ts::NorDigLogicalChannelDescriptorV1, ts::SpliceSegmentationDescriptor, ts::SpliceInformationTable, ts::DIILocationDescriptor, ts::HDSimulcastLogicalChannelDescriptor, ts::TOT, ts::ApplicationRecordingDescriptor, ts::RST, ts::NIT, ts::ApplicationSignallingDescriptor, ts::TargetIPSourceSlashDescriptor, ts::TargetIPv6SourceSlashDescriptor, ts::CellFrequencyLinkDescriptor, ts::FMCDescriptor, ts::PrefetchDescriptor, ts::ServiceLocationDescriptor, ts::ATSCTimeShiftedServiceDescriptor, ts::AudioPreselectionDescriptor, ts::CaptionServiceDescriptor, ts::NVODReferenceDescriptor, ts::S2XSatelliteDeliverySystemDescriptor, ts::LocalTimeOffsetDescriptor, ts::TargetIPSlashDescriptor, ts::TargetIPv6SlashDescriptor, ts::C2BundleDeliverySystemDescriptor, ts::EASAudioFileDescriptor, ts::TargetMACAddressRangeDescriptor, ts::AbstractDescriptorsTable, ts::ApplicationDescriptor, ts::MosaicDescriptor, ts::AnnouncementSupportDescriptor, ts::MultilingualServiceNameDescriptor, ts::ATSCEAC3AudioDescriptor, ts::ContentAdvisoryDescriptor, ts::FrequencyListDescriptor, ts::ShortEventDescriptor, ts::TargetRegionNameDescriptor, ts::ATSCAC3AudioStreamDescriptor, ts::EacemPreferredNameListDescriptor, ts::TargetRegionDescriptor, ts::HEVCVideoDescriptor, ts::VideoDepthRangeDescriptor, ts::DVBEnhancedAC3Descriptor, ts::SchedulingDescriptor, ts::DataBroadcastIdDescriptor, ts::DSMCCStreamDescriptorsTable, ts::PAT, ts::CountryAvailabilityDescriptor, ts::TargetIPAddressDescriptor, ts::TargetIPv6AddressDescriptor, ts::TelephoneDescriptor, ts::BAT, ts::SpliceDTMFDescriptor, ts::TargetMACAddressDescriptor, ts::AVCTimingAndHRDDescriptor, ts::DVBAC3Descriptor, ts::J2KVideoDescriptor, ts::StreamEventDescriptor, ts::TerrestrialDeliverySystemDescriptor, ts::ImageIconDescriptor, ts::MessageDescriptor, ts::SVCExtensionDescriptor, ts::ApplicationStorageDescriptor, ts::IPMACGenericStreamLocationDescriptor, ts::MVCExtensionDescriptor, ts::SatelliteDeliverySystemDescriptor, ts::AVCVideoDescriptor, ts::IPMACStreamLocationDescriptor, ts::SpliceTimeDescriptor, ts::SSUEnhancedMessageDescriptor, ts::TargetSmartcardDescriptor, ts::CAIdentifierDescriptor, ts::CueIdentifierDescriptor, ts::DTSDescriptor, ts::GraphicsConstraintsDescriptor, ts::HierarchyDescriptor, ts::IPMACPlatformNameDescriptor, ts::IPMACPlatformProviderNameDescriptor, ts::SSUMessageDescriptor, ts::TargetSerialNumberDescriptor, ts::UpdateDescriptor, ts::VideoStreamDescriptor, ts::ApplicationIconsDescriptor, ts::C2DeliverySystemDescriptor, ts::ComponentDescriptor, ts::DVBJApplicationLocationDescriptor, ts::EASInbandDetailsChannelDescriptor, ts::EASMetadataDescriptor, ts::HEVCTimingAndHRDDescriptor, ts::ISPAccessModeDescriptor, ts::MaximumBitrateDescriptor, ts::PartialTransportStreamDescriptor, ts::ServiceAvailabilityDescriptor, ts::ServiceDescriptor, ts::SSUEventNameDescriptor, ts::SSULocationDescriptor, ts::SSUURIDescriptor, ts::TimeSliceFECIdentifierDescriptor, ts::ApplicationUsageDescriptor, ts::DVBHTMLApplicationBoundaryDescriptor, ts::DVBHTMLApplicationDescriptor, ts::DVBHTMLApplicationLocationDescriptor, ts::IPSignallingDescriptor, ts::S2SatelliteDeliverySystemDescriptor, ts::SpliceAvailDescriptor, ts::ETT, ts::AACDescriptor, ts::CableDeliverySystemDescriptor, ts::CPDescriptor, ts::DataBroadcastDescriptor, ts::DVBAC4Descriptor, ts::DVBJApplicationDescriptor, ts::EacemPreferredNameIdentifierDescriptor, ts::EacemStreamIdentifierDescriptor, ts::NPTEndpointDescriptor, ts::SimpleApplicationBoundaryDescriptor, ts::SimpleApplicationLocationDescriptor, ts::SSUSubgroupAssociationDescriptor, ts::StereoscopicVideoInfoDescriptor, ts::SupplementaryAudioDescriptor, ts::AssociationTagDescriptor, ts::AudioStreamDescriptor, ts::DeferredAssociationTagsDescriptor, ts::DSNGDescriptor, ts::FlexMuxTimingDescriptor, ts::FTAContentManagementDescriptor, ts::PDCDescriptor, ts::RegistrationDescriptor, ts::ServiceIdentifierDescriptor, ts::T2MIDescriptor, ts::URILinkageDescriptor, ts::BouquetNameDescriptor, ts::DCCArrivingRequestDescriptor, ts::DCCDepartingRequestDescriptor, ts::ECMRepetitionRateDescriptor, ts::IBPDescriptor, ts::MetadataSTDDescriptor, ts::MPEG2AACAudioDescriptor, ts::MultiplexBufferUtilizationDescriptor, ts::NetworkNameDescriptor, ts::ServiceMoveDescriptor, ts::ServiceRelocatedDescriptor, ts::ShortSmoothingBufferDescriptor, ts::StreamModeDescriptor, ts::SystemClockDescriptor, ts::TargetBackgroundGridDescriptor, ts::TransportStreamDescriptor, ts::VideoWindowDescriptor, ts::DiscontinuityInformationTable, ts::AdaptationFieldDataDescriptor, ts::AncillaryDataDescriptor, ts::ATSCStuffingDescriptor, ts::CarouselIdentifierDescriptor, ts::ComponentNameDescriptor, ts::CopyrightDescriptor, ts::DTSNeuralDescriptor, ts::DVBStuffingDescriptor, ts::ExtendedChannelNameDescriptor, ts::GenreDescriptor, ts::MPEG2StereoscopicVideoFormatDescriptor, ts::MultiplexBufferDescriptor, ts::PrivateDataIndicatorDescriptor, ts::PrivateDataSpecifierDescriptor, ts::ProtectionMessageDescriptor, ts::RedistributionControlDescriptor, ts::ScramblingDescriptor, ts::SmoothingBufferDescriptor, ts::STDDescriptor, ts::StreamIdentifierDescriptor, ts::TimeShiftedEventDescriptor, ts::TransportProfileDescriptor, ts::TDT, ts::CIAncillaryDataDescriptor, ts::CPIdentifierDescriptor, ts::DataStreamAlignmentDescriptor, ts::DVBTimeShiftedServiceDescriptor, ts::ExternalESIdDescriptor, ts::MPEG4AudioDescriptor, ts::MPEG4VideoDescriptor, ts::SLDescriptor, ts::StereoscopicProgramInfoDescriptor, ts::AFExtensionsDescriptor, and ts::MultilingualComponentDescriptor.

◆ checkXMLName()

bool ts::AbstractSignalization::checkXMLName ( const xml::Element element,
const UChar legacy_name = nullptr 
) const
protectedinherited

Check that an XML element has the right name for this table.

Parameters
[in]elementXML element to check.
[in]legacy_nameIf not null, specifies an alternate legacy name.
Returns
True on success, false on error.

◆ deserializeLanguageCode()

bool ts::AbstractSignalization::deserializeLanguageCode ( UString lang,
const uint8_t *&  data,
size_t &  size 
)
protectedinherited

Deserialize a 3-byte language or country code.

Parameters
[out]langDeserialized language code.
[in,out]dataAddress of memory area. Adjusted to point after the deserialized data.
[in,out]sizeRemaining size in bytes of memory area. Adjusted remove the deserialized data.
Returns
True on success, false on error. On error, the object is invalidated.

◆ deserializeInt()

template<typename INT , typename std::enable_if< std::is_integral< INT >::value >::type * = nullptr>
bool ts::AbstractSignalization::deserializeInt ( INT value,
const uint8_t *&  data,
size_t &  size 
)
protectedinherited

Deserialize an integer.

Template Parameters
INTSome integer type.
Parameters
[out]valueDeserialized integer value.
[in,out]dataAddress of memory area. Adjusted to point after the deserialized data.
[in,out]sizeRemaining size in bytes of memory area. Adjusted remove the deserialized data.
Returns
True on success, false on error. On error, the object is invalidated.

◆ deserializeBool()

bool ts::AbstractSignalization::deserializeBool ( bool &  value,
const uint8_t *&  data,
size_t &  size,
size_t  bit = 0 
)
protectedinherited

Deserialize a one-bit boolean inside one byte.

Parameters
[out]valueDeserialized bool value.
[in,out]dataAddress of memory area. Adjusted to point after the deserialized data (one byte).
[in,out]sizeRemaining size in bytes of memory area. Adjusted remove the deserialized data.
[in]bitBit number of the boolean in the deserialized byte, from 0 (LSB) to 7 (MSB).
Returns
True on success, false on error. On error, the object is invalidated.

The documentation for this class was generated from the following file: