[alsa-devel] alsa-lib functions reporting conflicting information with two sound cards

nick smethurst nick.smethurst at gmail.com
Thu Apr 19 16:30:37 CEST 2007


Hey guys

I am rather confused that I am getting crossed information when
calling snd_names_list
and snd_pcm_info in order to gather information about pcm devices.

I have two sound cards in my development pc: RME Digi 96/8 PCI and an
onboard VIA 8237.

I'm trying to develop a piece of code that generates a list of objects
containing pcm device information, including information on virtual
devices.

My current idea is to use snd_names_list() to get a full list of
devices, and then get information about them by opening each device
and querying.

The bizzare thing is that snd_names_list() is returning comments that
do not agree with the associated device.

For example, given the following code:

#include <alsa/asoundlib.h>
int main()
{
    snd_devname_t * list;
    snd_config_update();

    snd_names_list("pcm", &list);
    while (list) {
        if (!strcmp(list->name, "hw:0,0")) {
            printf("hw:0,0 comment: %s\n", list->comment);
            break;
        }
        list = list->next;
    }
    snd_names_list_free(list);

    snd_pcm_t * pcm;
    snd_pcm_info_t * pcm_info;
    snd_pcm_info_malloc(&pcm_info);
    snd_pcm_open(&pcm, "hw:0,0", SND_PCM_STREAM_PLAYBACK, 0);
    snd_pcm_info(pcm, pcm_info);
    printf("id: %s\n", snd_pcm_info_get_id(pcm_info));
    snd_pcm_close(pcm);
    snd_pcm_info_free(pcm_info);

    return 0;
}

The result on my pc is:
    hw:0,0 comment: Physical Device - VIA 8237 (Duplex)
    id: Digi96 IEC958

So I'm apparently doing something very wrong here.

I would like to ask if there is an easier and more reliable way of
getting a list of pcm devices and querying them, and if not, what I am
doing wrong here?

Regards

Nicholas


More information about the Alsa-devel mailing list