Wim Taymans
0868ff1ada
math: improve denormal check
...
Use isnormal() when we can
2025-01-13 16:10:34 +01:00
Wim Taymans
2c0ce6afc2
audioconvert: SSE optimize delay and convolver
2024-10-15 16:10:25 +02:00
Wim Taymans
ad84c45c0c
audioconvert: optimize lr4 handling
...
Make an SSE optimized LR4 function and one that handles 2 LR4s in
parallel.
2024-10-15 12:20:04 +02:00
Wim Taymans
fec3730489
audioconvert: avoid a memcpy when we can
2024-10-15 12:19:17 +02:00
Barnabás Pőcze
934ab3036e
treewide: use SPDX tags to specify copyright information
...
SPDX tags make the licensing information easy to understand and clear,
and they are machine parseable.
See https://spdx.dev for more information.
2023-02-16 10:54:48 +00:00
Wim Taymans
497c695d6f
channelmix: optimize some more nXm cases
...
Loop though coefficients, when all are 0, clear the destination.
When only one coefficient is used, simply copy with volume.
Otherwise run the complete convolution.
2022-09-29 13:21:23 +02:00
Wim Taymans
637bc6f7c4
channelmix: add optimised NxM channelmix functions
2022-09-28 17:50:59 +02:00
Wim Taymans
8e1f0628f7
channelmix: add 3p1_2 and use this for quad conversions
...
Simplify some SSE versions
2022-06-13 20:35:00 +02:00
Ole Salscheider
5dc4434dc7
channelmix: Implement PSD upmixing for stereo -> quad
...
Fixes #2436 .
2022-06-13 14:19:23 +00:00
Wim Taymans
e353999028
channelmix: use average for center and LFE
...
Stops the LFE from clipping.
2022-04-20 16:09:39 +02:00
Wim Taymans
66e4334c92
channelmix: reuse more functions
...
Make some copy/vol functions and reuse them.
Reuse the 2->3p1 upmix code, tweak it a little to that the widen
param is always used.
2022-04-12 11:54:27 +02:00
Wim Taymans
bc5b486cb9
channelmix: add simple upmix method
...
Add a property to select the upmix method. PSD is enabled by default
but a new simple upmixing algorithm is available that duplicates
channels and avoids lowpass filter on the FC and disables widening.
Fixes #861
2022-03-14 15:33:07 +01:00
Wim Taymans
5b3388e4ac
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
2022-03-01 11:09:43 +01:00
Wim Taymans
5dd0a12875
channelmix: add option for stereo widen
...
When generating FC, add an option to subtract some of the generated
FC from the FL and FR channel to move the sound more to the center.
See #861
2022-03-01 10:28:11 +01:00
Wim Taymans
60b338d4cf
channelmix: place L-R in rear channels
...
L-R is supposed to be the ambient sound, which should sound better in
the rear channels.
2022-03-01 10:14:07 +01:00
Wim Taymans
5a307c11e1
audioconvert: add delay to rear channels when upmixing
...
See #861
2022-03-01 09:56:12 +01:00
Wim Taymans
d62d2764e8
channelmix: improve corssover processing
...
Apply volume after crossover, optimize when disabled or silent.
2022-03-01 09:08:17 +01:00
Wim Taymans
2e8e8938bc
channelmix: add stereo to 7.1 upmix
2022-02-24 16:09:14 +01:00
Wim Taymans
b1ca470d99
channelmix: don't pass channels around
...
We have this info in the channelmix structure.
2022-02-24 13:09:25 +01:00
Wim Taymans
5724093343
audioconvert: run lr4 on tagged channels in generic case
...
Mark the LFE channels and run the lowpass filter on them in
the generic case. Generates LFE correctly in 2.1 upmix case.
See #1095
2021-04-26 17:34:14 +02:00
Wim Taymans
14e8073d18
audioconvert: add LFE filter
...
Use a lowpass filter to generate LFE from the stereo channels.
2021-03-17 11:28:40 +01:00
Wim Taymans
e51cc5b537
channelmix: Prepare for generating LFE channel
...
Add channelmix.lfe-cutoff property, 0 is disabled
Disable upmix by default
2021-03-17 11:09:19 +01:00
Wim Taymans
17fd38c3a5
channelmix: use front-center matrix values
...
Use the front-center matrix values to mix left and right.
2021-03-14 15:42:53 +01:00
Wim Taymans
00d8d1472d
channelmix: fix 7.1 to quad downmix
2021-03-01 19:51:14 +01:00
Wim Taymans
d080cd4819
channelmix: fix 7.1 to stereo and 3.1 downmix
2021-02-25 16:18:40 +01:00
Wim Taymans
9a7cbeea83
channelmix: improve undefined channel layout
...
When we have no channel layout, just copy input to output
channel.
Optimize this case in the mixer implementation.
2020-09-04 13:41:24 +02:00
Wim Taymans
f7d8fef070
channelmix: normalize volumes
...
Normalize the volumes.
Don't mix in LFE by default but add an option
Move some booleans to flags
Improve some checks for fastpaths.
2020-09-03 13:20:36 +02:00
Wim Taymans
4867edb947
channelmix: read mix coefficients correctly
...
Fix 5p1 to stereo mixdown by reading the coefficients correctly.
Align 5p1 to quad SSE and C implementation
Fixes #272
2020-09-02 11:15:23 +02:00
Wim Taymans
87ae7a8011
channelmix: apply channel volumes correctly
2019-08-14 14:56:16 +02:00
Wim Taymans
c6a7b3eedb
channelmix: implement per channel volume
...
Implement per channel volume on channelmix. Extend control on stream to
take an array of values when possible.
Remove name argument from pw_node_new and pw_device_new. We can pass
this as a property instead.
Improve properties on nodes to more closely match what pulseaudio does.
Don't let the monitor do too much with the udev properties but let the
session manager set the description and icon-names.
Remove some change_mask flags for things that don't change in
introspect. Use the flags to mark changes in -cli and -monitor.
2019-08-12 15:14:39 +02:00
Wim Taymans
d8e399dee9
audioconvert: pass state to functions
...
Pass some state to convert and channelmix functions. This makes it
possible to select per channel optimized convert functions but
also makes it possible to implement noise shaping later.
Pass the channelmix matrix and volume in the state.
Handle specialized 2 channel s16 -> f32 conversion
2019-03-29 17:39:59 +01:00
Wim Taymans
d260cb19be
audioconvert: compile c version separately
...
Also compile the c versions in a separate module with their own
flags.
2019-03-28 21:07:53 +01:00