0
현재 함수를 호출하여으로 전달하여 Alsa 장치에 대한 정보를 얻으려고 시도하고 있습니다. 특별히 snd_pcm_query_chmaps
에서 채널 정보를 가져올 계획입니다. 내가 얻는 오류 코드는 Device or resource busy
입니다. 이 정보를 얻는 또 다른 방법이 있거나 다른 응용 프로그램에서 "바쁜"방식이 아닌 방법으로 pcm을 열면 궁금합니다. 가능하다면이 정보를 어떻게 얻을 수 있습니까? 장치가 바쁠 때 작동합니다.바쁜 Alsa 장치에 대한 정보를 얻을 수 있습니까?
내 코드의 관련 단편은
snd_pcm_t* pcm;
int err;
if ((err = snd_pcm_open(&pcm, name, SND_PCM_STREAM_PLAYBACK, 0)) == 0 || (err = snd_pcm_open(&pcm, name, SND_PCM_STREAM_CAPTURE, 0)) == 0) {
snd_pcm_info_t* pcm_info;
if (snd_pcm_info_malloc(&pcm_info) == 0) {
if (snd_pcm_info(pcm, pcm_info) == 0) {
printf("Card number: %d\n", snd_pcm_info_get_card(pcm_info));
printf("Device number: %d\n", snd_pcm_info_get_device(pcm_info));
printf("Subdevice number: %d\n", snd_pcm_info_get_subdevice(pcm_info));
}
snd_pcm_info_free(pcm_info);
}
snd_pcm_close(pcm);
} else {
printf("Erroring opening PCM device with error: %s\n", snd_strerror(err));
}
나는'snd_pcm_query_chmaps_from_hw' 함수에서 채널 맵 정보를 얻는 방법이 있다는 것을 나중에 깨달았습니다. 문서에서 PCM을 열 필요가 없다고 말했기 때문입니다. 'snd_ctl_pcm_info'에 대한 귀하의 포인터는 도움이되는 것 이상입니다 :) – Greenbeard