Using snd_device_name_hint() with iface "card"
GitHub issues - edited
github at alsa-project.org
Sat Oct 22 00:27:39 CEST 2022
alsa-project/alsa-lib issue #277 was edited from MathisMARION:
Hello,
I have been experimenting with the `alsa` library, and I tried to use the `snd_device_name_hint()` function to print information about devices. It doesn't seem documented [here](https://www.alsa-project.org/alsa-doc/alsa-lib/group___control.html) so I looked up for examples online, and explored the source code as well.
Looking at the [source code](https://github.com/alsa-project/alsa-lib/blob/master/src/control/namehint.c#L582), it seems like the function should be able to take `"card"` as a valid interface. However when I run this function, it returns `ENOENT`. I ran my program with `gdb` and found that [this call](https://github.com/alsa-project/alsa-lib/blob/master/src/control/namehint.c#L639) to `add_card()` was returning the error. `add_card` calls `snd_config_search` which loops through a list to find a match. In my case I found out that the list contained `"cards"` (with an `s`), while the code was searching for `"card"` so I am left wondering if this was done on purpose. Moreover I can get info about my sound cards using `/proc/asound/cards` (with an `s` again) so it makes me doubt even more...
I am running Ubuntu 20.04.5, and have installed `libasound2-dev` version `1.2.2-2.1ubuntu2.5`. I can give more info about my setup if needed, I am just unsure what other info would help as of right now.
Here's a simple program reproducing my issue:
```c
#include <alsa/asoundlib.h>
#include <stdio.h>
int main()
{
void **hints;
int ret;
ret = snd_device_name_hint(-1, "card", &hints);
if (ret) {
printf("snd_device_name_hint: %s\n", snd_strerror(ret));
return EXIT_FAILURE;
}
snd_device_name_free_hint(hints);
return EXIT_SUCCESS;
}
```
```
snd_device_name_hint: No such file or directory
```
Putting `"cards"` instead results in `EINVAL`:
```
snd_device_name_hint: Invalid argument
```
Issue URL : https://github.com/alsa-project/alsa-lib/issues/277
Repository URL: https://github.com/alsa-project/alsa-lib
More information about the Alsa-devel
mailing list