alsa 라이브러리가있는 내 Linux (debian) 임베디드 장치에 사운드를 녹음하려고합니다. 내 임베디드 하드웨어는이 [1]이며 데이터 시트 페이지 33 [2]에 따라Alsa Lib 하드웨어 매개 변수 설정
아날로그 오디오 신호는 on-SOM TLV320AIC3106 오디오 코덱에서 제공됩니다.
이 텍사스 인스트루먼트 오디오 코덱 [3]의 데이터 시트
를 들면
내가 ALSA lib에 대한 예시적인 애플리케이션 코드를 사용하여 8 kHz 내지 96까지 속도를 지원 초기 작업 코드를 변경하지 않았습니다. 예제 코드에서 샘플링 속도는 44100Hz로 설정되었습니다. 나는 성공적으로 소리를 녹음하고 연주했다. 지금은 데이터 쉬트에 기반한 8000Hz의 샘플링 레이트로 alsa-lib로 사운드를 녹음 할 수 있다고 생각합니다. 샘플링 속도를 8000Hz로 설정했지만 alsa 구성에서는 16000Hz로 변경됩니다. 샘플링 속도를 8000Hz로 설정했습니다.
snd_pcm_hw_params_set_rate_near(handle, params, &(record_params->rate), &dir);
snd_pcm_hw_params_set_channels(handle, params, record_params->channel);
rc = snd_pcm_hw_params(handle, params);
그러나이 메소드를 호출 한 후;
16000으로 변경됩니다. 위의 다른 메소드 호출은 없습니다. 내 설정이 잘못되었거나 코덱이 8kHz를 지원하지 않을 수 있습니까?
업데이트 : 속도를 16000으로 설정하면 8000으로 변경됩니다. 더 많이 혼란 스럽습니다.
[1] = http://www.variscite.com/products/system-on-module-som/cortex-a9/dart-mx6-cpu-freescale-imx6
[2] =
http://www.variscite.com/images/stories/DataSheets/DART-MX6/DART-MX6_v1_2_datasheet_v2_1.pdf [3] = http://www.ti.com/lit/ds/symlink/tlv320aic3106.pdf
항상 오류 코드를 확인해야합니다. 왜 시간을 물어 보는거야? 그리고 통화 전후의'rate'와'dir'의 값은 무엇입니까? –
'dir'은 0이고'rate'는 내가 원하는대로 8000입니다. 내가 말했듯이, 기간을 물어 본 후에 16000으로 바뀝니다. 기간을 물어 보는 이유는 버퍼의 크기를 결정하기 위해서입니다. 내 호출의 오류 코드를 확인하고 잘못된 것이 있으면 게시물을 업데이트합니다. –
호출 전 * 값 * 통화 후 * 또는 둘 다 값은 *입니까? 그리고 그 비율이 기간과 관련이 있다고 가정하는 이유는 무엇입니까? –