UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Audio::TCircularAudioBuffer< SampleType, Alignment > Class Template Reference

#include <Dsp.h>

Public Member Functions

 TCircularAudioBuffer ()
 
 TCircularAudioBuffer (const TCircularAudioBuffer< SampleType, Alignment > &InOther)
 
TCircularAudioBufferoperator= (const TCircularAudioBuffer< SampleType, Alignment > &InOther)
 
 TCircularAudioBuffer (uint32 InCapacity)
 
void Reset (uint32 InCapacity=0)
 
void Empty ()
 
void SetCapacity (uint32 InCapacity)
 
void Reserve (uint32 InMinimumCapacity, bool bRetainExistingSamples)
 
int32 Push (TArrayView< const SampleType > InBuffer)
 
int32 Push (const SampleType *InBuffer, uint32 NumSamples)
 
int32 PushZeros (uint32 NumSamplesOfZeros)
 
bool Push (const SampleType &InElement)
 
bool Push (SampleType &&InElement)
 
int32 Peek (SampleType *OutBuffer, uint32 NumSamples) const
 
DisjointedArrayView< const SampleType > PeekInPlace (uint32 NumSamples) const
 
bool Peek (SampleType &OutElement) const
 
int32 Pop (SampleType *OutBuffer, uint32 NumSamples)
 
DisjointedArrayView< const SampleType > PopInPlace (uint32 NumSamples)
 
int32 Pop (uint32 NumSamples)
 
SampleType Pop ()
 
void SetNum (uint32 NumSamples, bool bRetainOldestSamples=false)
 
uint32 Num () const
 
uint32 GetCapacity () const
 
uint32 Remainder () const
 

Detailed Description

template<typename SampleType, size_t Alignment = 16>
class Audio::TCircularAudioBuffer< SampleType, Alignment >

Basic implementation of a circular buffer built for pushing and popping arbitrary amounts of data at once. Designed to be thread safe for SPSC; However, if Push() and Pop() are both trying to access an overlapping area of the buffer, One of the calls will be truncated. Thus, it is advised that you use a high enough capacity that the producer and consumer are never in contention.

Constructor & Destructor Documentation

◆ TCircularAudioBuffer() [1/3]

template<typename SampleType , size_t Alignment = 16>
Audio::TCircularAudioBuffer< SampleType, Alignment >::TCircularAudioBuffer ( )
inline

◆ TCircularAudioBuffer() [2/3]

template<typename SampleType , size_t Alignment = 16>
Audio::TCircularAudioBuffer< SampleType, Alignment >::TCircularAudioBuffer ( const TCircularAudioBuffer< SampleType, Alignment > &  InOther)
inline

◆ TCircularAudioBuffer() [3/3]

template<typename SampleType , size_t Alignment = 16>
Audio::TCircularAudioBuffer< SampleType, Alignment >::TCircularAudioBuffer ( uint32  InCapacity)
inline

Member Function Documentation

◆ Empty()

template<typename SampleType , size_t Alignment = 16>
void Audio::TCircularAudioBuffer< SampleType, Alignment >::Empty ( )
inline

◆ GetCapacity()

template<typename SampleType , size_t Alignment = 16>
uint32 Audio::TCircularAudioBuffer< SampleType, Alignment >::GetCapacity ( ) const
inline

◆ Num()

template<typename SampleType , size_t Alignment = 16>
uint32 Audio::TCircularAudioBuffer< SampleType, Alignment >::Num ( ) const
inline

◆ operator=()

template<typename SampleType , size_t Alignment = 16>
TCircularAudioBuffer & Audio::TCircularAudioBuffer< SampleType, Alignment >::operator= ( const TCircularAudioBuffer< SampleType, Alignment > &  InOther)
inline

◆ Peek() [1/2]

template<typename SampleType , size_t Alignment = 16>
bool Audio::TCircularAudioBuffer< SampleType, Alignment >::Peek ( SampleType &  OutElement) const
inline

◆ Peek() [2/2]

template<typename SampleType , size_t Alignment = 16>
int32 Audio::TCircularAudioBuffer< SampleType, Alignment >::Peek ( SampleType *  OutBuffer,
uint32  NumSamples 
) const
inline

◆ PeekInPlace()

template<typename SampleType , size_t Alignment = 16>
DisjointedArrayView< const SampleType > Audio::TCircularAudioBuffer< SampleType, Alignment >::PeekInPlace ( uint32  NumSamples) const
inline

◆ Pop() [1/3]

template<typename SampleType , size_t Alignment = 16>
SampleType Audio::TCircularAudioBuffer< SampleType, Alignment >::Pop ( )
inline

◆ Pop() [2/3]

template<typename SampleType , size_t Alignment = 16>
int32 Audio::TCircularAudioBuffer< SampleType, Alignment >::Pop ( SampleType *  OutBuffer,
uint32  NumSamples 
)
inline

◆ Pop() [3/3]

template<typename SampleType , size_t Alignment = 16>
int32 Audio::TCircularAudioBuffer< SampleType, Alignment >::Pop ( uint32  NumSamples)
inline

◆ PopInPlace()

template<typename SampleType , size_t Alignment = 16>
DisjointedArrayView< const SampleType > Audio::TCircularAudioBuffer< SampleType, Alignment >::PopInPlace ( uint32  NumSamples)
inline

◆ Push() [1/4]

template<typename SampleType , size_t Alignment = 16>
bool Audio::TCircularAudioBuffer< SampleType, Alignment >::Push ( const SampleType &  InElement)
inline

◆ Push() [2/4]

template<typename SampleType , size_t Alignment = 16>
int32 Audio::TCircularAudioBuffer< SampleType, Alignment >::Push ( const SampleType *  InBuffer,
uint32  NumSamples 
)
inline

◆ Push() [3/4]

template<typename SampleType , size_t Alignment = 16>
bool Audio::TCircularAudioBuffer< SampleType, Alignment >::Push ( SampleType &&  InElement)
inline

◆ Push() [4/4]

template<typename SampleType , size_t Alignment = 16>
int32 Audio::TCircularAudioBuffer< SampleType, Alignment >::Push ( TArrayView< const SampleType >  InBuffer)
inline

Push an array of values into circular buffer.

◆ PushZeros()

template<typename SampleType , size_t Alignment = 16>
int32 Audio::TCircularAudioBuffer< SampleType, Alignment >::PushZeros ( uint32  NumSamplesOfZeros)
inline

◆ Remainder()

template<typename SampleType , size_t Alignment = 16>
uint32 Audio::TCircularAudioBuffer< SampleType, Alignment >::Remainder ( ) const
inline

◆ Reserve()

template<typename SampleType , size_t Alignment = 16>
void Audio::TCircularAudioBuffer< SampleType, Alignment >::Reserve ( uint32  InMinimumCapacity,
bool  bRetainExistingSamples 
)
inline

Reserve capacity.

Parameters
InMinimumCapacity- Minimum capacity of circular buffer.
bRetainExistingSamples- If true, existing samples in the buffer will be retained. If false, they are discarded.

◆ Reset()

template<typename SampleType , size_t Alignment = 16>
void Audio::TCircularAudioBuffer< SampleType, Alignment >::Reset ( uint32  InCapacity = 0)
inline

◆ SetCapacity()

template<typename SampleType , size_t Alignment = 16>
void Audio::TCircularAudioBuffer< SampleType, Alignment >::SetCapacity ( uint32  InCapacity)
inline

◆ SetNum()

template<typename SampleType , size_t Alignment = 16>
void Audio::TCircularAudioBuffer< SampleType, Alignment >::SetNum ( uint32  NumSamples,
bool  bRetainOldestSamples = false 
)
inline

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