TSDuck Version 3.16-1064 (TSDuck - The MPEG Transport Stream Toolkit)
ts::AbstractLongTable Class Referenceabstract

Abstract base class for MPEG PSI/SI tables with long sections. More...

Inheritance diagram for ts::AbstractLongTable:
Collaboration diagram for ts::AbstractLongTable:

Public Member Functions

virtual void deserialize (const BinaryTable &bin, const DVBCharset *charset=nullptr)=0
 This abstract method deserializes a binary table. More...
 
virtual void fromXML (const xml::Element *element)=0
 This abstract converts an XML structure to a table or descriptor. More...
 
void invalidate ()
 Invalidate this object. More...
 
bool isValid () const
 Check if this object is valid. More...
 
virtual void serialize (BinaryTable &bin, const DVBCharset *charset=nullptr) const =0
 This abstract method serializes a table. More...
 
TID tableId () const
 Get the table_id. More...
 
virtual xml::ElementtoXML (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...
 

Public Attributes

bool is_current
 True if table is current, false if table is next.
 
uint8_t version
 Table version number.
 

Protected Member Functions

 AbstractLongTable (TID tid, const UChar *xml_name, uint8_t version_=0, bool is_current_=true)
 Constructor for subclasses. More...
 
virtual void buildXML (xml::Element *root) const
 Helper method to convert this object to XML. More...
 
bool checkXMLName (const xml::Element *element) const
 Check that an XML element has the right name for this table. More...
 

Static Protected Member Functions

static bool SerializeFixedLength (ByteBlock &bb, const UString &str, const size_t size, const DVBCharset *charset=nullptr)
 This static method serializes a DVB string with a required fixed size. More...
 
static bool SerializeLanguageCode (ByteBlock &bb, const UString &str, const DVBCharset *charset=nullptr)
 This abstract method serializes a 3-byte language or country code. More...
 

Protected Attributes

bool _is_valid
 It is the responsibility of the subclasses to set the valid flag.
 
TID _table_id
 The table id 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 tables with long sections.

Constructor & Destructor Documentation

◆ AbstractLongTable()

ts::AbstractLongTable::AbstractLongTable ( TID  tid,
const UChar xml_name,
uint8_t  version_ = 0,
bool  is_current_ = true 
)
inlineprotected

Constructor for subclasses.

Parameters
[in]tidTable id.
[in]xml_nameTable name, as used in XML structures.
[in]version_Table version number.
[in]is_current_True if table is current, false if table is next.

Member Function Documentation

◆ tableId()

TID ts::AbstractTable::tableId ( ) const
inlineinherited

Get the table_id.

Returns
The table_id.

◆ serialize()

virtual void ts::AbstractTable::serialize ( BinaryTable bin,
const DVBCharset charset = nullptr 
) const
pure virtualinherited

This abstract method serializes a table.

Parameters
[out]binA binary table object. Its content is replaced with a binary representation of this object.
[in]charsetIf not zero, default character set to use.

Implemented in ts::SDT, ts::EIT, ts::PMT, ts::INT, ts::AIT, ts::SelectionInformationTable, ts::RST, ts::TOT, ts::SpliceInformationTable, ts::AbstractTransportListTable, ts::PAT, ts::DiscontinuityInformationTable, ts::TDT, and ts::AbstractDescriptorsTable.

◆ deserialize()

virtual void ts::AbstractTable::deserialize ( const BinaryTable bin,
const DVBCharset charset = nullptr 
)
pure virtualinherited

This abstract method deserializes a binary table.

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

Parameters
[in]binA binary table to interpret according to the table subclass.
[in]charsetIf not zero, character set to use without explicit table code.

Implemented in ts::SDT, ts::EIT, ts::PMT, ts::INT, ts::AIT, ts::SelectionInformationTable, ts::RST, ts::TOT, ts::SpliceInformationTable, ts::AbstractTransportListTable, ts::PAT, ts::DiscontinuityInformationTable, ts::TDT, and ts::AbstractDescriptorsTable.

◆ 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 ( 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 buidlXML().

Parameters
[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 ( 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]elementXML element to convert.

Implemented in ts::SDT, ts::EIT, ts::PMT, ts::LinkageDescriptor, ts::TeletextDescriptor, ts::SSULinkageDescriptor, ts::TransportProtocolDescriptor, ts::SpliceInsert, ts::SSUDataBroadcastIdDescriptor, ts::INT, ts::SpliceSchedule, ts::VBIDataDescriptor, ts::CADescriptor, ts::NPTReferenceDescriptor, ts::AIT, ts::LogicalChannelNumberDescriptor, ts::HDSimulcastLogicalChannelDescriptor, ts::SelectionInformationTable, ts::EutelsatChannelNumberDescriptor, ts::ISO639LanguageDescriptor, ts::ParentalRatingDescriptor, ts::ServiceListDescriptor, ts::SubtitlingDescriptor, ts::ExternalApplicationAuthorizationDescriptor, ts::SpliceSegmentationDescriptor, ts::DIILocationDescriptor, ts::ApplicationRecordingDescriptor, ts::RST, ts::ApplicationSignallingDescriptor, ts::ExtendedEventDescriptor, ts::NIT, ts::TargetIPSourceSlashDescriptor, ts::TargetIPv6SourceSlashDescriptor, ts::PrefetchDescriptor, ts::NVODReferenceDescriptor, ts::TOT, ts::LocalTimeOffsetDescriptor, ts::SpliceInformationTable, ts::TargetIPSlashDescriptor, ts::TargetIPv6SlashDescriptor, ts::TargetMACAddressRangeDescriptor, ts::ApplicationDescriptor, ts::MultilingualServiceNameDescriptor, ts::ShortEventDescriptor, ts::EacemPreferredNameListDescriptor, ts::HEVCVideoDescriptor, ts::EnhancedAC3Descriptor, ts::DataBroadcastIdDescriptor, ts::PAT, ts::AbstractMultilingualDescriptor, ts::BAT, ts::ContentDescriptor, ts::CountryAvailabilityDescriptor, ts::TargetIPAddressDescriptor, ts::TargetIPv6AddressDescriptor, ts::SpliceDTMFDescriptor, ts::TargetMACAddressDescriptor, ts::AC3Descriptor, ts::AVCTimingAndHRDDescriptor, ts::AVCVideoDescriptor, ts::TerrestrialDeliverySystemDescriptor, ts::MessageDescriptor, ts::ApplicationStorageDescriptor, ts::IPMACGenericStreamLocationDescriptor, ts::IPMACStreamLocationDescriptor, ts::SatelliteDeliverySystemDescriptor, ts::SpliceTimeDescriptor, ts::TargetSmartcardDescriptor, ts::CAIdentifierDescriptor, ts::CueIdentifierDescriptor, ts::DTSDescriptor, ts::GraphicsConstraintsDescriptor, ts::HEVCTimingAndHRDDescriptor, ts::HierarchyDescriptor, ts::IPMACPlatformNameDescriptor, ts::IPMACPlatformProviderNameDescriptor, ts::TargetSerialNumberDescriptor, ts::VideoStreamDescriptor, ts::ApplicationIconsDescriptor, ts::ComponentDescriptor, ts::DSMCCStreamDescriptorsTable, ts::DVBJApplicationLocationDescriptor, ts::ISPAccessModeDescriptor, ts::MaximumBitrateDescriptor, ts::PartialTransportStreamDescriptor, ts::ServiceAvailabilityDescriptor, ts::ServiceDescriptor, ts::TimeSliceFECIdentifierDescriptor, ts::ApplicationUsageDescriptor, ts::DVBHTMLApplicationBoundaryDescriptor, ts::DVBHTMLApplicationDescriptor, ts::DVBHTMLApplicationLocationDescriptor, ts::IPSignallingDescriptor, ts::S2SatelliteDeliverySystemDescriptor, ts::SpliceAvailDescriptor, ts::StreamEventDescriptor, ts::AACDescriptor, ts::AC4Descriptor, ts::CableDeliverySystemDescriptor, ts::CPDescriptor, ts::DataBroadcastDescriptor, ts::DVBJApplicationDescriptor, ts::EacemPreferredNameIdentifierDescriptor, ts::EacemStreamIdentifierDescriptor, ts::NPTEndpointDescriptor, ts::SimpleApplicationBoundaryDescriptor, ts::SimpleApplicationLocationDescriptor, ts::SupplementaryAudioDescriptor, ts::AssociationTagDescriptor, ts::AudioStreamDescriptor, ts::DeferredAssociationTagsDescriptor, ts::RegistrationDescriptor, ts::ServiceIdentifierDescriptor, ts::T2MIDescriptor, ts::BouquetNameDescriptor, ts::DiscontinuityInformationTable, ts::ECMRepetitionRateDescriptor, ts::IBPDescriptor, ts::MultiplexBufferUtilizationDescriptor, ts::NetworkNameDescriptor, ts::ServiceMoveDescriptor, ts::ServiceRelocatedDescriptor, ts::StreamModeDescriptor, ts::SystemClockDescriptor, ts::TargetBackgroundGridDescriptor, ts::TransportStreamDescriptor, ts::VideoWindowDescriptor, ts::AdaptationFieldDataDescriptor, ts::AncillaryDataDescriptor, ts::CarouselIdentifierDescriptor, ts::CopyrightDescriptor, ts::DTSNeuralDescriptor, ts::PrivateDataIndicatorDescriptor, ts::PrivateDataSpecifierDescriptor, ts::ScramblingDescriptor, ts::SmoothingBufferDescriptor, ts::STDDescriptor, ts::StreamIdentifierDescriptor, ts::StuffingDescriptor, ts::TDT, ts::TimeShiftedEventDescriptor, ts::CIAncillaryDataDescriptor, ts::CPIdentifierDescriptor, ts::DataStreamAlignmentDescriptor, ts::ExternalESIdDescriptor, ts::MPEG4AudioDescriptor, ts::MPEG4VideoDescriptor, ts::SLDescriptor, ts::TimeShiftedServiceDescriptor, ts::MultilingualComponentDescriptor, and ts::AbstractDescriptorsTable.

◆ buildXML()

virtual void ts::AbstractSignalization::buildXML ( xml::Element root) const
inlineprotectedvirtualinherited

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.

Reimplemented in ts::SDT, ts::EIT, ts::PMT, ts::LinkageDescriptor, ts::TeletextDescriptor, ts::TransportProtocolDescriptor, ts::SpliceInsert, ts::INT, ts::SpliceSchedule, ts::VBIDataDescriptor, ts::CADescriptor, ts::NPTReferenceDescriptor, ts::AIT, ts::LogicalChannelNumberDescriptor, ts::HDSimulcastLogicalChannelDescriptor, ts::SelectionInformationTable, ts::EutelsatChannelNumberDescriptor, ts::ISO639LanguageDescriptor, ts::ParentalRatingDescriptor, ts::ServiceListDescriptor, ts::SubtitlingDescriptor, ts::ExternalApplicationAuthorizationDescriptor, ts::SpliceSegmentationDescriptor, ts::DIILocationDescriptor, ts::ApplicationRecordingDescriptor, ts::RST, ts::ApplicationSignallingDescriptor, ts::ExtendedEventDescriptor, ts::NIT, ts::TargetIPSourceSlashDescriptor, ts::TargetIPv6SourceSlashDescriptor, ts::PrefetchDescriptor, ts::NVODReferenceDescriptor, ts::TOT, ts::LocalTimeOffsetDescriptor, ts::SpliceInformationTable, ts::TargetIPSlashDescriptor, ts::TargetIPv6SlashDescriptor, ts::TargetMACAddressRangeDescriptor, ts::ApplicationDescriptor, ts::MultilingualServiceNameDescriptor, ts::ShortEventDescriptor, ts::EacemPreferredNameListDescriptor, ts::HEVCVideoDescriptor, ts::EnhancedAC3Descriptor, ts::DataBroadcastIdDescriptor, ts::PAT, ts::AbstractMultilingualDescriptor, ts::BAT, ts::ContentDescriptor, ts::CountryAvailabilityDescriptor, ts::TargetIPAddressDescriptor, ts::TargetIPv6AddressDescriptor, ts::SpliceDTMFDescriptor, ts::TargetMACAddressDescriptor, ts::AC3Descriptor, ts::AVCTimingAndHRDDescriptor, ts::AVCVideoDescriptor, ts::TerrestrialDeliverySystemDescriptor, ts::MessageDescriptor, ts::ApplicationStorageDescriptor, ts::IPMACGenericStreamLocationDescriptor, ts::IPMACStreamLocationDescriptor, ts::SatelliteDeliverySystemDescriptor, ts::SpliceTimeDescriptor, ts::TargetSmartcardDescriptor, ts::CAIdentifierDescriptor, ts::CueIdentifierDescriptor, ts::DTSDescriptor, ts::GraphicsConstraintsDescriptor, ts::HEVCTimingAndHRDDescriptor, ts::HierarchyDescriptor, ts::IPMACPlatformNameDescriptor, ts::IPMACPlatformProviderNameDescriptor, ts::TargetSerialNumberDescriptor, ts::VideoStreamDescriptor, ts::ApplicationIconsDescriptor, ts::ComponentDescriptor, ts::DSMCCStreamDescriptorsTable, ts::DVBJApplicationLocationDescriptor, ts::ISPAccessModeDescriptor, ts::MaximumBitrateDescriptor, ts::PartialTransportStreamDescriptor, ts::ServiceAvailabilityDescriptor, ts::ServiceDescriptor, ts::TimeSliceFECIdentifierDescriptor, ts::ApplicationUsageDescriptor, ts::DVBHTMLApplicationBoundaryDescriptor, ts::DVBHTMLApplicationDescriptor, ts::DVBHTMLApplicationLocationDescriptor, ts::IPSignallingDescriptor, ts::S2SatelliteDeliverySystemDescriptor, ts::SpliceAvailDescriptor, ts::StreamEventDescriptor, ts::AACDescriptor, ts::AC4Descriptor, ts::CableDeliverySystemDescriptor, ts::CPDescriptor, ts::DataBroadcastDescriptor, ts::DVBJApplicationDescriptor, ts::EacemPreferredNameIdentifierDescriptor, ts::EacemStreamIdentifierDescriptor, ts::NPTEndpointDescriptor, ts::SimpleApplicationBoundaryDescriptor, ts::SimpleApplicationLocationDescriptor, ts::SupplementaryAudioDescriptor, ts::AssociationTagDescriptor, ts::AudioStreamDescriptor, ts::DeferredAssociationTagsDescriptor, ts::RegistrationDescriptor, ts::ServiceIdentifierDescriptor, ts::T2MIDescriptor, ts::BouquetNameDescriptor, ts::DiscontinuityInformationTable, ts::ECMRepetitionRateDescriptor, ts::IBPDescriptor, ts::MultiplexBufferUtilizationDescriptor, ts::NetworkNameDescriptor, ts::ServiceMoveDescriptor, ts::ServiceRelocatedDescriptor, ts::StreamModeDescriptor, ts::SystemClockDescriptor, ts::TargetBackgroundGridDescriptor, ts::TransportStreamDescriptor, ts::VideoWindowDescriptor, ts::AdaptationFieldDataDescriptor, ts::AncillaryDataDescriptor, ts::CarouselIdentifierDescriptor, ts::CopyrightDescriptor, ts::DTSNeuralDescriptor, ts::PrivateDataIndicatorDescriptor, ts::PrivateDataSpecifierDescriptor, ts::ScramblingDescriptor, ts::SmoothingBufferDescriptor, ts::STDDescriptor, ts::StreamIdentifierDescriptor, ts::StuffingDescriptor, ts::TDT, ts::TimeShiftedEventDescriptor, ts::CIAncillaryDataDescriptor, ts::CPIdentifierDescriptor, ts::DataStreamAlignmentDescriptor, ts::ExternalESIdDescriptor, ts::MPEG4AudioDescriptor, ts::MPEG4VideoDescriptor, ts::SLDescriptor, ts::TimeShiftedServiceDescriptor, ts::MultilingualComponentDescriptor, and ts::AbstractDescriptorsTable.

◆ checkXMLName()

bool ts::AbstractSignalization::checkXMLName ( const xml::Element element) const
protectedinherited

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

Parameters
[in]elementXML element to check.
Returns
True on success, false on error.

◆ SerializeFixedLength()

static bool ts::AbstractSignalization::SerializeFixedLength ( ByteBlock bb,
const UString str,
const size_t  size,
const DVBCharset charset = nullptr 
)
staticprotectedinherited

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

Parameters
[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.
[in]charsetIf not zero, default character set to use.
Returns
True if the size has the required length and has been serialized.

◆ SerializeLanguageCode()

static bool ts::AbstractSignalization::SerializeLanguageCode ( ByteBlock bb,
const UString str,
const DVBCharset charset = nullptr 
)
inlinestaticprotectedinherited

This abstract 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]charsetIf not zero, default character set to use.
Returns
True if the size has the required length and has been serialized.

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