3#include "AudioTools/CoreAudio/AudioBasic/KalmanFilter.h"
4#include "AudioTools/CoreAudio/AudioBasic/PIDController.h"
5#include "AudioTools/CoreAudio/AudioStreams.h"
6#include "AudioTools/CoreAudio/ResampleStream.h"
33 float stepRangePercent = 5.0f) {
45 if (p_buffer ==
nullptr)
return false;
46 queue_stream.setBuffer(*p_buffer);
51 float from_step = 1.0 - resample_range;
52 float to_step = 1.0 + resample_range;
53 return pid.begin(1.0, from_step, to_step, p, i, d);
63 size_t write(
const uint8_t* data,
size_t len)
override {
64 if (p_buffer ==
nullptr)
return 0;
65 size_t result = p_buffer->
writeArray(data, len);
75 resample_stream.end();
86 size_t readBytes(uint8_t* data,
size_t len)
override {
87 if (p_buffer ==
nullptr)
return 0;
89 return resample_stream.readBytes(data, len);
98 if (p_buffer ==
nullptr)
return step_size;
103 step_size = pid.calculate(50.0, kalman_filter.
calculate());
106 if (read_count++ % 100 == 0) {
107 LOGI(
"step_size: %f", step_size);
121 resample_range = rangePercent / 100.0;
130 if (p_buffer ==
nullptr)
return 0.0f;
148 kalman_filter.
begin(process_noise, measurement_noise);
170 float step_size = 1.0;
171 float resample_range = 0;
175 float level_percent = 0.0;
176 uint32_t read_count = 0;