Switchboard Extension SDK
Toggle main menu visibility
Loading...
Searching...
No Matches
AudioRingBuffer.hpp
1
//
2
// AudioRingBuffer.hpp
3
// SwitchboardSDK
4
//
5
// Created by Nádor Iván on 2022. 09. 06..
6
//
7
8
#pragma once
9
10
#include <audio/RingBuffer.hpp>
11
#include <buffer/AudioData.hpp>
12
#include <memory>
13
#include <switchboard/export.h>
14
#include <switchboard_core/AudioBuffer.hpp>
15
#include <switchboard_core/SwitchboardCore.hpp>
16
#include <vector>
17
18
namespace
switchboard {
19
24
template
<
typename
T>
25
class
SWITCHBOARDSDK_EXPORT
AudioRingBuffer
{
26
public
:
34
AudioRingBuffer
(uint numberOfFrames, uint numberOfChannels,
bool
isInterleaved);
35
45
AudioRingBuffer
(uint numberOfFrames, uint numberOfChannels,
bool
isInterleaved, buffer::AudioData<T>& buffer);
46
50
AudioRingBuffer
(
AudioRingBuffer
&&) =
default
;
51
55
AudioRingBuffer
&
operator=
(
AudioRingBuffer
&&) =
default
;
56
60
void
clear
();
61
67
[[nodiscard]] uint
getAvailableFramesToProduce
()
const
;
68
75
void
produce
(
const
AudioBuffer<T>
& sourceBuffer, uint numberOfFrames);
76
82
uint
getAvailableFramesToConsume
()
const
;
83
90
void
consume
(
AudioBuffer<T>
& destinationBuffer, uint numberOfFrames);
91
98
void
read
(
AudioBuffer<T>
& destinationBuffer, uint numberOfItems);
99
105
void
discard
(uint numberOfItems);
106
107
private
:
108
std::vector<std::unique_ptr<audio::RingBuffer<T>>> bufferContainer;
109
uint numberOfChannels;
110
bool
isInterleaved;
111
};
112
113
}
switchboard::AudioBuffer
Provides an abstraction around raw audio buffers stored in memory.
Definition
AudioBuffer.hpp:22
switchboard::AudioRingBuffer::consume
void consume(AudioBuffer< T > &destinationBuffer, uint numberOfFrames)
Reads items from the ring buffer.
switchboard::AudioRingBuffer::produce
void produce(const AudioBuffer< T > &sourceBuffer, uint numberOfFrames)
Adds frames to the audio ring buffer.
switchboard::AudioRingBuffer::getAvailableFramesToProduce
uint getAvailableFramesToProduce() const
Returns the maximum number of frames that can be added to the audio ring buffer.
switchboard::AudioRingBuffer::discard
void discard(uint numberOfItems)
Discards items from the ring buffer. Steps the read pointer without reading the items.
switchboard::AudioRingBuffer::clear
void clear()
Clears all data in the audio ring buffer.
switchboard::AudioRingBuffer::read
void read(AudioBuffer< T > &destinationBuffer, uint numberOfItems)
Reads items from the ring buffer without updating the read pointer.
switchboard::AudioRingBuffer::getAvailableFramesToConsume
uint getAvailableFramesToConsume() const
Returns the maximum number of items that can be read from the ring buffer.
switchboard::AudioRingBuffer::operator=
AudioRingBuffer & operator=(AudioRingBuffer &&)=default
Move assignment operator.
switchboard::AudioRingBuffer::AudioRingBuffer
AudioRingBuffer(uint numberOfFrames, uint numberOfChannels, bool isInterleaved)
Creates an AudioRingBuffer instance. Allocates underlying buffer, constructor not suitable for real-t...
switchboard::AudioRingBuffer::AudioRingBuffer
AudioRingBuffer(uint numberOfFrames, uint numberOfChannels, bool isInterleaved, buffer::AudioData< T > &buffer)
Creates an AudioRingBuffer instance. Does not allocate underlying buffer, suitable for real-time use.
switchboard::AudioRingBuffer::AudioRingBuffer
AudioRingBuffer(AudioRingBuffer &&)=default
Move constructor.
SwitchboardSDK
include
switchboard_core
AudioRingBuffer.hpp
Generated by
1.17.0