Switchboard Extension SDK
Loading...
Searching...
No Matches
Resampler.hpp
1//
2// Resampler.hpp
3// SwitchboardSDK
4//
5// Created by Nádor Iván on 2022. 03. 03..
6// Copyright © 2022. Synervoz Inc. All rights reserved.
7//
8
9#pragma once
10
11#include <audio/RingBuffer.hpp>
12#include <buffer/AudioData.hpp>
13#include <switchboard/export.h>
14#include <switchboard_core/AudioBuffer.hpp>
15#include <switchboard_core/SwitchboardCore.hpp>
16#include <vector>
17
18namespace switchboard {
19
20struct SWITCHBOARDSDK_EXPORT ResamplerInternals;
21
26class SWITCHBOARDSDK_EXPORT Resampler {
27public:
34 Resampler(uint maxNumberOfChannels = constants::STEREO, uint maxNumberOfFrames = constants::MAX_NUMBER_OF_FRAMES);
35
40
51 uint process(
52 const AudioBuffer<int16>& input,
53 AudioBuffer<int16>& output,
54 const uint inputSampleRate,
55 const uint outputSampleRate
56 );
57
68 uint process(
69 const AudioBuffer<float>& input,
70 AudioBuffer<float>& output,
71 const uint inputSampleRate,
72 const uint outputSampleRate
73 );
74
89 uint process(
90 const int16* input,
91 float* output,
92 uint inputSampleRate,
93 uint outputSampleRate,
94 uint numberOfInputFrames,
95 uint maxNumberOfOutputFrames,
96 uint numChannels,
97 bool endOfInput = false
98 );
99
115 const float* input,
116 float* output,
117 uint inputSampleRate,
118 uint outputSampleRate,
119 uint numberOfInputFrames,
120 uint maxNumberOfOutputFrames,
121 uint numChannels,
122 bool endOfInput = false
123 );
124
141 const float* input,
142 float* output,
143 uint inputSampleRate,
144 uint outputSampleRate,
145 uint numberOfInputFrames,
146 uint maxNumberOfOutputFrames,
147 uint numChannels,
148 bool endOfInput,
149 uint& numberOfInputFramesUsed,
150 uint& numberOfOutputFramesGenerated
151 );
152
167 const std::vector<float>& input,
168 std::vector<float>& output,
169 const uint inputSampleRate,
170 const uint outputSampleRate,
171 uint numChannels
172 );
173
177 void reset();
178
189
190private:
191 ResamplerInternals* internals;
192
193 buffer::AudioData<float> tempInputBuffer;
194 buffer::AudioData<float> tempOutputBuffer;
195 audio::RingBuffer<float> ringBuffer;
196};
197
198}
Provides an abstraction around raw audio buffers stored in memory.
Definition AudioBuffer.hpp:22
Resampler(uint maxNumberOfChannels=constants::STEREO, uint maxNumberOfFrames=constants::MAX_NUMBER_OF_FRAMES)
Creates a Resampler instance.
uint process(const AudioBuffer< float > &input, AudioBuffer< float > &output, const uint inputSampleRate, const uint outputSampleRate)
Resamples an input buffer of sampling rate N, to an output buffer of sampling rate M.
int getNumberOfBufferedFrames() const
Retrieves the number of buffered frames currently in the Resampler.
void process(const float *input, float *output, uint inputSampleRate, uint outputSampleRate, uint numberOfInputFrames, uint maxNumberOfOutputFrames, uint numChannels, bool endOfInput, uint &numberOfInputFramesUsed, uint &numberOfOutputFramesGenerated)
Resamples an input buffer of sampling rate N, to an output buffer of sampling rate M.
~Resampler()
Resampler destructor.
uint process(const int16 *input, float *output, uint inputSampleRate, uint outputSampleRate, uint numberOfInputFrames, uint maxNumberOfOutputFrames, uint numChannels, bool endOfInput=false)
Resamples an input buffer of sampling rate N, to an output buffer of sampling rate M.
uint process(const AudioBuffer< int16 > &input, AudioBuffer< int16 > &output, const uint inputSampleRate, const uint outputSampleRate)
Resamples an input buffer of sampling rate N, to an output buffer of sampling rate M.
void reset()
Resets the resampler after endOfInput is set to true in the process method. Needs to be called before...
uint process(const std::vector< float > &input, std::vector< float > &output, const uint inputSampleRate, const uint outputSampleRate, uint numChannels)
Resamples an input buffer of sampling rate N, to an output buffer of sampling rate M....
uint process(const float *input, float *output, uint inputSampleRate, uint outputSampleRate, uint numberOfInputFrames, uint maxNumberOfOutputFrames, uint numChannels, bool endOfInput=false)
Resamples an input buffer of sampling rate N, to an output buffer of sampling rate M.