snd_pcm_hw_params_get_channels_min 및 snd_pcm_hw_params_get_channels_max의 결과가 일치하지 않습니다.

snd_pcm_hw_params_get_channels_min 및 snd_pcm_hw_params_get_channels_max의 결과가 일치하지 않습니다.

내 장치가 지원하는 최소 및 최대 채널 수를 얻으려고 합니다. 결과는 예상치 못한 무작위입니다. 실행될 때마다 변경됩니다. 내가 놓친 게 무엇입니까?

// 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)

출력 값은 무작위이며 오류 코드는 다음과 같습니다.20부정적이거나 부정적 일 것으로 예상되는 경우문서.

관련 정보