mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
alsa-pcm: add support for api.alsa.dll-bandwidth-max
In USB Audio Class 2 (UAC2) setups, pitch control is handled by feedback endpoints. The host adjusts its data rate accordingly. When pitch control is active (pitch_elem), applying the default delay-locked loop (DLL) bandwidth can lead to instability and oscillations around the target rate. This patch adds a new parameter, api.alsa.dll-bandwidth-max, to configure the maximum DLL bandwidth. It introduces a new field in the ALSA state to store this value. By default, it uses SPA_DLL_BW_MAX, but when pitch control is in use, setting it to a lower value (e.g. 0.02) helps ensure better stability, based on empirical testing.
This commit is contained in:
parent
deb7dddbef
commit
8aa836d588
3 changed files with 13 additions and 2 deletions
|
|
@ -778,6 +778,12 @@ Setting this to 0 makes htimestamp never get disabled.
|
|||
Disable timer-based scheduling, and use IRQ for scheduling instead.
|
||||
The "Pro Audio" profile will usually enable this setting, if it is expected it works on the hardware.
|
||||
|
||||
@PAR@ node-prop api.alsa.dll-bandwidth-max # double
|
||||
Sets the maximum bandwidth of the DLL (delay-locked loop) filter used to smooth out rate adjustments.
|
||||
The default value may be too responsive in some scenarios.
|
||||
For example, with UAC2 pitch control, the host reacts more slowly compared to local resampling,
|
||||
so using a lower bandwidth helps avoid oscillations or instability.
|
||||
|
||||
@PAR@ node-prop api.alsa.auto-link = false # boolean
|
||||
Link follower PCM devices to the driver PCM device when using IRQ-based scheduling.
|
||||
The "Pro Audio" profile will usually enable this setting, if it is expected it works on the hardware.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue