StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
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:
Inheritance graph
[legend]
Collaboration diagram for StormByte::Multimedia::FFmpeg::AVDecoder:
Collaboration graph
[legend]

Public Member Functions

 AVDecoder (const AVDecoder &)=delete
 Copy constructor (deleted).
 
 AVDecoder (AVDecoder &&other) noexcept=default
 Move constructor.
 
 ~AVDecoder () noexcept override
 Destructor.
 
AVDecoderoperator= (const AVDecoder &)=delete
 Copy assignment (deleted).
 
AVDecoderoperator= (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).
 
constexpr AVPointer (const AVPointer &) noexcept=delete
 Copy constructor (deleted).
 
constexpr AVPointer (AVPointer &&other) noexcept
 Move constructor.
 
virtual ~AVPointer () noexcept=default
 Destructor.
 
constexpr AVPointeroperator= (const AVPointer &) noexcept=delete
 Copy assignment (deleted).
 
constexpr AVPointeroperator= (AVPointer &&other) noexcept
 Move assignment.
 

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 AVPointer (std::decay_t< ::AVCodecContext > *ptr) noexcept
 Adopts ptr.
 
constexpr const std::decay_t< ::AVCodecContext > * Get () const noexcept
 Const view of the raw FFmpeg pointer.
 
constexpr std::decay_t< ::AVCodecContext > * Get () noexcept
 Mutable 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]

static 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]

static 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: