mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
Updated to latest API
This commit is contained in:
parent
d6b4cfe7f2
commit
3e6f423501
1 changed files with 77 additions and 54 deletions
131
test/control.c
131
test/control.c
|
|
@ -4,76 +4,99 @@
|
|||
|
||||
int main(void)
|
||||
{
|
||||
int idx, idx1, cards, err;
|
||||
int idx, dev, err;
|
||||
snd_ctl_t *handle;
|
||||
snd_ctl_card_info_t info;
|
||||
snd_pcm_info_t pcminfo;
|
||||
snd_mixer_info_t mixerinfo;
|
||||
snd_rawmidi_info_t rawmidiinfo;
|
||||
snd_ctl_card_info_t *info;
|
||||
snd_pcm_info_t *pcminfo;
|
||||
snd_rawmidi_info_t *rawmidiinfo;
|
||||
char str[128];
|
||||
|
||||
cards = snd_cards();
|
||||
printf("Detected %i soundcard%s...\n", cards, cards != 1 ? "s" : "");
|
||||
if (cards <= 0) {
|
||||
printf("Giving up...\n");
|
||||
return 0;
|
||||
}
|
||||
for (idx = 0; idx < cards; idx++) {
|
||||
if ((err = snd_ctl_open(&handle, idx)) < 0) {
|
||||
snd_ctl_card_info_alloca(&info);
|
||||
snd_pcm_info_alloca(&pcminfo);
|
||||
snd_rawmidi_info_alloca(&rawmidiinfo);
|
||||
|
||||
idx = -1;
|
||||
while (1) {
|
||||
if ((err = snd_card_next(&idx)) < 0) {
|
||||
printf("Card next error: %s\n", snd_strerror(err));
|
||||
break;
|
||||
}
|
||||
if (idx < 0)
|
||||
break;
|
||||
sprintf(str, "hw:CARD=%i", idx);
|
||||
if ((err = snd_ctl_open(&handle, str, 0)) < 0) {
|
||||
printf("Open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if ((err = snd_ctl_card_info(handle, &info)) < 0) {
|
||||
if ((err = snd_ctl_card_info(handle, info)) < 0) {
|
||||
printf("HW info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
printf("Soundcard #%i:\n", idx + 1);
|
||||
printf(" type - %i\n", info.type);
|
||||
printf(" pcm devs - %i\n", info.pcmdevs);
|
||||
printf(" mixer devs - %i\n", info.mixerdevs);
|
||||
printf(" midi devs - %i\n", info.mididevs);
|
||||
memset(str, 0, sizeof(str));
|
||||
strncpy(str, info.id, sizeof(info.id));
|
||||
printf(" id - '%s'\n", str);
|
||||
printf(" abbreviation - '%s'\n", info.abbreviation);
|
||||
printf(" name - '%s'\n", info.name);
|
||||
printf(" longname - '%s'\n", info.longname);
|
||||
for (idx1 = 0; idx1 < info.pcmdevs; idx1++) {
|
||||
printf("PCM info, device #%i:\n", idx1);
|
||||
if ((err = snd_ctl_pcm_info(handle, idx1, &pcminfo)) < 0) {
|
||||
printf(" card - %i\n", snd_ctl_card_info_get_card(info));
|
||||
printf(" id - '%s'\n", snd_ctl_card_info_get_id(info));
|
||||
printf(" driver - '%s'\n", snd_ctl_card_info_get_driver(info));
|
||||
printf(" name - '%s'\n", snd_ctl_card_info_get_name(info));
|
||||
printf(" longname - '%s'\n", snd_ctl_card_info_get_longname(info));
|
||||
printf(" mixername - '%s'\n", snd_ctl_card_info_get_mixername(info));
|
||||
printf(" components - '%s'\n", snd_ctl_card_info_get_components(info));
|
||||
dev = -1;
|
||||
while (1) {
|
||||
snd_pcm_sync_id_t sync;
|
||||
if ((err = snd_ctl_pcm_next_device(handle, &dev)) < 0) {
|
||||
printf(" PCM next device error: %s\n", snd_strerror(err));
|
||||
break;
|
||||
}
|
||||
if (dev < 0)
|
||||
break;
|
||||
snd_pcm_info_set_device(pcminfo, dev);
|
||||
snd_pcm_info_set_subdevice(pcminfo, 0);
|
||||
snd_pcm_info_set_stream(pcminfo, SND_PCM_STREAM_PLAYBACK);
|
||||
if ((err = snd_ctl_pcm_info(handle, pcminfo)) < 0) {
|
||||
printf(" PCM info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
printf(" type - %i\n", pcminfo.type);
|
||||
printf(" flags - 0x%x\n", pcminfo.flags);
|
||||
printf(" id - '%s'\n", pcminfo.id);
|
||||
printf(" name - '%s'\n", pcminfo.name);
|
||||
printf(" playback - %i\n", pcminfo.playback);
|
||||
printf(" capture - %i\n", pcminfo.capture);
|
||||
printf("PCM info, device #%i:\n", dev);
|
||||
printf(" device - %i\n", snd_pcm_info_get_device(pcminfo));
|
||||
printf(" subdevice - %i\n", snd_pcm_info_get_subdevice(pcminfo));
|
||||
printf(" stream - %i\n", snd_pcm_info_get_stream(pcminfo));
|
||||
printf(" card - %i\n", snd_pcm_info_get_card(pcminfo));
|
||||
printf(" id - '%s'\n", snd_pcm_info_get_id(pcminfo));
|
||||
printf(" name - '%s'\n", snd_pcm_info_get_name(pcminfo));
|
||||
printf(" subdevice name - '%s'\n", snd_pcm_info_get_subdevice_name(pcminfo));
|
||||
printf(" class - 0x%x\n", snd_pcm_info_get_class(pcminfo));
|
||||
printf(" subclass - 0x%x\n", snd_pcm_info_get_subclass(pcminfo));
|
||||
printf(" subdevices count - %i\n", snd_pcm_info_get_subdevices_count(pcminfo));
|
||||
printf(" subdevices avail - %i\n", snd_pcm_info_get_subdevices_avail(pcminfo));
|
||||
sync = snd_pcm_info_get_sync(pcminfo);
|
||||
printf(" sync - 0x%x,0x%x,0x%x,0x%x\n", sync.id32[0], sync.id32[1], sync.id32[2], sync.id32[3]);
|
||||
}
|
||||
for (idx1 = 0; idx1 < info.mixerdevs; idx1++) {
|
||||
printf("MIXER info, device #%i:\n", idx1);
|
||||
if ((err = snd_ctl_mixer_info(handle, idx1, &mixerinfo)) < 0) {
|
||||
printf(" MIXER info error: %s\n", snd_strerror(err));
|
||||
dev = -1;
|
||||
while (1) {
|
||||
if ((err = snd_ctl_rawmidi_next_device(handle, &dev)) < 0) {
|
||||
printf(" RAWMIDI next device error: %s\n", snd_strerror(err));
|
||||
break;
|
||||
}
|
||||
if (dev < 0)
|
||||
break;
|
||||
snd_rawmidi_info_set_device(rawmidiinfo, dev);
|
||||
snd_rawmidi_info_set_subdevice(rawmidiinfo, 0);
|
||||
snd_rawmidi_info_set_stream(rawmidiinfo, SND_RAWMIDI_STREAM_OUTPUT);
|
||||
if ((err = snd_ctl_rawmidi_info(handle, rawmidiinfo)) < 0) {
|
||||
printf(" RAWMIDI info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
printf(" type - %i\n", mixerinfo.type);
|
||||
printf(" elements - %i\n", mixerinfo.elements);
|
||||
printf(" groups - %i\n", mixerinfo.groups);
|
||||
printf(" attrib - 0x%x\n", mixerinfo.attrib);
|
||||
printf(" id - '%s'\n", mixerinfo.id);
|
||||
printf(" name - '%s'\n", mixerinfo.name);
|
||||
}
|
||||
for (idx1 = 0; idx1 < info.mididevs; idx1++) {
|
||||
printf("RAWMIDI info, device #%i:\n", idx1);
|
||||
if ((err = snd_ctl_rawmidi_info(handle, idx1, &rawmidiinfo)) < 0) {
|
||||
printf(" MIXER info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
printf(" type - %i\n", rawmidiinfo.type);
|
||||
printf(" flags - 0x%x\n", rawmidiinfo.flags);
|
||||
printf(" id - '%s'\n", rawmidiinfo.id);
|
||||
printf(" name - '%s'\n", rawmidiinfo.name);
|
||||
printf("RAWMIDI info, device #%i:\n", dev);
|
||||
printf(" device - %i\n", snd_rawmidi_info_get_device(rawmidiinfo));
|
||||
printf(" subdevice - %i\n", snd_rawmidi_info_get_subdevice(rawmidiinfo));
|
||||
printf(" stream - %i\n", snd_rawmidi_info_get_stream(rawmidiinfo));
|
||||
printf(" card - %i\n", snd_rawmidi_info_get_card(rawmidiinfo));
|
||||
printf(" flags - 0x%x\n", snd_rawmidi_info_get_flags(rawmidiinfo));
|
||||
printf(" id - '%s'\n", snd_rawmidi_info_get_id(rawmidiinfo));
|
||||
printf(" name - '%s'\n", snd_rawmidi_info_get_name(rawmidiinfo));
|
||||
printf(" subname - '%s'\n", snd_rawmidi_info_get_subdevice_name(rawmidiinfo));
|
||||
printf(" subdevices count - %i\n", snd_rawmidi_info_get_subdevices_count(rawmidiinfo));
|
||||
printf(" subdevices avail - %i\n", snd_rawmidi_info_get_subdevices_avail(rawmidiinfo));
|
||||
}
|
||||
snd_ctl_close(handle);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue