![]() |
TSDuck v3.41-4262
MPEG Transport Stream Toolkit
|
Base class for all kinds of demuxed data. More...
#include <tsDemuxedData.h>
Public Types | |
using | SuperClass = DataBlock<> |
Explicit reference to superclass. | |
Public Member Functions | |
DemuxedData (const ByteBlock &content, PID source_pid=PID_NULL) | |
Constructor from full binary content. | |
DemuxedData (const ByteBlockPtr &content_ptr, PID source_pid=PID_NULL) | |
Constructor from full binary content. | |
DemuxedData (const DemuxedData &other, ShareMode mode) | |
Copy constructor. | |
DemuxedData (const void *content, size_t content_size, PID source_pid=PID_NULL) | |
Constructor from full binary content. | |
DemuxedData (DemuxedData &&other) noexcept | |
Move constructor. | |
DemuxedData (PID source_pid=PID_NULL) | |
Default constructor. | |
virtual | ~DemuxedData () override |
Virtual destructor. | |
const UString & | attribute () const |
Get the generic user-defined "attribute" string of the object. | |
virtual void | clear () override |
Clear data content. | |
virtual const uint8_t * | content () const |
Access to the full binary content of the data. | |
DataBlock & | copy (const DataBlock &other) |
Duplication. | |
DemuxedData & | copy (const DemuxedData &other) |
Duplication. | |
PacketCounter | firstTSPacketIndex () const |
Index of first TS packet of the data in the demultiplexed stream. | |
virtual bool | isValid () const |
Check if the data structure has valid content. | |
PacketCounter | lastTSPacketIndex () const |
Index of last TS packet of the data in the demultiplexed stream. | |
bool | matchContent (const ByteBlock &pattern, const ByteBlock &mask=ByteBlock()) const |
Check if the start of the data matches a given pattern. | |
DemuxedData & | operator= (const DemuxedData &other) |
Assignment operator. | |
DemuxedData & | operator= (DemuxedData &&other) noexcept |
Move assignment operator. | |
bool | operator== (const DataBlock &other) const |
Equality operator. | |
bool | operator== (const DemuxedData &other) const |
Equality operator. | |
size_t | rawDataSize () const |
Size of the complete binary raw data containing the logical structure. | |
void | reload (const ByteBlock &content) |
Reload from full binary content. | |
virtual void | reload (const ByteBlock &content, PID source_pid=PID_NULL) |
Reload from full binary content. | |
void | reload (const ByteBlockPtr &content_ptr) |
Reload from full binary content. | |
virtual void | reload (const ByteBlockPtr &content_ptr, PID source_pid=PID_NULL) |
Reload from full binary content. | |
void | reload (const void *content, size_t content_size) |
Reload from full binary content. | |
virtual void | reload (const void *content, size_t content_size, PID source_pid=PID_NULL) |
Reload from full binary content. | |
void | setAttribute (const UString &attr) |
Set a generic user-defined string as "attribute" of the object. | |
void | setFirstTSPacketIndex (PacketCounter i) |
Set the first TS packet of the data in the demultiplexed stream. | |
void | setLastTSPacketIndex (PacketCounter i) |
Set the last TS packet of the data in the demultiplexed stream. | |
void | setSourcePID (PID pid) |
Set the source PID. | |
virtual size_t | size () const |
Size of the logical binary content of the data. | |
PID | sourcePID () const |
Get the source PID. | |
Static Public Member Functions | |
static size_t | GetLengthField (const void *content, size_t content_size) |
Static method to extract the content of the length field. | |
static bool | ValidateLengthField (const void *content, size_t content_size, bool allow_extra_data) |
Static method to validate the content of the length field. | |
Static Public Attributes | |
static constexpr size_t | AFTER_LEN_BYTE_OFFSET = LEN_SIZE == 0 ? 0 : (LEN_OFFSET + LEN_SIZE + 7) / 8 |
Offset in bytes of the next byte after the length field. | |
static constexpr size_t | LEN_BIT_OFFSET = LEN_SIZE == 0 ? 0 : LEN_OFFSET |
Offset in bits of the length field from the beginning of the structure. | |
static constexpr size_t | LEN_BIT_SIZE = LEN_SIZE |
Size in bits of the length field. | |
static constexpr bool | UNBOUNDED_IS_ALLOWED = UNBOUNDED_ALLOWED |
If true, the length field allows zero as an "unbounded" value. | |
Protected Member Functions | |
void | rwAppend (const void *data, size_t dsize) |
Append raw data to the full binary content of the data for subclasses. | |
uint8_t * | rwContent () |
Read/write access to the full binary content of the data for subclasses. | |
void | rwResize (size_t s) |
Resize the full binary content of the data for subclasses. | |
Base class for all kinds of demuxed data.
Default constructor.
[in] | source_pid | PID from which the packet was read. |
ts::DemuxedData::DemuxedData | ( | const DemuxedData & | other, |
ShareMode | mode | ||
) |
Copy constructor.
[in] | other | Another instance to copy. |
[in] | mode | The data are either shared (ShareMode::SHARE) between the two instances or duplicated (ShareMode::COPY). |
|
noexcept |
Move constructor.
[in,out] | other | Another instance to move. |
ts::DemuxedData::DemuxedData | ( | const void * | content, |
size_t | content_size, | ||
PID | source_pid = PID_NULL |
||
) |
Constructor from full binary content.
[in] | content | Address of the binary data. |
[in] | content_size | Size in bytes of the data. |
[in] | source_pid | PID from which the data was read. |
Constructor from full binary content.
[in] | content | Binary packet data. |
[in] | source_pid | PID from which the packet was read. |
ts::DemuxedData::DemuxedData | ( | const ByteBlockPtr & | content_ptr, |
PID | source_pid = PID_NULL |
||
) |
Constructor from full binary content.
[in] | content_ptr | Safe pointer to the binary data. The content is referenced, and thus shared. Do not modify the referenced ByteBlock from outside the DemuxedData. |
[in] | source_pid | PID from which the data were read. |
|
overridevirtual |
Clear data content.
Reimplemented from ts::DataBlock< LEN_OFFSET, LEN_SIZE, UNBOUNDED_ALLOWED >.
Reimplemented in ts::PESPacket, ts::Section, and ts::T2MIPacket.
|
virtual |
Reload from full binary content.
[in] | content | Address of the binary packet data. |
[in] | content_size | Size in bytes of the packet. |
[in] | source_pid | PID from which the data were read. |
Reimplemented in ts::PESPacket, ts::Section, and ts::T2MIPacket.
|
virtual |
Reload from full binary content.
[in] | content | Binary packet data. |
[in] | source_pid | PID from which the data were read. |
Reimplemented in ts::PESPacket, ts::Section, and ts::T2MIPacket.
|
virtual |
Reload from full binary content.
[in] | content_ptr | Safe pointer to the binary packet data. The content is referenced, and thus shared. Do not modify the referenced ByteBlock from outside the DemuxedData. |
[in] | source_pid | PID from which the data were read. |
Reimplemented in ts::PESPacket, ts::Section, and ts::T2MIPacket.
DemuxedData & ts::DemuxedData::operator= | ( | const DemuxedData & | other | ) |
Assignment operator.
The packets are referenced, and thus shared between the two packet objects.
[in] | other | Other packet to assign to this object. |
|
noexcept |
Move assignment operator.
[in,out] | other | Other packet to assign to this object. |
DemuxedData & ts::DemuxedData::copy | ( | const DemuxedData & | other | ) |
Duplication.
Similar to assignment but the data are duplicated.
[in] | other | Other data to duplicate into this object. |
bool ts::DemuxedData::operator== | ( | const DemuxedData & | other | ) | const |
Equality operator.
The source PID's are ignored, only the data contents are compared.
[in] | other | Other packet to compare. |
|
inline |
Get the source PID.
|
inline |
Set the source PID.
[in] | pid | The source PID. |
|
inline |
Index of first TS packet of the data in the demultiplexed stream.
Usually valid only if the data were extracted by a demux.
|
inline |
Index of last TS packet of the data in the demultiplexed stream.
Usually valid only if the data were extracted by a demux.
|
inline |
Set the first TS packet of the data in the demultiplexed stream.
[in] | i | The first TS packet of the data in the demultiplexed stream. |
|
inline |
Set the last TS packet of the data in the demultiplexed stream.
[in] | i | The last TS packet of the data in the demultiplexed stream. |
|
inline |
Set a generic user-defined string as "attribute" of the object.
The semantics of this attribute string is not defined. It is used by the application. The attribute string can be found in the <metadata>
structure of the XML representation of a table.
[in] | attr | Generic string to set as attribute. |
|
inline |
Get the generic user-defined "attribute" string of the object.
|
virtualinherited |
Check if the data structure has valid content.
The base implementation only checks that the binary data are allocated. The various constructors or methods which replace the binary content already check the validity of the length field, when there is one. Subclasses may override this method with additional checks.
Reimplemented in ts::PESPacket, ts::Section, and ts::T2MIPacket.
|
inherited |
Reload from full binary content.
[in] | content | Address of the binary packet data. |
[in] | content_size | Size in bytes of the packet. |
|
inherited |
Reload from full binary content.
[in] | content | Binary packet data. The content is copied into a new byte block. |
|
inherited |
|
inherited |
Duplication.
Similar to assignment but the data are duplicated.
[in] | other | Other data to duplicate into this object. |
|
inherited |
Equality operator.
The source PID's are ignored, only the data contents are compared.
[in] | other | Other packet to compare. |
|
virtualinherited |
Access to the full binary content of the data.
Do not modify content.
|
virtualinherited |
Size of the logical binary content of the data.
For subclasses of DataBlock, this is the logical size of the data structure inside the DataBlock blob.
Reimplemented in ts::PESPacket.
|
inlineinherited |
Size of the complete binary raw data containing the logical structure.
Non-virtual method, always return the same result.
|
inherited |
Check if the start of the data matches a given pattern.
[in] | pattern | A byte block to compare with the start of the data. |
[in] | mask | Optional mask to select meaningful bits in pattern. |
|
staticinherited |
Static method to extract the content of the length field.
[in] | content | Address of the binary data. Can be the null pointer. |
[in] | content_size | Size in bytes of the data. |
|
staticinherited |
Static method to validate the content of the length field.
[in] | content | Address of the binary data. Can be the null pointer. |
[in] | content_size | Size in bytes of the data. |
[in] | allow_extra_data | If true, additional data are allowed after the declared length. |
|
inlineprotectedinherited |
Read/write access to the full binary content of the data for subclasses.
|
protectedinherited |
Resize the full binary content of the data for subclasses.
[in] | s | New size in bytes of the full binary content of the data. |
|
protectedinherited |
Append raw data to the full binary content of the data for subclasses.
[in] | data | Address of the new area to append. |
[in] | dsize | Size of the area to append. |
|
staticconstexprinherited |
Size in bits of the length field.
If zero, there is no length field.
|
staticconstexprinherited |
Offset in bytes of the next byte after the length field.
Zero if there is no length field.