Tag Parser: TagParser::MatroskaTrack Class Reference

Tag Parser 12.5.2 C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags

Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
TagParser::MatroskaTrack Class Reference

Implementation of TagParser::AbstractTrack for the Matroska container. More...

`#include <matroskatrack.h>`

Inheritance diagram for TagParser::MatroskaTrack:
[legend]
Collaboration diagram for TagParser::MatroskaTrack:
[legend]

## Public Member Functions
| MatroskaTrack (EbmlElement &trackElement)
| Constructs a new track for the specified trackElement.
| ~MatroskaTrack () override
| Destroys the track.
TrackType | type () const override
| Returns the type of the track if known; otherwise returns TrackType::Unspecified.
void | readStatisticsFromTags (const std::vector< std::unique_ptr< MatroskaTag > > &tags, Diagnostics &diag)
| Reads track-specific statistics from the specified tags.
MatroskaTrackHeaderMaker | prepareMakingHeader (Diagnostics &diag) const
| Prepares making header.
void | makeHeader (std::ostream &stream, Diagnostics &diag) const
| Writes header information to the specified stream (makes a "TrackEntry"-element).
Public Member Functions inherited from TagParser::AbstractTrack
virtual | ~AbstractTrack ()
| Destroys the track.
std::istream & | inputStream ()
| Returns the associated input stream.
void | setInputStream (std::istream &stream)
| Assigns another input stream.
std::ostream & | outputStream ()
| Returns the associated output stream.
void | setOutputStream (std::ostream &stream)
| Assigns another output stream.
CppUtilities::BinaryReader & | reader ()
| Returns a binary reader for the associated stream.
CppUtilities::BinaryWriter & | writer ()
| Returns a binary writer for the associated stream.
std::uint64_t | startOffset () const
| Returns the start offset of the track in the associated stream.
TrackFlags | flags () const
| Returns flags (various boolean properties) of this track.
MediaFormat | format () const
| Returns the format of the track if known; otherwise returns MediaFormat::Unknown.
double | version () const
| Returns the version/level of the track if known; otherwise returns 0.
std::string_view | formatName () const
| Returns the format of the track as C-style string if known; otherwise returns the format abbreviation or an empty string.
std::string_view | formatAbbreviation () const
| Returns the a more or less common abbreviation for the format of the track if known; otherwise returns an empty string.
const std::string & | formatId () const
| Returns the format/codec ID.
MediaType | mediaType () const
| Returns the media type if known; otherwise returns MediaType::Other.
std::string_view | mediaTypeName () const
| Returns the string representation of the media type of the track.
std::uint64_t | size () const
| Returns the size in bytes if known; otherwise returns 0.
void | setSize (std::uint64_t size)
| Sets the size in bytes.
std::uint32_t | trackNumber () const
| Returns the track number if known; otherwise returns 0.
void | setTrackNumber (std::uint32_t trackNumber)
| Sets the track number.
std::uint64_t | id () const
| Returns the track ID if known; otherwise returns 0.
void | setId (std::uint64_t id)
| Sets the track ID.
const std::string | name () const
| Returns the track name if known; otherwise returns an empty string.
void | setName (std::string_view name)
| Sets the name.
const CppUtilities::TimeSpan & | duration () const
| Returns the duration if known; otherwise returns a TimeSpan of zero ticks.
double | bitrate () const
| Returns the average bitrate in kbit/s if known; otherwise returns zero.
double | maxBitrate () const
| Returns the maximum bitrate in kbit/s if known; otherwise returns zero.
const CppUtilities::DateTime & | creationTime () const
| Returns the creation time if known; otherwise returns a DateTime of zero ticks.
const CppUtilities::DateTime & | modificationTime () const
| Returns the time of the last modification if known; otherwise returns a DateTime of zero ticks.
const Locale & | locale () const
| Returns the locale of the track if known; otherwise returns an empty locale.
void | setLocale (const Locale &locale)
| Sets the locale of the track.
std::uint32_t | samplingFrequency () const
| Returns the number of samples per second if known; otherwise returns 0.
std::uint32_t | extensionSamplingFrequency () const
| Returns the number of samples per second if known; otherwise returns 0.
std::uint16_t | bitsPerSample () const
| Returns the number of bits per sample; otherwise returns 0.
std::uint16_t | channelCount () const
| Returns the number of channels if known; otherwise returns 0.
std::uint8_t | channelConfig () const
| Returns the channel configuration.
std::string_view | channelConfigString () const
| Returns a string with the channel configuration if available; otherwise returns nullptr.
std::uint8_t | extensionChannelConfig () const
| Returns the extension channel configuration if available; otherwise returns nullptr.
std::string_view | extensionChannelConfigString () const
| Returns a string with the extension channel configuration if available; otherwise returns nullptr.
std::uint64_t | sampleCount () const
| Returns the number of samples/frames if known; otherwise returns 0.
int | quality () const
| Returns the quality if known; otherwise returns 0.
const Size & | pixelSize () const
| Returns the size of the encoded video frames if known; otherwise returns a zero size.
const Size & | displaySize () const
| Returns the size of the video frames to display if known; otherwise returns a zero size.
const Size & | resolution () const
| Returns the resolution if known; otherwise returns a zero size.
const std::string & | compressorName () const
| Returns the compressor name if known; otherwise returns an empty string.
void | setCompressorName (std::string_view compressorName)
| Returns the compressor name if known; otherwise returns an empty string.
std::uint16_t | depth () const
| Returns the bit depth if known; otherwise returns 0.
std::uint32_t | fps () const
| Returns the number of frames per second if known; otherwise returns 0.
std::string_view | chromaFormat () const
| Returns the chroma subsampling format if known; otherwise returns nullptr.
const AspectRatio & | pixelAspectRatio () const
| Returns the pixel aspect ratio (PAR).
bool | isInterlaced () const
| Returns true if the video is interlaced; otherwise returns false.
std::uint32_t | timeScale () const
| Returns the time scale if known; otherwise returns 0.
bool | isEnabled () const
| Returns true if the track is marked as enabled; otherwise returns false.
void | setEnabled (bool enabled)
| Sets whether the track is enabled.
bool | isDefault () const
| Returns true if the track is marked as default; otherwise returns false.
void | setDefault (bool isDefault)
| Sets whether the track is a default track.
bool | isForced () const
| Returns true if the track is marked as forced; otherwise returns false.
void | setForced (bool forced)
| Sets whether the track is forced.
bool | hasLacing () const
| Returns true if the track has lacing; otherwise returns false.
bool | isEncrypted () const
| Returns true if the track is marked as encrypted; otherwise returns false.
std::uint32_t | colorSpace () const
| Returns the color space if known; otherwise returns 0.
const Margin & | cropping () const
| Returns the cropping if known; otherwise returns zero margins.
std::string | label () const
| Returns a label for the track.
std::string | description () const
| Returns a description about the track.
std::string | shortDescription () const
| Returns a short description about the track.
void | parseHeader (Diagnostics &diag, AbortableProgressFeedback &progress)
| Parses technical information about the track from the header.
bool | isHeaderValid () const
| Returns an indication whether the track header is valid.

## Static Public Member Functions
static MediaFormat | codecIdToMediaFormat (const std::string &codecId)
| Returns the MediaFormat for the specified Matroska codec ID.

## Protected Member Functions
void | internalParseHeader (Diagnostics &diag, AbortableProgressFeedback &progress) override
| This method is internally called to parse header information.
Protected Member Functions inherited from TagParser::AbstractTrack
| AbstractTrack (std::istream &inputStream, std::ostream &outputStream, std::uint64_t startOffset)
| Constructs a new track.
| AbstractTrack (std::iostream &stream, std::uint64_t startOffset)
| Constructs a new track.

## Friends
class | MatroskaContainer
class | MatroskaTrackHeaderMaker

## Additional Inherited Members
Protected Attributes inherited from TagParser::AbstractTrack
std::istream * | m_istream
std::ostream * | m_ostream
CppUtilities::BinaryReader | m_reader
CppUtilities::BinaryWriter | m_writer
std::uint64_t | m_startOffset
TrackFlags | m_flags
MediaFormat | m_format
std::string | m_formatId
std::string | m_formatName
MediaType | m_mediaType
double | m_version
std::uint64_t | m_size
std::uint32_t | m_trackNumber
std::uint64_t | m_id
std::string | m_name
CppUtilities::TimeSpan | m_duration
double | m_bitrate
double | m_maxBitrate
CppUtilities::DateTime | m_creationTime
CppUtilities::DateTime | m_modificationTime
Locale | m_locale
std::uint32_t | m_samplingFrequency
std::uint32_t | m_extensionSamplingFrequency
std::uint16_t | m_bitsPerSample
std::uint32_t | m_bytesPerSecond
std::uint16_t | m_channelCount
std::uint8_t | m_channelConfig
std::uint8_t | m_extensionChannelConfig
std::uint16_t | m_chunkSize
std::uint64_t | m_sampleCount
int | m_quality
Size | m_pixelSize
Size | m_displaySize
Size | m_resolution
std::string | m_compressorName
std::uint16_t | m_depth
std::uint32_t | m_fps
std::string_view | m_chromaFormat
AspectRatio | m_pixelAspectRatio
std::uint32_t | m_timeScale
std::uint32_t | m_colorSpace
Margin | m_cropping
FieldOrder | m_fieldOrder
StereoMode | m_stereoMode
AlphaMode | m_alphaMode
DisplayUnit | m_displayUnit
AspectRatioType | m_aspectRatioType
std::unique_ptr< AbstractTrackPrivate > | m_p

## Detailed Description

Implementation of TagParser::AbstractTrack for the Matroska container.

Definition at line 48 of file matroskatrack.h.

## Constructor & Destructor Documentation

## ◆ MatroskaTrack()

TagParser::MatroskaTrack::MatroskaTrack | ( | EbmlElement & | trackElement | ) |

Constructs a new track for the specified trackElement.

Each track element (ID: MatroskaId::TrackEntry) holds header information for one track in the Matroska file.

Definition at line 37 of file matroskatrack.cpp.

## ◆ ~MatroskaTrack()

TagParser::MatroskaTrack::~MatroskaTrack | ( |  | ) |
| override

Destroys the track.

Definition at line 46 of file matroskatrack.cpp.

## Member Function Documentation

## ◆ codecIdToMediaFormat()

MediaFormat TagParser::MatroskaTrack::codecIdToMediaFormat | ( | const std::string & | codecId | ) |
| static

Returns the MediaFormat for the specified Matroska codec ID.

Todo
  Use an std::unordered_map here.

Definition at line 59 of file matroskatrack.cpp.

## ◆ internalParseHeader()

void TagParser::MatroskaTrack::internalParseHeader | ( | Diagnostics & | diag,
|  | AbortableProgressFeedback & | progress )
| overrideprotectedvirtual

This method is internally called to parse header information.

It needs to be implemented when subclassing this class.

Exceptions

  Throws | std::ios_base::failure when an IO error occurs.
  Throws | TagParser::Failure or a derived exception when a parsing error occurs.

Implements TagParser::AbstractTrack.

Definition at line 286 of file matroskatrack.cpp.

## ◆ makeHeader()

void TagParser::MatroskaTrack::makeHeader | ( | std::ostream & | stream,
|  | Diagnostics & | diag ) const
| inline

Writes header information to the specified stream (makes a "TrackEntry"-element).

Exceptions

  Throws | std::ios_base::failure when an IO error occurs.
  Throws | TagParser::Failure or a derived exception when a making error occurs.

See also
  prepareMaking()

Definition at line 98 of file matroskatrack.h.

## ◆ prepareMakingHeader()

MatroskaTrackHeaderMaker TagParser::MatroskaTrack::prepareMakingHeader | ( | Diagnostics & | diag | ) | const
| inline

Prepares making header.

Returns
  Returns a MatroskaTrackHeaderMaker object which can be used to actually make the track header.

Remarks
  The track must NOT be mutated after making is prepared when it is intended to actually make the tag using the make() method of the returned object.

Exceptions

  Throws | TagParser::Failure or a derived exception when a making error occurs.

This method might be useful when it is necessary to know the size of the track header before making it.

See also
  make()

Definition at line 86 of file matroskatrack.h.

## ◆ readStatisticsFromTags()

void TagParser::MatroskaTrack::readStatisticsFromTags | ( | const std::vector< std::unique_ptr< MatroskaTag > > & | tags,
|  | Diagnostics & | diag )

Reads track-specific statistics from the specified tags.

Remarks
  - Those statistics are generated might be generated by some Muxers, eg. mkvmerge 7.0.0 or newer.
  - Only tags targeting the track are considered. Hence the track ID must have been determined before (either by calling parseHeader() or setId()).

See also
  https://github.com/mbunkus/mkvtoolnix/wiki/Automatic-tag-generation for list of track-specific tag fields written by mkvmerge

Definition at line 266 of file matroskatrack.cpp.

## ◆ type()

TrackType TagParser::MatroskaTrack::type | ( |  | ) | const
| overridevirtual

Returns the type of the track if known; otherwise returns TrackType::Unspecified.

Reimplemented from TagParser::AbstractTrack.

Definition at line 50 of file matroskatrack.cpp.

## Friends And Related Symbol Documentation

## ◆ MatroskaContainer

friend class MatroskaContainer
| friend

Definition at line 49 of file matroskatrack.h.

## ◆ MatroskaTrackHeaderMaker

friend class MatroskaTrackHeaderMaker
| friend

Definition at line 50 of file matroskatrack.h.

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

- matroska/matroskatrack.h
- matroska/matroskatrack.cpp