내 장치가 지원하는 최소 및 최대 채널 수를 얻으려고 합니다. 결과는 예상치 못한 무작위입니다. 실행될 때마다 변경됩니다. 내가 놓친 게 무엇입니까?
// file : capture_nb_chan.c
#include <stdio.h>
#include <alsa/asoundlib.h>
int main(int argc, char* argv[])
{
int err;
snd_pcm_t *capture_handle;
snd_pcm_hw_params_t *hw_params;
unsigned int min, max;
// Open audio device
if ((err = snd_pcm_open (&capture_handle, "hw:0,0", SND_PCM_STREAM_CAPTURE, 0)) < 0)
exit (1);
// Allocate hardware parameters
if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0)
exit (1);
// Initialize parameters
if ((err = snd_pcm_hw_params_any (capture_handle, hw_params)) < 0)
exit (1);
// Get min and max number of channels
err = snd_pcm_hw_params_get_channels_min(hw_params, &min);
if (err < 0)
exit (1);
fprintf(stdout, "Min channels: %u. (%d)\n", min, err);
err = snd_pcm_hw_params_get_channels_max(hw_params, &max);
if (err < 0)
exit (1);
fprintf(stdout, "Max channels: %u. (%d)\n", max, err);
}
컴파일 스크립트
gcc -o capture_nb_chan capture_nb_chan.c -lasound
그것을 실행
./capture_nb_chan
출력은 다음과 같습니다
Min channels: 22031. (2)
Max channels: 681205789. (2)
출력 값은 무작위이며 오류 코드는 다음과 같습니다.2
0
부정적이거나 부정적 일 것으로 예상되는 경우문서.