mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
audioconvert: add optional hilbert transform to rear channels
Add an option to do a hilbert transform on the generated rear channels to do a 90 degree pahse shift on them. This can improve spacialization of the rear channels. See #861
This commit is contained in:
parent
5dd0a12875
commit
5b3388e4ac
9 changed files with 121 additions and 17 deletions
|
|
@ -302,10 +302,10 @@ channelmix_f32_2_5p1_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
|||
lr4_process(&mix->lr4[2], d[2], d[3], v2, n_samples);
|
||||
lr4_process(&mix->lr4[3], d[3], d[3], v3, n_samples);
|
||||
|
||||
delay_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
d[4], d[5], v4, n_samples);
|
||||
delay_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
d[5], d[5], v5, n_samples);
|
||||
delay_convolve_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[4], d[5], v4, n_samples);
|
||||
delay_convolve_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[5], d[5], -v5, n_samples);
|
||||
}
|
||||
else {
|
||||
for (n = 0; n < n_samples; n++) {
|
||||
|
|
@ -320,10 +320,10 @@ channelmix_f32_2_5p1_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
|||
lr4_process(&mix->lr4[2], d[2], d[3], v2, n_samples);
|
||||
lr4_process(&mix->lr4[3], d[3], d[3], v3, n_samples);
|
||||
|
||||
delay_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
d[4], d[5], v4, n_samples);
|
||||
delay_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
d[5], d[5], v5, n_samples);
|
||||
delay_convolve_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[4], d[5], v4, n_samples);
|
||||
delay_convolve_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[5], d[5], -v5, n_samples);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -362,10 +362,10 @@ channelmix_f32_2_7p1_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
|||
lr4_process(&mix->lr4[2], d[2], d[3], v2, n_samples);
|
||||
lr4_process(&mix->lr4[3], d[3], d[3], v3, n_samples);
|
||||
|
||||
delay_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
d[6], d[7], v6, n_samples);
|
||||
delay_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
d[7], d[7], v7, n_samples);
|
||||
delay_convolve_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[6], d[7], v6, n_samples);
|
||||
delay_convolve_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[7], d[7], -v7, n_samples);
|
||||
}
|
||||
else {
|
||||
for (n = 0; n < n_samples; n++) {
|
||||
|
|
@ -382,10 +382,10 @@ channelmix_f32_2_7p1_c(struct channelmix *mix, void * SPA_RESTRICT dst[],
|
|||
lr4_process(&mix->lr4[2], d[2], d[3], v2, n_samples);
|
||||
lr4_process(&mix->lr4[3], d[3], d[3], v3, n_samples);
|
||||
|
||||
delay_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
d[6], d[7], v6, n_samples);
|
||||
delay_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
d[7], d[7], v7, n_samples);
|
||||
delay_convolve_run(mix->buffer[0], &mix->pos[0], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[6], d[7], v6, n_samples);
|
||||
delay_convolve_run(mix->buffer[1], &mix->pos[1], BUFFER_SIZE, mix->delay,
|
||||
mix->taps, mix->n_taps, d[7], d[7], -v7, n_samples);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue