Я пытаюсь записать звук на моем встроенном устройстве linux (debian) с библиотекой alsa. Мои встроенные аппаратные это [1], и в соответствии с его техническим описанием страницы 33 [2],Настройка параметров оборудования Alsa Lib
Аналоговых звуковые сигналы, которые описаны с помощью звукового кодека на SOM-TLV320AIC3106.
и техническое описание этого Texas Instruments аудиокодека [3],
поддерживает скорости от 8 кГц до 96 кГц
Я использую код примера приложения для ALSA Lib, для Первоначальная работа Я не менял код. В примере кода частота дискретизации была установлена равной 44100 Гц. Я успешно записывал звук и играл после него. На данный момент, я думаю, я могу записывать звук с помощью alsa-lib с частотой дискретизации 8000 Гц на основе данных. Я установил частоту дискретизации 8000 Гц, но в то время как конфигурация alsa изменилась на 16000 Гц. Я установил частоту дискретизации до 8000 Гц;
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);
Но после вызова этого метода;
snd_pcm_hw_params_get_period_time(params, &(record_params->rate), &dir);
Это изменение до 16000. Другого вызова метода между выше. Являются ли мои настройки неправильными или может быть кодеком не поддерживает 8 кГц?
UPDATE: Когда я установил ставку до 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. Причина, по которой я прошу период, - это определить размер буфера. Я проверю коды ошибок моих вызовов и обновит сообщение, если что-то не так –
Являются ли эти значения * до * вызова или * после * вызова или обоих? И почему вы предполагаете, что ставка связана с периодом времени? –