修复延迟补偿不准确
This commit is contained in:
parent
e77638960c
commit
fc15987207
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user