20#pragma GCC diagnostic push
21#pragma GCC diagnostic ignored "-Wconversion"
22#pragma GCC diagnostic ignored "-Wsign-conversion"
23#include <libavutil/audio_fifo.h>
24#pragma GCC diagnostic pop
39 alloc(sample_fmt, channels, nb_samples);
50 fifo.m_fifo =
nullptr;
59 fifo.m_fifo =
nullptr;
68 m_fifo = av_audio_fifo_alloc(sample_fmt, channels, nb_samples);
71 return AVERROR(ENOMEM);
81 av_audio_fifo_free(
m_fifo);
97 return av_audio_fifo_size(
m_fifo);
104 return AVERROR(EINVAL);
106 return av_audio_fifo_realloc(
m_fifo, nb_samples);
113 return AVERROR(EINVAL);
115 return av_audio_fifo_write(
m_fifo, data, nb_samples);
122 return AVERROR(EINVAL);
124 return av_audio_fifo_read(
m_fifo, data, nb_samples);
139 AVAudioFifo *fifo =
m_fifo;
144FFmpeg_AudioFifo::operator AVAudioFifo*()
149FFmpeg_AudioFifo::operator
const AVAudioFifo*()
const
RAII wrapper for AVAudioFifo.
int write(void **data, int nb_samples)
Write audio samples into the FIFO.
FFmpeg_AudioFifo()
Construct an empty FIFO wrapper.
AVAudioFifo * release()
Release ownership without freeing the FIFO.
void reset()
Free the owned FIFO and reset the wrapper to empty.
AVAudioFifo * m_fifo
Pointer to underlying AVAudioFifo.
AVAudioFifo * get()
Get the owned FFmpeg FIFO pointer.
int read(void **data, int nb_samples)
Read audio samples from the FIFO.
bool empty() const
Check whether the wrapper currently owns a FIFO.
~FFmpeg_AudioFifo()
Release the owned FIFO, if any.
int size() const
Return the number of samples currently stored in the FIFO.
int realloc(int nb_samples)
Resize the FIFO allocation.
int alloc(AVSampleFormat sample_fmt, int channels, int nb_samples=1)
Allocate a new audio FIFO, replacing any existing one.
FFmpeg AVAudioFifo RAII wrapper.