LINUX.ORG.RU

как сделать playback pcm с частотой, отличной от 48 кГц

 ,


0

1

Есть плата SK-AT91SAM9G45 с кодеком AC97. Нужно считывать звук (pcm S16_LE) с микрофона и писать звук в аудио-выход (т.е. дуплекс). При использовании частоты 48 кГц все работает нормально. Если указать другую частоту (необходимы другие, меньшие частоты, например, 8 кГц), то возникают проблемы с воспроизведением (playback) звука. Создается впечатление, что на вход звук идет с нужной частотой, а на выход 48 кГц, не зависимо от выставленной частоты.
Такая же проблема возникает, если вместо моей программы использовать «стандартные» arecord и aplay. Т.е. при 48000 Гц все нормально, а при 8000 Гц в stdout пишутся строки underrun!!!
(Пример запуска arecord -r 8000 -f S16_LE | aplay -r 8000 -f S16_LE)
Версия библиотеки alsa 1.0.24.1
Версия ядра 3.2.23
dmesg пишет про аудио
atmel_ac97c atmel_ac97c.0: Atmel AC97 Controller at 0xc4830000, irq = 24

В своей программе я пытаюсь установить частоту 8 кГц через snd_pcm_set_params (например, snd_pcm_set_params(playback, SND_PCM_FORMAT_S16_LE, SND_PCM_ACCESS_RW_INTERLEAVED, 1, 8000, 1, 25000). Функция отрабатывает успешно.
snd_pcm_dump выдает среди прочего
exact rate : 8000 (8000/1)

звуковая карта поддерживает воспроизведение 8KHz?

если да — то надо выводить через другое виртуальное устройство, которое не использует dmix, иначе всегда будет 48K.

и/или можно попробовать включить soft resampling:

snd_pcm_hw_params_set_rate_resample (audio, hw_params, 1);

может быть есть нюансы связанные именно с дуплексом, тут я не шарю..

waker ★★★★★
()
Ответ на: комментарий от waker

Там стоит Realtek ALC203. Если я не ошибаюсь, он поддерживает от 8 до 48 кГц.

и/или можно попробовать включить soft resampling

Я пробовал выставлять предпоследний аргумент у snd_pcm_set_params в 0 и в 1 (включает soft resampling) - разницы не ощутил.

может быть есть нюансы связанные именно с дуплексом, тут я не шарю..

По-моему, в симплексе происходит то же самое.

надо выводить через другое виртуальное устройство, которое не использует dmix, иначе всегда будет 48K

Можно поподробнее (для начинающих), с альсой первый раз работаю.

nocomer
() автор топика
Ответ на: комментарий от nocomer

Забыл сказать, устройство открываю hw:0,0

nocomer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.