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 | Protected Member Functions | Protected Attributes | List of all members
StormByte::Multimedia::FFmpeg::AVPointer< AVType > Class Template Referenceabstract

Move-only RAII base for FFmpeg C pointers. More...

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

Public Member Functions

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.
 

Protected Member Functions

constexpr const std::decay_t< AVType > * Get () const noexcept
 Const view of the raw FFmpeg pointer.
 
constexpr std::decay_t< AVType > * Get () noexcept
 Mutable view of the raw FFmpeg pointer.
 
constexpr std::decay_t< AVType > * Detach () noexcept
 Yields the raw pointer and leaves this wrapper empty.
 
constexpr AVPointer (std::decay_t< AVType > *ptr) noexcept
 Adopts ptr.
 
virtual void Free () noexcept=0
 Releases the underlying resource.
 

Protected Attributes

std::decay_t< AVType > * m_ptr = nullptr
 Owned FFmpeg pointer.
 

Detailed Description

template<typename AVType>
class StormByte::Multimedia::FFmpeg::AVPointer< AVType >

Move-only RAII base for FFmpeg C pointers.

Template Parameters
AVTypeUnderlying FFmpeg struct type.

Derived classes must implement Free(). Get() is protected; each derived type re-exports it as private so only its friends (other wrappers) may touch the raw pointer.

Constructor & Destructor Documentation

◆ AVPointer() [1/4]

template<typename AVType >
constexpr StormByte::Multimedia::FFmpeg::AVPointer< AVType >::AVPointer ( )
constexprdeletenoexcept

Default constructor (deleted).

An empty wrapper is not useful; derived types adopt a pointer through the explicit constructor or a factory such as Open().

◆ AVPointer() [2/4]

template<typename AVType >
constexpr StormByte::Multimedia::FFmpeg::AVPointer< AVType >::AVPointer ( const AVPointer< AVType > &  )
constexprdeletenoexcept

Copy constructor (deleted).

◆ AVPointer() [3/4]

template<typename AVType >
constexpr StormByte::Multimedia::FFmpeg::AVPointer< AVType >::AVPointer ( AVPointer< AVType > &&  other)
inlineconstexprnoexcept

Move constructor.

Parameters
otherSource wrapper.

◆ ~AVPointer()

template<typename AVType >
virtual StormByte::Multimedia::FFmpeg::AVPointer< AVType >::~AVPointer ( )
virtualdefaultnoexcept

Destructor.

Does not free; derived Free() owns that.

◆ AVPointer() [4/4]

template<typename AVType >
constexpr StormByte::Multimedia::FFmpeg::AVPointer< AVType >::AVPointer ( std::decay_t< AVType > *  ptr)
inlineexplicitconstexprprotectednoexcept

Adopts ptr.

Parameters
ptrRaw pointer.

Member Function Documentation

◆ Detach()

template<typename AVType >
constexpr std::decay_t< AVType > * StormByte::Multimedia::FFmpeg::AVPointer< AVType >::Detach ( )
inlineconstexprprotectednoexcept

Yields the raw pointer and leaves this wrapper empty.

Returns
Previous pointer, or nullptr. Does not Free.

Ownership moves to the caller. The wrapper destructor must not free a detached pointer. Not public; derived types using this as private for friends such as Filter::FFmpeg::Save.

◆ Free()

template<typename AVType >
virtual void StormByte::Multimedia::FFmpeg::AVPointer< AVType >::Free ( )
protectedpure virtualnoexcept

Releases the underlying resource.

◆ Get() [1/2]

template<typename AVType >
constexpr const std::decay_t< AVType > * StormByte::Multimedia::FFmpeg::AVPointer< AVType >::Get ( ) const
inlineconstexprprotectednoexcept

Const view of the raw FFmpeg pointer.

Returns
Pointer or nullptr.

Not public. Derived wrappers expose typed work; friends of the derived class may using this as private.

◆ Get() [2/2]

template<typename AVType >
constexpr std::decay_t< AVType > * StormByte::Multimedia::FFmpeg::AVPointer< AVType >::Get ( )
inlineconstexprprotectednoexcept

Mutable view of the raw FFmpeg pointer.

Returns
Pointer or nullptr.

◆ operator=() [1/2]

template<typename AVType >
constexpr AVPointer & StormByte::Multimedia::FFmpeg::AVPointer< AVType >::operator= ( AVPointer< AVType > &&  other)
inlineconstexprnoexcept

Move assignment.

Parameters
otherSource wrapper.
Returns
*this.

◆ operator=() [2/2]

template<typename AVType >
constexpr AVPointer & StormByte::Multimedia::FFmpeg::AVPointer< AVType >::operator= ( const AVPointer< AVType > &  )
constexprdeletenoexcept

Copy assignment (deleted).

Returns
*this.

Member Data Documentation

◆ m_ptr

template<typename AVType >
std::decay_t<AVType>* StormByte::Multimedia::FFmpeg::AVPointer< AVType >::m_ptr = nullptr
protected

Owned FFmpeg pointer.


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