resampler: Only use copy when rate is 1.0

The rate we get from dlls can have a subsample precision. However,
the check for using process_copy is in sample precision. This means
that an adaptive stream will oscillate rather then lock into the
exact rate.
This commit is contained in:
Dimitrios Katsaros 2024-02-16 13:45:31 +01:00 committed by Wim Taymans
parent e25f7716b5
commit 1f578e858c

View file

@ -157,7 +157,7 @@ static void impl_native_update_rate(struct resample *r, double rate)
data->inc = data->in_rate / data->out_rate; data->inc = data->in_rate / data->out_rate;
data->frac = data->in_rate % data->out_rate; data->frac = data->in_rate % data->out_rate;
if (data->in_rate == data->out_rate) { if (data->in_rate == data->out_rate && rate == 1.0) {
data->func = data->info->process_copy; data->func = data->info->process_copy;
r->func_name = data->info->copy_name; r->func_name = data->info->copy_name;
} }