[alsa-devel] Patches for libasound to support upcoming Audacious 2.2

John Lindgren john.lindgren at tds.net
Mon Oct 26 03:21:09 CET 2009


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: conf.c.diff
Type: text/x-patch
Size: 394 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20091025/2781670a/attachment.diff 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dlmisc.c.diff
Type: text/x-patch
Size: 453 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20091025/2781670a/attachment-0001.diff 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: namehint.c.diff
Type: text/x-patch
Size: 1926 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20091025/2781670a/attachment-0002.diff 


More information about the Alsa-devel mailing list