mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
parent
354a04c91d
commit
5dc4434dc7
1 changed files with 20 additions and 4 deletions
|
|
@ -177,6 +177,7 @@ void
|
||||||
channelmix_f32_2_4_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
channelmix_f32_2_4_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
||||||
const void * SPA_RESTRICT src[], uint32_t n_samples)
|
const void * SPA_RESTRICT src[], uint32_t n_samples)
|
||||||
{
|
{
|
||||||
|
uint32_t i, n_dst = mix->dst_chan;
|
||||||
float **d = (float **)dst;
|
float **d = (float **)dst;
|
||||||
const float **s = (const float **)src;
|
const float **s = (const float **)src;
|
||||||
const float v0 = mix->matrix[0][0];
|
const float v0 = mix->matrix[0][0];
|
||||||
|
|
@ -184,10 +185,25 @@ channelmix_f32_2_4_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
||||||
const float v2 = mix->matrix[2][0];
|
const float v2 = mix->matrix[2][0];
|
||||||
const float v3 = mix->matrix[3][1];
|
const float v3 = mix->matrix[3][1];
|
||||||
|
|
||||||
|
if (SPA_FLAG_IS_SET(mix->flags, CHANNELMIX_FLAG_ZERO)) {
|
||||||
|
for (i = 0; i < n_dst; i++)
|
||||||
|
clear_c(d[i], n_samples);
|
||||||
|
}
|
||||||
|
else {
|
||||||
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);
|
||||||
|
if (mix->upmix != CHANNELMIX_UPMIX_PSD) {
|
||||||
vol_c(d[2], s[0], v2, n_samples);
|
vol_c(d[2], s[0], v2, n_samples);
|
||||||
vol_c(d[3], s[1], v3, n_samples);
|
vol_c(d[3], s[1], v3, n_samples);
|
||||||
|
} else {
|
||||||
|
sub_c(d[2], s[0], s[1], n_samples);
|
||||||
|
|
||||||
|
delay_convolve_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||||
|
mix->taps, mix->n_taps, d[3], d[2], -v3, n_samples);
|
||||||
|
delay_convolve_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||||
|
mix->taps, mix->n_taps, d[2], d[2], v2, n_samples);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MASK_3_1 _M(FL)|_M(FR)|_M(FC)|_M(LFE)
|
#define MASK_3_1 _M(FL)|_M(FR)|_M(FC)|_M(LFE)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue