3#include "AudioTools/AudioLibs/PIDController.h"
4#include "AudioTools/CoreAudio/AudioBasic/MovingAverage.h"
5#include "AudioTools/CoreAudio/AudioStreams.h"
6#include "AudioTools/CoreAudio/ResampleStream.h"
24 float stepRangePercent = 0.05) {
31 if (p_buffer ==
nullptr)
return false;
32 queue_stream.setBuffer(*p_buffer);
37 float from_step = 1.0 - resample_range;
38 float to_step = 1.0 + resample_range;
39 return pid.begin(1.0, from_step, to_step, p, i, d);
43 size_t write(
const uint8_t* data,
size_t len)
override {
44 if (p_buffer == 0)
return 0;
43 size_t write(
const uint8_t* data,
size_t len)
override {
…}
50 resample_stream.end();
54 size_t readBytes(uint8_t* data,
size_t len)
override {
58 moving_average_level_percent.add(p_buffer->
levelPercent());
59 step_size = pid.calculate(50.0, moving_average_level_percent.average());
62 if (read_count++ % 10 == 0) {
63 LOGI(
"step_size: %f", step_size);
68 return resample_stream.readBytes(data, len);
74 moving_average_level_percent.
setSize(size);
80 resample_range = rangePercent / 100.0;
95 ResampleStream resample_stream;
96 float step_size = 1.0;
97 float resample_range = 0;
101 uint32_t read_count = 0;