mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
resample: fix phase calculation
This commit is contained in:
parent
a3c0bb0e9a
commit
595dc0ab5b
2 changed files with 9 additions and 7 deletions
|
|
@ -97,7 +97,7 @@ DEFINE_RESAMPLER(full,arch) \
|
||||||
const float *s = src[c]; \
|
const float *s = src[c]; \
|
||||||
float *d = dst[c]; \
|
float *d = dst[c]; \
|
||||||
\
|
\
|
||||||
index = 0; \
|
index = 0; \
|
||||||
phase = data->phase; \
|
phase = data->phase; \
|
||||||
\
|
\
|
||||||
for (o = offs; o < olen && index + n_taps <= ilen; o++) { \
|
for (o = offs; o < olen && index + n_taps <= ilen; o++) { \
|
||||||
|
|
|
||||||
|
|
@ -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