TSDuck v3.46-4930
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::TSPacketStream Class Reference

#include <tsTSPacketStream.h>

Inheritance diagram for ts::TSPacketStream:

Public Member Functions

 TSPacketStream (ReporterInterface &reporter, TSPacketFormat format=TSPacketFormat::AUTODETECT, StreamInterface *stream=nullptr)
virtual ~TSPacketStream ()
TSPacketFormat packetFormat () const
UString packetFormatString () const
size_t packetHeaderSize () const
size_t packetTrailerSize () const
virtual size_t readPackets (TSPacket *buffer, TSPacketMetadata *metadata, size_t max_packets)
virtual PacketCounter readPacketsCount () const
virtual bool writePackets (const TSPacket *buffer, const TSPacketMetadata *metadata, size_t packet_count)
virtual PacketCounter writePacketsCount () const

Static Public Member Functions

static size_t PacketHeaderSize (TSPacketFormat format)
static size_t PacketTrailerSize (TSPacketFormat format)

Static Public Attributes

static constexpr size_t MAX_HEADER_SIZE = ts::TSPacketMetadata::SERIALIZATION_SIZE
static constexpr size_t MAX_TRAILER_SIZE = ts::RS_SIZE

Protected Member Functions

void resetPacketStream (TSPacketFormat format, StreamInterface *stream)

Protected Attributes

PacketCounter _total_read = 0
 Total read packets.
PacketCounter _total_write = 0
 Total written packets.

Detailed Description

Read/write TS packets on a stream.

Constructor & Destructor Documentation

◆ TSPacketStream()

ts::TSPacketStream::TSPacketStream ( ReporterInterface & reporter,
TSPacketFormat format = TSPacketFormat::AUTODETECT,
StreamInterface * stream = nullptr )

Constructor.

Parameters
[in,out]reporterReference to an object providing a Report. This reference is kept in the constructed object instance.
[in]formatInitial packet format.
[in]streamStream read/write interface. Can be null and replaced later.

◆ ~TSPacketStream()

virtual ts::TSPacketStream::~TSPacketStream ( )
virtual

Destructor.

Member Function Documentation

◆ readPackets()

virtual size_t ts::TSPacketStream::readPackets ( TSPacket * buffer,
TSPacketMetadata * metadata,
size_t max_packets )
virtual

Read TS packets from the stream.

Parameters
[out]bufferAddress of reception packet buffer.
[out]metadataOptional packet metadata. If the file format provides time stamps, they are set in the metadata. Ignored if null pointer.
[in]max_packetsSize of buffer in packets. Also size of metadata in number of objects (when specified).
Returns
The actual number of read packets. Returning zero means error or end of stream.

Reimplemented in ts::TSFile, and ts::TSFileInputBuffered.

◆ writePackets()

virtual bool ts::TSPacketStream::writePackets ( const TSPacket * buffer,
const TSPacketMetadata * metadata,
size_t packet_count )
virtual

Write TS packets to the stream.

Parameters
[in]bufferAddress of first packet to write.
[in]metadataOptional packet metadata containing time stamps. If the file format requires time stamps, metadata must not be a null pointer and all packets must have a time stamp. Otherwise, the last written timestamp is repeated.
[in]packet_countNumber of packets to write. Also size of metadata in number of objects (when specified).
Returns
True on success, false on error.

◆ readPacketsCount()

virtual PacketCounter ts::TSPacketStream::readPacketsCount ( ) const
virtual

Get the number of read packets.

Returns
The number of read packets.

Reimplemented in ts::TSFileInputBuffered.

◆ writePacketsCount()

virtual PacketCounter ts::TSPacketStream::writePacketsCount ( ) const
virtual

Get the number of written packets.

Returns
The number of written packets.

◆ PacketHeaderSize()

size_t ts::TSPacketStream::PacketHeaderSize ( TSPacketFormat format)
static

Get the packet header size for a given packet format. This "header" comes before the classical 188-byte TS packet.

Parameters
[in]formatInitial packet format.
Returns
The packet header size in bytes (before the TS packet).

◆ PacketTrailerSize()

size_t ts::TSPacketStream::PacketTrailerSize ( TSPacketFormat format)
static

Get the packet trailer size for a given packet format. This "trailer" comes after the classical 188-byte TS packet.

Parameters
[in]formatInitial packet format.
Returns
The packet trailer size in bytes (before the TS packet).

◆ packetHeaderSize()

size_t ts::TSPacketStream::packetHeaderSize ( ) const
inline

Get the packet header size, based on the packet format of this file. This "header" comes before the classical 188-byte TS packet.

Returns
The packet header size in bytes (before the TS packet).

◆ packetTrailerSize()

size_t ts::TSPacketStream::packetTrailerSize ( ) const
inline

Get the packet trailer size, based on the packet format of this file. This "trailer" comes after the classical 188-byte TS packet.

Returns
The packet trailer size in bytes (before the TS packet).

◆ packetFormat()

TSPacketFormat ts::TSPacketStream::packetFormat ( ) const
inline

Get the file format.

Returns
The file format.

◆ packetFormatString()

UString ts::TSPacketStream::packetFormatString ( ) const
inline

Get the file format as a string.

Returns
The file format as a string.

◆ resetPacketStream()

void ts::TSPacketStream::resetPacketStream ( TSPacketFormat format,
StreamInterface * stream )
protected

Reset the stream format and counters.

Parameters
[in]formatInitial packet format.
[in]streamStream read/write interface.

Member Data Documentation

◆ MAX_HEADER_SIZE

size_t ts::TSPacketStream::MAX_HEADER_SIZE = ts::TSPacketMetadata::SERIALIZATION_SIZE
staticconstexpr

Maximum size in bytes of a packet header for non-TS format. Must be lower than the TS packet size to allow auto-detection on read.

◆ MAX_TRAILER_SIZE

size_t ts::TSPacketStream::MAX_TRAILER_SIZE = ts::RS_SIZE
staticconstexpr

Maximum size in bytes of a packet trailer for non-TS format. Must be lower than the TS packet size to allow auto-detection on read.


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