mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
channelmix: use average for center and LFE
Stops the LFE from clipping.
This commit is contained in:
parent
f6dbd75e61
commit
e353999028
1 changed files with 4 additions and 4 deletions
|
|
@ -47,11 +47,11 @@ static inline void vol_c(float *d, const float *s, float vol, uint32_t n_samples
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void add_c(float *d, const float *s0, const float *s1, uint32_t n_samples)
|
static inline void avg_c(float *d, const float *s0, const float *s1, uint32_t n_samples)
|
||||||
{
|
{
|
||||||
uint32_t n;
|
uint32_t n;
|
||||||
for (n = 0; n < n_samples; n++)
|
for (n = 0; n < n_samples; n++)
|
||||||
d[n] = s0[n] + s1[n];
|
d[n] = (s0[n] + s1[n]) * 0.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void sub_c(float *d, const float *s0, const float *s1, uint32_t n_samples)
|
static inline void sub_c(float *d, const float *s0, const float *s1, uint32_t n_samples)
|
||||||
|
|
@ -211,14 +211,14 @@ channelmix_f32_2_3p1_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
||||||
if (mix->widen == 0.0f) {
|
if (mix->widen == 0.0f) {
|
||||||
vol_c(d[0], s[0], v0, n_samples);
|
vol_c(d[0], s[0], v0, n_samples);
|
||||||
vol_c(d[1], s[1], v1, n_samples);
|
vol_c(d[1], s[1], v1, n_samples);
|
||||||
add_c(d[2], s[0], s[1], n_samples);
|
avg_c(d[2], s[0], s[1], n_samples);
|
||||||
} else {
|
} else {
|
||||||
for (n = 0; n < n_samples; n++) {
|
for (n = 0; n < n_samples; n++) {
|
||||||
float c = s[0][n] + s[1][n];
|
float c = s[0][n] + s[1][n];
|
||||||
float w = c * mix->widen;
|
float w = c * mix->widen;
|
||||||
d[0][n] = (s[0][n] - w) * v0;
|
d[0][n] = (s[0][n] - w) * v0;
|
||||||
d[1][n] = (s[1][n] - w) * v1;
|
d[1][n] = (s[1][n] - w) * v1;
|
||||||
d[2][n] = c;
|
d[2][n] = c * 0.5f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lr4_process(&mix->lr4[3], d[3], d[2], v3, n_samples);
|
lr4_process(&mix->lr4[3], d[3], d[2], v3, n_samples);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue