arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
Communication
AdaptiveResamplingStream.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
AudioTools/Communication/AdaptiveResamplingBuffer.h
"
4
#include "
AudioTools/CoreAudio/AudioStreams.h
"
5
6
namespace
audio_tools
{
7
25
class
AdaptiveResamplingStream
:
public
AudioStream
{
26
public
:
31
AdaptiveResamplingStream
() {
addNotifyAudioChange
(
resampling_buffer
); }
38
AdaptiveResamplingStream
(
BaseBuffer<uint8_t>
& buffer,
39
float
stepRangePercent = 5.0f)
40
:
resampling_buffer
(buffer, stepRangePercent) {
41
addNotifyAudioChange
(
resampling_buffer
);
42
}
43
49
void
setBuffer
(
BaseBuffer<uint8_t>
& buffer) {
50
resampling_buffer
.
setBuffer
(buffer);
51
}
52
58
bool
begin
() {
59
resampling_buffer
.
setAudioInfo
(
audioInfo
());
60
return
resampling_buffer
.
begin
();
61
}
62
68
bool
begin
(
AudioInfo
info
) {
69
setAudioInfo
(
info
);
70
return
begin
();
71
}
72
80
size_t
write
(
const
uint8_t* data,
size_t
len)
override
{
81
return
resampling_buffer
.
writeArray
(data, len);
82
}
83
87
void
end
() {
resampling_buffer
.
end
(); }
88
96
size_t
readBytes
(uint8_t* data,
size_t
len)
override
{
97
return
resampling_buffer
.
readArray
(data, len);
98
}
99
105
float
recalculate
() {
return
resampling_buffer
.
recalculate
(); }
106
112
void
setStepRangePercent
(
float
rangePercent) {
113
resampling_buffer
.
setStepRangePercent
(rangePercent);
114
}
115
124
void
setStartFillPercent
(
float
percent) {
125
resampling_buffer
.
setStartFillPercent
(percent);
126
}
127
130
bool
isPrimed
() {
return
resampling_buffer
.
isPrimed
(); }
131
137
float
levelPercentActual
() {
return
resampling_buffer
.
levelPercent
(); }
138
144
float
levelPercent
() {
return
resampling_buffer
.
levelPercentSmoothed
(); }
145
152
void
setKalmanParameters
(
float
process_noise,
float
measurement_noise) {
153
resampling_buffer
.
setKalmanParameters
(process_noise, measurement_noise);
154
}
155
163
void
setPIDParameters
(
float
p_value,
float
i_value,
float
d_value) {
164
resampling_buffer
.
setPIDParameters
(p_value, i_value, d_value);
165
}
166
173
void
setMinRecalculateInterval
(uint32_t interval_ms) {
174
resampling_buffer
.
setMinRecalculateInterval
(interval_ms);
175
}
176
183
void
setMaxStepChangeRate
(
float
per_second) {
184
resampling_buffer
.
setMaxStepChangeRate
(per_second);
185
}
186
187
protected
:
188
AdaptiveResamplingBuffer
resampling_buffer
;
189
};
190
191
}
// namespace audio_tools
AdaptiveResamplingBuffer.h
AudioStreams.h
audio_tools::AdaptiveResamplingBuffer
A BaseBuffer<uint8_t> that wraps a raw (unresampled) backing buffer and transparently resamples on re...
Definition
AdaptiveResamplingBuffer.h:52
audio_tools::AdaptiveResamplingBuffer::setStepRangePercent
void setStepRangePercent(float rangePercent)
Set the allowed resampling range as a percent.
Definition
AdaptiveResamplingBuffer.h:434
audio_tools::AdaptiveResamplingBuffer::setStartFillPercent
void setStartFillPercent(float percent)
Defines the fill level (in percent of the backing buffer's capacity) that must be reached once,...
Definition
AdaptiveResamplingBuffer.h:83
audio_tools::AdaptiveResamplingBuffer::setBuffer
void setBuffer(BaseBuffer< uint8_t > &buffer)
Set the raw (unresampled) backing buffer.
Definition
AdaptiveResamplingBuffer.h:98
audio_tools::AdaptiveResamplingBuffer::setPIDParameters
void setPIDParameters(float p_value, float i_value, float d_value)
Set the PID controller parameters.
Definition
AdaptiveResamplingBuffer.h:471
audio_tools::AdaptiveResamplingBuffer::readArray
int readArray(uint8_t data[], int len) override
Definition
AdaptiveResamplingBuffer.h:179
audio_tools::AdaptiveResamplingBuffer::isPrimed
bool isPrimed()
Definition
AdaptiveResamplingBuffer.h:452
audio_tools::AdaptiveResamplingBuffer::setMaxStepChangeRate
void setMaxStepChangeRate(float per_second)
Maximum rate at which step_size is allowed to change, in (fractional step) units per second - e....
Definition
AdaptiveResamplingBuffer.h:417
audio_tools::AdaptiveResamplingBuffer::begin
bool begin()
Initialize the buffer and internal components.
Definition
AdaptiveResamplingBuffer.h:117
audio_tools::AdaptiveResamplingBuffer::levelPercent
float levelPercent() override
Current actual fill level of the backing buffer in percent (0-100).
Definition
AdaptiveResamplingBuffer.h:253
audio_tools::AdaptiveResamplingBuffer::end
void end()
End the buffer and release resources.
Definition
AdaptiveResamplingBuffer.h:152
audio_tools::AdaptiveResamplingBuffer::setKalmanParameters
void setKalmanParameters(float process_noise, float measurement_noise)
Set the Kalman filter parameters.
Definition
AdaptiveResamplingBuffer.h:460
audio_tools::AdaptiveResamplingBuffer::setMinRecalculateInterval
void setMinRecalculateInterval(uint32_t interval_ms)
Minimum time between actual PID/Kalman recomputations, in milliseconds. writeArray() calls recalculat...
Definition
AdaptiveResamplingBuffer.h:403
audio_tools::AdaptiveResamplingBuffer::levelPercentSmoothed
float levelPercentSmoothed()
Get the Kalman-smoothed fill level from the last recalculate() call, in percent.
Definition
AdaptiveResamplingBuffer.h:444
audio_tools::AdaptiveResamplingBuffer::setAudioInfo
void setAudioInfo(AudioInfo info) override
Defines the audio format: needed to correctly interpret and resample the sample frames stored in the ...
Definition
AdaptiveResamplingBuffer.h:104
audio_tools::AdaptiveResamplingBuffer::recalculate
float recalculate()
Recalculate the resampling step size based on buffer fill level. Called automatically by writeArray()...
Definition
AdaptiveResamplingBuffer.h:264
audio_tools::AdaptiveResamplingBuffer::writeArray
int writeArray(const uint8_t data[], int len) override
Definition
AdaptiveResamplingBuffer.h:166
audio_tools::AdaptiveResamplingStream
An Audio Stream backed by a buffer (queue) which tries to correct jitter and automatically adjusts fo...
Definition
AdaptiveResamplingStream.h:25
audio_tools::AdaptiveResamplingStream::setStepRangePercent
void setStepRangePercent(float rangePercent)
Set the allowed resampling range as a percent.
Definition
AdaptiveResamplingStream.h:112
audio_tools::AdaptiveResamplingStream::setStartFillPercent
void setStartFillPercent(float percent)
Defines the fill level (percent) that must be reached once, right after begin(), before any data is r...
Definition
AdaptiveResamplingStream.h:124
audio_tools::AdaptiveResamplingStream::setBuffer
void setBuffer(BaseBuffer< uint8_t > &buffer)
Set the buffer used for audio data.
Definition
AdaptiveResamplingStream.h:49
audio_tools::AdaptiveResamplingStream::setPIDParameters
void setPIDParameters(float p_value, float i_value, float d_value)
Set the PID controller parameters.
Definition
AdaptiveResamplingStream.h:163
audio_tools::AdaptiveResamplingStream::AdaptiveResamplingStream
AdaptiveResamplingStream()
Construct a new AdaptiveResamplingStream object You need to call setBuffer() and setStepRangePercent(...
Definition
AdaptiveResamplingStream.h:31
audio_tools::AdaptiveResamplingStream::isPrimed
bool isPrimed()
Definition
AdaptiveResamplingStream.h:130
audio_tools::AdaptiveResamplingStream::readBytes
size_t readBytes(uint8_t *data, size_t len) override
Read resampled audio data from the buffer.
Definition
AdaptiveResamplingStream.h:96
audio_tools::AdaptiveResamplingStream::setMaxStepChangeRate
void setMaxStepChangeRate(float per_second)
Set the maximum rate at which step_size is allowed to change. See AdaptiveResamplingBuffer::setMaxSte...
Definition
AdaptiveResamplingStream.h:183
audio_tools::AdaptiveResamplingStream::begin
bool begin()
Initialize the stream and internal components.
Definition
AdaptiveResamplingStream.h:58
audio_tools::AdaptiveResamplingStream::AdaptiveResamplingStream
AdaptiveResamplingStream(BaseBuffer< uint8_t > &buffer, float stepRangePercent=5.0f)
Construct a new AdaptiveResamplingStream object.
Definition
AdaptiveResamplingStream.h:38
audio_tools::AdaptiveResamplingStream::write
size_t write(const uint8_t *data, size_t len) override
Write audio data to the buffer.
Definition
AdaptiveResamplingStream.h:80
audio_tools::AdaptiveResamplingStream::levelPercent
float levelPercent()
Get the fill level at the last calculation in percent.
Definition
AdaptiveResamplingStream.h:144
audio_tools::AdaptiveResamplingStream::end
void end()
End the stream and release resources.
Definition
AdaptiveResamplingStream.h:87
audio_tools::AdaptiveResamplingStream::setKalmanParameters
void setKalmanParameters(float process_noise, float measurement_noise)
Set the Kalman filter parameters.
Definition
AdaptiveResamplingStream.h:152
audio_tools::AdaptiveResamplingStream::setMinRecalculateInterval
void setMinRecalculateInterval(uint32_t interval_ms)
Set the minimum time between actual PID/Kalman recomputations. See AdaptiveResamplingBuffer::setMinRe...
Definition
AdaptiveResamplingStream.h:173
audio_tools::AdaptiveResamplingStream::resampling_buffer
AdaptiveResamplingBuffer resampling_buffer
Definition
AdaptiveResamplingStream.h:188
audio_tools::AdaptiveResamplingStream::levelPercentActual
float levelPercentActual()
Get the current actual buffer fill level in percent.
Definition
AdaptiveResamplingStream.h:137
audio_tools::AdaptiveResamplingStream::begin
bool begin(AudioInfo info)
Initialize the stream and internal components with the given audio info.
Definition
AdaptiveResamplingStream.h:68
audio_tools::AdaptiveResamplingStream::recalculate
float recalculate()
Recalculate the resampling step size based on buffer fill level.
Definition
AdaptiveResamplingStream.h:105
audio_tools::AudioInfoSource::addNotifyAudioChange
virtual void addNotifyAudioChange(AudioInfoSupport &bi)
Adds target to be notified about audio changes.
Definition
AudioTypes.h:150
audio_tools::AudioStream
Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...
Definition
BaseStream.h:120
audio_tools::AudioStream::info
AudioInfo info
Definition
BaseStream.h:171
audio_tools::AudioStream::setAudioInfo
virtual void setAudioInfo(AudioInfo newInfo) override
Defines the input AudioInfo.
Definition
BaseStream.h:128
audio_tools::AudioStream::audioInfo
virtual AudioInfo audioInfo() override
provides the actual input AudioInfo
Definition
BaseStream.h:151
audio_tools::BaseBuffer
Shared functionality of all buffers.
Definition
Buffers.h:23
audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition
LMSEchoCancellationStream.h:6
audio_tools::AudioInfo
Basic Audio information which drives e.g. I2S.
Definition
AudioTypes.h:51
Generated by
1.9.8