[alsa-devel] [PATCH] control, hw, rawmidi: accept control device node as card identifier when opening

Lennart Poettering mznyfn at 0pointer.de
Tue May 12 15:24:47 CEST 2009

On Tue, 12.05.09 14:42, Jaroslav Kysela (perex at perex.cz) wrote:

> On Tue, 12 May 2009, Lennart Poettering wrote:
> > With my original patch there are no superfluous opens.
> If application uses more *open() calls from alsa-lib for one card (for 
> example to open ctl handle and pcm handle), it's better to obtain card 
> index at first, because each conversion requires one or more (card id) 
> open/close sequence for control device to get card_info. Providing direct 
> card index eliminates this conversion. It's just suggested optimization.

I think if apps want to open ctl and hw at the same time the most
elegant way would be this:

snd_pcm_open(&pcm, "hw:/dev/snd/by-path/yaddayadda", ...);
snd_pcm_info(pcm, &info);
snd_ctl_open(&ctl, snprint("hw:%i", snd_pcm_info_get_card(info)));

With my patch that costs exactly two open() calls. It's also more
flexible since it will handle arbitrary device strings, doesn't need
to hardcode "hw:".

You seem to suggest this:

i = snd_card_index("hw:/dev/snd/by-path/yaddayadda");
snd_hw_open(&hw, snprint("hw:%i", i));
snd_ctl_open(&ctl, snprint("hw:%i", i));

Which your patch that costs three open()s. And hardcodes "hw". 

I really would like to know why my patch was so bad?


Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net
http://0pointer.net/lennart/           GnuPG 0x1A015CC4

More information about the Alsa-devel mailing list