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::FFmpeg::AVDecoder Class Reference

RAII decoder context with optional BSF pipeline. More...

#include <StormByte/multimedia/ffmpeg/AVDecoder.hxx>

Inheritance diagram for StormByte::Multimedia::FFmpeg::AVDecoder:
Collaboration diagram for StormByte::Multimedia::FFmpeg::AVDecoder:

Public Member Functions

 AVDecoder (const AVDecoder &)=delete
 Copy constructor (deleted).
 AVDecoder (AVDecoder &&other) noexcept=default
 Move constructor.
 ~AVDecoder () noexcept override
 Destructor.
AVDecoder & operator= (const AVDecoder &)=delete
 Copy assignment (deleted).
AVDecoder & operator= (AVDecoder &&other) noexcept=default
 Move assignment.
FFmpeg::OperationResult SendPacket (AVPacket &pkt) noexcept
 Sends a packet (after BSF) to the decoder.
FFmpeg::OperationResult ReceiveFrame (AVFrame &frame) noexcept
 Receives a decoded frame.
int StreamIndex () const noexcept
 Stream index this decoder was opened for.
AVRational TimeBase () const noexcept
 Time base used for decoded frame timestamps.
void Flush () noexcept
 Flushes decoder and BSF buffers (does not signal EOF).
FFmpeg::OperationResult SetEof () noexcept
 Signals EOF (avcodec_send_packet(nullptr) + BSF EOF).
bool IsSubtitle () const noexcept
 true if the opened codec is a subtitle decoder.
OperationResult DecodeSubtitle (AVPacket &pkt, FFmpeg::AVSubtitle &out) noexcept
 Decodes one subtitle packet (avcodec_decode_subtitle2).
Public Member Functions inherited from StormByte::Multimedia::FFmpeg::AVPointer<::AVCodecContext >
constexpr AVPointer () noexcept=delete
 Default constructor (deleted).
virtual ~AVPointer () noexcept=default
 Destructor.
constexpr AVPointer & operator= (const AVPointer &) noexcept=delete
 Copy assignment (deleted).

Static Public Member Functions

static ExpectedAVDecoder Open (AVCodec *codec, const AVCodecParameters &params, const AVFormatContext &fmt, int stream_index) noexcept
 Opens a decoder from codec and parameters; may attach mp4→Annex-B BSF.
static ExpectedAVDecoder Open (AVCodec *codec, const AVCodecParameters &params, int stream_index) noexcept
 Opens a decoder from codec and parameters.

Additional Inherited Members

Protected Member Functions inherited from StormByte::Multimedia::FFmpeg::AVPointer<::AVCodecContext >
constexpr const std::decay_t< ::AVCodecContext > * Get () const noexcept
 Const view of the raw FFmpeg pointer.
constexpr std::decay_t< ::AVCodecContext > * Detach () noexcept
 Yields the raw pointer and leaves this wrapper empty.
Protected Attributes inherited from StormByte::Multimedia::FFmpeg::AVPointer<::AVCodecContext >
std::decay_t< ::AVCodecContext > * m_ptr
 Owned FFmpeg pointer.

Detailed Description

RAII decoder context with optional BSF pipeline.

Constructor & Destructor Documentation

◆ AVDecoder() [1/2]

StormByte::Multimedia::FFmpeg::AVDecoder::AVDecoder ( const AVDecoder & )
delete

Copy constructor (deleted).

◆ AVDecoder() [2/2]

StormByte::Multimedia::FFmpeg::AVDecoder::AVDecoder ( AVDecoder && other)
defaultnoexcept

Move constructor.

Parameters
otherSource decoder.

◆ ~AVDecoder()

StormByte::Multimedia::FFmpeg::AVDecoder::~AVDecoder ( )
overridenoexcept

Destructor.

Member Function Documentation

◆ DecodeSubtitle()

OperationResult StormByte::Multimedia::FFmpeg::AVDecoder::DecodeSubtitle ( AVPacket & pkt,
FFmpeg::AVSubtitle & out )
noexcept

Decodes one subtitle packet (avcodec_decode_subtitle2).

Parameters
pktCompressed packet.
outFilled when a subtitle is produced.
Returns
Success, TryAgain (no subtitle this packet), EndOfFile or Error.

◆ Flush()

void StormByte::Multimedia::FFmpeg::AVDecoder::Flush ( )
noexcept

Flushes decoder and BSF buffers (does not signal EOF).

◆ IsSubtitle()

bool StormByte::Multimedia::FFmpeg::AVDecoder::IsSubtitle ( ) const
noexcept

true if the opened codec is a subtitle decoder.

Returns
true for subtitle codecs.

◆ Open() [1/2]

ExpectedAVDecoder StormByte::Multimedia::FFmpeg::AVDecoder::Open ( AVCodec * codec,
const AVCodecParameters & params,
const AVFormatContext & fmt,
int stream_index )
staticnoexcept

Opens a decoder from codec and parameters; may attach mp4→Annex-B BSF.

Parameters
codecDecoder codec.
paramsStream codec parameters.
fmtParent format context (for BSF decision).
stream_indexStream index this decoder serves.
Returns
Decoder or DecoderError.

◆ Open() [2/2]

ExpectedAVDecoder StormByte::Multimedia::FFmpeg::AVDecoder::Open ( AVCodec * codec,
const AVCodecParameters & params,
int stream_index )
staticnoexcept

Opens a decoder from codec and parameters.

No BSF.

Parameters
codecDecoder codec.
paramsStream codec parameters.
stream_indexStream index this decoder serves (must match AVPacket::StreamIndex on SendPacket).
Returns
Decoder or DecoderError.

For Analytics encode-look: packets already left the Encoder, so mp4→Annex-B is not applied. Use the four-argument Open when the parent format is known.

◆ operator=() [1/2]

AVDecoder & StormByte::Multimedia::FFmpeg::AVDecoder::operator= ( AVDecoder && other)
defaultnoexcept

Move assignment.

Parameters
otherSource decoder.
Returns
*this.

◆ operator=() [2/2]

AVDecoder & StormByte::Multimedia::FFmpeg::AVDecoder::operator= ( const AVDecoder & )
delete

Copy assignment (deleted).

Returns
*this.

◆ ReceiveFrame()

FFmpeg::OperationResult StormByte::Multimedia::FFmpeg::AVDecoder::ReceiveFrame ( AVFrame & frame)
noexcept

Receives a decoded frame.

Parameters
frameDestination frame.
Returns
Operation result.

◆ SendPacket()

FFmpeg::OperationResult StormByte::Multimedia::FFmpeg::AVDecoder::SendPacket ( AVPacket & pkt)
noexcept

Sends a packet (after BSF) to the decoder.

Parameters
pktPacket for this stream.
Returns
Operation result.

◆ SetEof()

FFmpeg::OperationResult StormByte::Multimedia::FFmpeg::AVDecoder::SetEof ( )
noexcept

Signals EOF (avcodec_send_packet(nullptr) + BSF EOF).

Returns
Success/EndOfFile when the null packet was accepted, TryAgain if frames must be drained first.

◆ StreamIndex()

int StormByte::Multimedia::FFmpeg::AVDecoder::StreamIndex ( ) const
noexcept

Stream index this decoder was opened for.

Returns
Stream index.

◆ TimeBase()

AVRational StormByte::Multimedia::FFmpeg::AVDecoder::TimeBase ( ) const
noexcept

Time base used for decoded frame timestamps.

Returns
pkt_timebase if set, otherwise time_base.

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