StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
StormByte::Multimedia::Stream Class Reference

Public media stream snapshot. More...

#include <StormByte/multimedia/stream.hxx>

Public Types

using Properties = std::variant<std::monostate, Property::Video, Property::Audio>
 Per-stream typed properties.

Public Member Functions

 Stream (const Stream &)=default
 Copy constructor.
 Stream (Stream &&)=default
 Move constructor.
 ~Stream ()=default
 Destructor.
Stream & operator= (const Stream &)=delete
 Copy assignment (deleted: Codec is a reference).
Stream & operator= (Stream &&)=delete
 Move assignment (deleted: Codec is a reference).
int Index () const noexcept
 Container stream index (avformat).
const class Codec & Codec () const noexcept
 Codec of this stream.
Type Type () const noexcept
 Media kind of the codec.
const Metadata::Stream & Metadata () const noexcept
 Per-stream tags captured at Open.
const std::optional< Property::Duration > & Duration () const noexcept
 Stream duration.
const Property::Video * Video () const noexcept
 Video properties when this stream is video.
const Property::Audio * Audio () const noexcept
 Audio properties when this stream is audio.

Friends

class File

Detailed Description

Public media stream snapshot.

One media stream: registry Codec, duration, properties and tags.

Copies share the same Codec instance. The Codec outlives every Stream. Assignment is deleted because Codec is held by reference.

Member Typedef Documentation

◆ Properties

Per-stream typed properties.

Constructor & Destructor Documentation

◆ Stream() [1/2]

StormByte::Multimedia::Stream::Stream ( const Stream & )
default

Copy constructor.

◆ Stream() [2/2]

StormByte::Multimedia::Stream::Stream ( Stream && )
default

Move constructor.

◆ ~Stream()

StormByte::Multimedia::Stream::~Stream ( )
default

Destructor.

Member Function Documentation

◆ Audio()

const Property::Audio * StormByte::Multimedia::Stream::Audio ( ) const
inlinenoexcept

Audio properties when this stream is audio.

Returns
Pointer to properties, or nullptr.

◆ Codec()

const class Codec & StormByte::Multimedia::Stream::Codec ( ) const
inlinenoexcept

Codec of this stream.

Returns
Registry codec.

◆ Duration()

const std::optional< Property::Duration > & StormByte::Multimedia::Stream::Duration ( ) const
inlinenoexcept

Stream duration.

Returns
Duration, or empty if unknown.

Header value from Open, or a value filled by File::Duration() after a packet scan. Empty if it cannot be determined.

◆ Index()

int StormByte::Multimedia::Stream::Index ( ) const
inlinenoexcept

Container stream index (avformat).

Not the position in File::Streams().

Returns
Index used by packets and Decoder.

◆ Metadata()

const Metadata::Stream & StormByte::Multimedia::Stream::Metadata ( ) const
inlinenoexcept

Per-stream tags captured at Open.

Returns
Metadata snapshot.

◆ operator=() [1/2]

Stream & StormByte::Multimedia::Stream::operator= ( const Stream & )
delete

Copy assignment (deleted: Codec is a reference).

Returns
*this.

◆ operator=() [2/2]

Stream & StormByte::Multimedia::Stream::operator= ( Stream && )
delete

Move assignment (deleted: Codec is a reference).

Returns
*this.

◆ Type()

Type StormByte::Multimedia::Stream::Type ( ) const
inlinenoexcept

Media kind of the codec.

Returns
Audio, Video, Subtitle, Attachment or Unknown.

◆ Video()

const Property::Video * StormByte::Multimedia::Stream::Video ( ) const
inlinenoexcept

Video properties when this stream is video.

Returns
Pointer to properties, or nullptr.

◆ File

friend class File
friend

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