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:
Julien Massot 2025-07-04 14:51:15 +02:00 committed by Wim Taymans
parent deb7dddbef
commit 8aa836d588
3 changed files with 13 additions and 2 deletions

View file

@ -244,6 +244,7 @@ struct state {
uint64_t underrun;
struct spa_dll dll;
double dll_bw_max;
double max_error;
double max_resync;
double err_avg, err_var, err_wdw;