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::AVEncoder Class Reference

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

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

Inheritance diagram for StormByte::Multimedia::FFmpeg::AVEncoder:
Inheritance graph
[legend]
Collaboration diagram for StormByte::Multimedia::FFmpeg::AVEncoder:
Collaboration graph
[legend]

Public Member Functions

 AVEncoder (const AVEncoder &)=delete
 Copy constructor (deleted).
 
 AVEncoder (AVEncoder &&other) noexcept=default
 Move constructor.
 
 ~AVEncoder () noexcept override
 Destructor.
 
AVEncoderoperator= (const AVEncoder &)=delete
 Copy assignment (deleted).
 
AVEncoderoperator= (AVEncoder &&other) noexcept=default
 Move assignment.
 
FFmpeg::OperationResult SendFrame (AVFrame &frame) noexcept
 Sends a frame to the encoder.
 
FFmpeg::OperationResult EncodeSubtitle (AVSubtitle &sub, AVPacket &pkt) noexcept
 Encodes one text subtitle (avcodec_encode_subtitle).
 
FFmpeg::OperationResult ReceivePacket (AVPacket &pkt) noexcept
 Receives an encoded packet (after BSF).
 
int StreamIndex () const noexcept
 Stream index this encoder was opened for.
 
AVRational TimeBase () const noexcept
 Encoder time base.
 
bool IsSubtitle () const noexcept
 true if the opened codec is a subtitle encoder.
 
void Flush () noexcept
 Flushes encoder and BSF.
 
FFmpeg::OperationResult SetEof () noexcept
 Signals EOF to encoder and BSF.
 
 operator bool () const noexcept
 Whether a codec context is open.
 
int CodecId () const noexcept
 Opened codec id.
 
int CodecType () const noexcept
 Media type of the opened codec.
 
int SampleFmt () const noexcept
 Audio sample format.
 
int FrameSize () const noexcept
 Encoder frame size in samples.
 
int Channels () const noexcept
 Audio channel count.
 
int SampleRate () const noexcept
 Audio sample rate in Hz.
 
AVChannelLayout ChannelLayout () const noexcept
 Channel layout owned by the context.
 
bool HasBFrames () const noexcept
 Whether the codec uses B-frames.
 
AVRational FrameRate () const noexcept
 Video framerate guessed by the encoder.
 
const ::AVCodecContext * Context () const noexcept
 Opened codec context for mux stream bind.
 
- 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 ExpectedAVEncoder Open (AVCodec *codec, const AVCodecParameters &params, const AVFormatContext &fmt, int stream_index) noexcept
 Opens an encoder; may attach BSF from fmt.
 
static ExpectedAVEncoder Open (AVCodec *codec, const AVCodecParameters &params, int stream_index, const std::map< std::string, std::string > &options, AVRational time_base) noexcept
 Opens an encoder without a muxer (no BSF).
 

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 encoder context with optional BSF pipeline.

Constructor & Destructor Documentation

◆ AVEncoder() [1/2]

StormByte::Multimedia::FFmpeg::AVEncoder::AVEncoder ( const AVEncoder )
delete

Copy constructor (deleted).

◆ AVEncoder() [2/2]

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

Move constructor.

Parameters
otherSource encoder.

◆ ~AVEncoder()

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

Destructor.

Member Function Documentation

◆ ChannelLayout()

AVChannelLayout StormByte::Multimedia::FFmpeg::AVEncoder::ChannelLayout ( ) const
noexcept

Channel layout owned by the context.

Returns
Layout, or nullptr.

◆ Channels()

int StormByte::Multimedia::FFmpeg::AVEncoder::Channels ( ) const
noexcept

Audio channel count.

Returns
Channels, or 0.

◆ CodecId()

int StormByte::Multimedia::FFmpeg::AVEncoder::CodecId ( ) const
noexcept

Opened codec id.

Returns
AVCodecID as int, or AV_CODEC_ID_NONE.

◆ CodecType()

int StormByte::Multimedia::FFmpeg::AVEncoder::CodecType ( ) const
noexcept

Media type of the opened codec.

Returns
AVMediaType as int.

◆ Context()

const ::AVCodecContext * StormByte::Multimedia::FFmpeg::AVEncoder::Context ( ) const
noexcept

Opened codec context for mux stream bind.

Returns
Context, or nullptr.

◆ EncodeSubtitle()

FFmpeg::OperationResult StormByte::Multimedia::FFmpeg::AVEncoder::EncodeSubtitle ( AVSubtitle sub,
AVPacket pkt 
)
noexcept

Encodes one text subtitle (avcodec_encode_subtitle).

Parameters
subFilled subtitle.
pktDestination packet.
Returns
Operation result.

◆ Flush()

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

Flushes encoder and BSF.

◆ FrameRate()

AVRational StormByte::Multimedia::FFmpeg::AVEncoder::FrameRate ( ) const
noexcept

Video framerate guessed by the encoder.

Returns
Framerate, or {0, 1}.

◆ FrameSize()

int StormByte::Multimedia::FFmpeg::AVEncoder::FrameSize ( ) const
noexcept

Encoder frame size in samples.

0 means variable.

Returns
Frame size, or 0.

◆ HasBFrames()

bool StormByte::Multimedia::FFmpeg::AVEncoder::HasBFrames ( ) const
noexcept

Whether the codec uses B-frames.

Returns
true if has_b_frames is set.

◆ IsSubtitle()

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

true if the opened codec is a subtitle encoder.

Returns
true for subtitle codecs.

◆ Open() [1/2]

static ExpectedAVEncoder StormByte::Multimedia::FFmpeg::AVEncoder::Open ( AVCodec *  codec,
const AVCodecParameters params,
const AVFormatContext fmt,
int  stream_index 
)
staticnoexcept

Opens an encoder; may attach BSF from fmt.

Parameters
codecEncoder codec.
paramsStream codec parameters.
fmtFormat context (for BSF decision).
stream_indexStream index.
Returns
Encoder or EncoderError.

◆ Open() [2/2]

static ExpectedAVEncoder StormByte::Multimedia::FFmpeg::AVEncoder::Open ( AVCodec *  codec,
const AVCodecParameters params,
int  stream_index,
const std::map< std::string, std::string > &  options,
AVRational  time_base 
)
staticnoexcept

Opens an encoder without a muxer (no BSF).

Parameters
codecEncoder codec.
paramsStream codec parameters.
stream_indexOutput track index.
optionsav_opt_set pairs applied before avcodec_open2.
time_baseEncoder time base. Ignored if num/den are not positive.
Returns
Encoder or EncoderError.

◆ operator bool()

StormByte::Multimedia::FFmpeg::AVEncoder::operator bool ( ) const
explicitnoexcept

Whether a codec context is open.

Returns
true after a successful Open().

◆ operator=() [1/2]

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

Move assignment.

Parameters
otherSource encoder.
Returns
*this.

◆ operator=() [2/2]

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

Copy assignment (deleted).

Returns
*this.

◆ ReceivePacket()

FFmpeg::OperationResult StormByte::Multimedia::FFmpeg::AVEncoder::ReceivePacket ( AVPacket pkt)
noexcept

Receives an encoded packet (after BSF).

Parameters
pktDestination packet.
Returns
Operation result.

For HEVC, prepends a prefix SEI NAL with the matching HDR10+ T.35.

◆ SampleFmt()

int StormByte::Multimedia::FFmpeg::AVEncoder::SampleFmt ( ) const
noexcept

Audio sample format.

Returns
AVSampleFormat as int, or AV_SAMPLE_FMT_NONE.

◆ SampleRate()

int StormByte::Multimedia::FFmpeg::AVEncoder::SampleRate ( ) const
noexcept

Audio sample rate in Hz.

Returns
Rate, or 0.

◆ SendFrame()

FFmpeg::OperationResult StormByte::Multimedia::FFmpeg::AVEncoder::SendFrame ( AVFrame frame)
noexcept

Sends a frame to the encoder.

Parameters
frameSource frame.
Returns
Operation result.

Captures HDR10+ (AV_FRAME_DATA_DYNAMIC_HDR_PLUS) and keeps the ITU-T T.35 payload keyed by PTS so ReceivePacket can emit SEI.

◆ SetEof()

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

Signals EOF to encoder and BSF.

Returns
Operation result.

◆ StreamIndex()

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

Stream index this encoder was opened for.

Returns
Stream index.

◆ TimeBase()

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

Encoder time base.

Returns
time_base, or 0/1.

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