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

#include <tsAbstractHEVCAccessUnit.h>

Inheritance diagram for ts::AbstractHEVCAccessUnit:
Collaboration diagram for ts::AbstractHEVCAccessUnit:

Public Types

using SuperClass = AbstractVideoAccessUnit

Public Member Functions

 AbstractHEVCAccessUnit ()=default
virtual void clear () override
virtual std::ostream & display (std::ostream &stream=std::cout, const UString &margin=UString(), int level=Severity::Info) const =0
virtual bool parse (const uint8_t *, size_t, std::initializer_list< uint32_t >=std::initializer_list< uint32_t >()) override

Public Attributes

uint8_t forbidden_zero_bit = 0
 1 bit
uint8_t nal_unit_type = 0
 6 bits
uint8_t nuh_layer_id = 0
 6 bits
uint8_t nuh_temporal_id_plus1 = 0
 3 bits
size_t rbsp_trailing_bits_count = 0
 rbsp_trailing_bits_count
bool rbsp_trailing_bits_valid = false
 rbsp_trailing_bits_valid
bool valid = false

Protected Member Functions

template<typename INT>
requires std::integral<INT>
void disp (std::ostream &out, const UString &margin, const UChar *name, INT n) const
template<typename INT>
requires std::integral<INT>
void disp (std::ostream &out, const UString &margin, const UChar *name, std::vector< INT > n) const
virtual bool parseBody (AVCParser &parser, std::initializer_list< uint32_t > params=std::initializer_list< uint32_t >())=0
virtual bool parseHeader (const uint8_t *&, size_t &, std::initializer_list< uint32_t >=std::initializer_list< uint32_t >()) override

Detailed Description

Base class for HEVC access units, aka NALunits.

See also
ITU-T Rec. H.265, section 7.3.1

Member Typedef Documentation

◆ SuperClass

Constructor & Destructor Documentation

◆ AbstractHEVCAccessUnit()

ts::AbstractHEVCAccessUnit::AbstractHEVCAccessUnit ( )
default

Constructor.

Member Function Documentation

◆ clear()

virtual void ts::AbstractHEVCAccessUnit::clear ( )
overridevirtual

Clear all values. Should be reimplemented by subclasses. The data are marked invalid.

Reimplemented from ts::AbstractVideoAccessUnit.

Reimplemented in ts::HEVCAccessUnitDelimiter, and ts::HEVCSequenceParameterSet.

◆ parseHeader()

virtual bool ts::AbstractHEVCAccessUnit::parseHeader ( const uint8_t *& addr,
size_t & size,
std::initializer_list< uint32_t > params = std::initializer_list< uint32_t >() )
overrideprotectedvirtual

Parse the header of the access unit. Must be reimplemented by subclasses. The data are marked as valid or invalid.

Parameters
[in,out]addrAddress of the binary data to parse. Adjusted after header.
[in,out]sizeSize in bytes of the binary data to parse. Adjusted as remaining size after header.
[in]paramsAdditional parameters. May be needed by some structures.
Returns
The valid flag.

Implements ts::AbstractVideoAccessUnit.

◆ parse()

virtual bool ts::AbstractVideoAccessUnit::parse ( const uint8_t * addr,
size_t size,
std::initializer_list< uint32_t > params = std::initializer_list< uint32_t >() )
overridevirtualinherited

Parse a memory area containing binary video data of the expected type. Must be reimplemented by subclasses. The data are marked as valid or invalid.

Parameters
[in]addrAddress of the binary data to parse.
[in]sizeSize in bytes of the binary data to parse.
[in]paramsAdditional parameters. May be needed by some structures.
Returns
The valid flag.

Implements ts::AbstractVideoData.

◆ parseBody()

virtual bool ts::AbstractVideoAccessUnit::parseBody ( AVCParser & parser,
std::initializer_list< uint32_t > params = std::initializer_list< uint32_t >() )
protectedpure virtualinherited

Parse the body of the access unit up to but not including the rbsp_trailing_bits. Must be reimplemented by subclasses. The data are marked as valid or invalid.

Parameters
[in,out]parserThe parser of an AVC-like video stream.
[in]paramsAdditional parameters. May be needed by some structures.
Returns
The valid flag.

Implemented in ts::AVCAccessUnitDelimiter, ts::AVCSequenceParameterSet, ts::HEVCAccessUnitDelimiter, ts::HEVCSequenceParameterSet, and ts::VVCAccessUnitDelimiter.

◆ disp() [1/2]

template<typename INT>
requires std::integral<INT>
void ts::AbstractVideoData::disp ( std::ostream & out,
const UString & margin,
const UChar * name,
INT n ) const
inlineprotectedinherited

Display helper for subclasses. Display an integer value.

Template Parameters
INTAn integer type.
Parameters
[in,out]outThe stream where to print the content.
[in]marginThe prefix string on each line.
[in]nameA name to display for the value.
[in]nThe integer value to display.

◆ disp() [2/2]

template<typename INT>
requires std::integral<INT>
void ts::AbstractVideoData::disp ( std::ostream & out,
const UString & margin,
const UChar * name,
std::vector< INT > n ) const
inlineprotectedinherited

Display helper for subclasses. Display a vector of integer value.

Template Parameters
INTAn integer type.
Parameters
[in,out]outThe stream where to print the content.
[in]marginThe prefix string on each line.
[in]nameA name to display for the value.
[in]nThe integer values to display.

◆ display()

virtual std::ostream & ts::DisplayInterface::display ( std::ostream & stream = std::cout,
const UString & margin = UString(),
int level = Severity::Info ) const
pure virtualinherited

Display the content of this object to a stream.

Parameters
[in,out]streamThe stream where to print the content. Standard output by default.
[in]marginThe prefix string on each line, empty by default.
[in]levelSeverity level (for instance, Severity::Info or Severity::Debug may display more information).
Returns
A reference to stream.

Implemented in ts::AVCAccessUnitDelimiter, ts::AVCHRDParameters, ts::AVCSequenceParameterSet, ts::AVCVUIParameters, ts::HEVCAccessUnitDelimiter, ts::HEVCHRDParameters, ts::HEVCProfileTierLevel, ts::HEVCScalingListData, ts::HEVCSequenceParameterSet, ts::HEVCShortTermReferencePictureSetList, ts::HEVCVUIParameters, ts::ModulationArgs, ts::SignalState, and ts::VVCAccessUnitDelimiter.

Member Data Documentation

◆ valid

bool ts::AbstractVideoData::valid = false
inherited

Valid flag. Other fields are significant only if valid is true.


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