mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
resample: fix phase calculation
This commit is contained in:
parent
a3c0bb0e9a
commit
595dc0ab5b
2 changed files with 9 additions and 7 deletions
|
|
@ -100,19 +100,21 @@ static void impl_native_update_rate(struct resample *r, double rate)
|
||||||
out_rate = r->o_rate;
|
out_rate = r->o_rate;
|
||||||
phase = data->phase;
|
phase = data->phase;
|
||||||
|
|
||||||
spa_log_trace_fp(r->log, "native %p: new rate:%f", r, rate);
|
|
||||||
|
|
||||||
gcd = calc_gcd(in_rate, out_rate);
|
gcd = calc_gcd(in_rate, out_rate);
|
||||||
gcd = calc_gcd(gcd, phase);
|
in_rate /= gcd;
|
||||||
|
out_rate /= gcd;
|
||||||
|
|
||||||
data->rate = rate;
|
data->rate = rate;
|
||||||
data->phase = phase / gcd;
|
data->phase = phase * out_rate / data->out_rate;
|
||||||
data->in_rate = in_rate / gcd;
|
data->in_rate = in_rate;
|
||||||
data->out_rate = out_rate / gcd;
|
data->out_rate = out_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;
|
||||||
|
|
||||||
|
spa_log_trace_fp(r->log, "native %p: rate:%f in:%d out:%d phase:%d inc:%d frac:%d", r,
|
||||||
|
rate, data->in_rate, data->out_rate, data->phase, data->inc, data->frac);
|
||||||
|
|
||||||
if (data->in_rate == data->out_rate)
|
if (data->in_rate == data->out_rate)
|
||||||
data->func = do_resample_copy_c;
|
data->func = do_resample_copy_c;
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue