[alsa-devel] Patches for libasound to support upcoming Audacious 2.2
Hello,
I've been working on the ALSA output for the upcoming 2.2 release of Audacious media player and have run into some problems in snd_device_name_hint, which is now used to show the user a list of possible output devices. I've written patches which correct those problems.
The biggest problem is that in several places, functions called by snd_device_name_hint call snd_config_delete on sections of the config returned by snd_config_search. Once these sections are deleted, future calls to snd_pcm_open fail miserably.
ALSA lib conf.c:4600:(snd_config_expand) Unknown parameters CARD=ICH6,DEV=0 ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM front:CARD=ICH6,DEV=0 alsa-gapless: snd_pcm_open failed: Invalid argument.
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM pulse alsa-gapless: snd_pcm_open failed: No such file or directory.
A smaller but still annoying problem shows up only once the offending snd_config_delete calls are taken out: software devices, such as "pulse" and "null" are listed twice or three times depending on how many hardware devices I have plugged in.
A third problem is that "ctl" seems to be arbitrarily left out of the list of device types that snd_device_name_hint will search for. I've added it to the list in this patch, and it seems to work fine.
Finally, a performance issue: snd_device_name_hint indirectly calls snd_dlopen frequently with the parameter name == NULL, meaning to open libasound.so itself. In this case, snd_dlopen calls dladdr every call to find out the path to libasound.so. Caching this path within snd_dlopen so that dladdr is called only once speeds up the execution time of snd_device_name_hint (a somewhat slow call) by 40%.
I am attaching three patches that fix these problems: - src/conf.c - src/dlmisc.c - src/control/namehint.c
Peace, John Lindgren
participants (1)
-
John Lindgren