修复延迟补偿不准确

This commit is contained in:
Nanako 2024-07-23 20:24:23 +08:00
parent e77638960c
commit fc15987207
2 changed files with 6 additions and 5 deletions

View File

@ -24,12 +24,15 @@ void latency_compensator::init() {
}
void latency_compensator::set_latency(uint32_t in_latency) {
latency_ = in_latency;
const uint32_t block_size = g_audio_device_manager.get_buffer_size();
const int32_t block_num = std::ceil((float)in_latency / block_size) + 1;
if (in_latency > 0)
in_latency += block_size;
const int32_t need_block = std::ceil((float)in_latency / block_size);
const int32_t block_num = need_block + 3;
resize(block_num * block_size);
push_zeros(in_latency);
latency_ = in_latency;
}
void latency_compensator::push(audio_buffer& in_buffer) {

View File

@ -32,8 +32,6 @@ protected:
}
// 在缓冲区前面补0, 相当于整个缓冲区向后移动
void push_zeros(uint32_t num_samples) {
if (num_samples == 0)
return;
for (auto& channel : internal_buffer) {
channel.push_zeros(num_samples);
}