Подскажите пожалуйста может ли tvl320aic23b работать в дуплексном режиме, то есть ОДНОВРЕМЕННО отцифровывать сигнал на линейном входе (затем отдавать его в линукс) и формировать аналоговый сигнал на выход для наушников (принимая его из линукса). Фактически нужно записывать звук и ОДНОВРЕМЕННО его проигрывать. Я понимаю, что на борде всего один разъем, который перемычками J5 и J6 можно поставить либо в микрофонный вход либо в выход для наушников, но непонятно почему так сделали (толи места не было для второго разъема, толи AUDIO codec не может одновременно работать и на вход и на выход).
Заранее благодарен.
Исключительно из-за нехватки места под второй разъем.
Кодек по определению должен одновременно воспроизводить и оцифровывать, другой вопрос, позволит ли это делать аппаратная часть со стороны iMX53 и драйвер в linux ...
Допустим, что драйвер в linux поддерживает такой режим. Тогда если я подключу кабель для ввода аудио к штырькам 3 перымычек j5 и j6 (и земле), а кабель для вывода аудио к штырькам 1 перемычек j5 и j6 (и земле), то (при условии правильной настройки драйвера) у меня будет работать одновременно ввод и вывод аудио или есть какие-то еще аппаратные проблемы?
Драйвер tlv320aic23b, безусловно, поддерживает дуплексный режим, но вот режим цифровой петли, который, как я понимаю, вы хотите реализовать в Linux одновременно записывая куда-то звук, вам вряд-ли удастся реализовать стандартными средствами. Вам понадобится 2 процесса: писалка в файл и заворачивалка записываемого потока обратно на воспроизведение. В общем, два процесса не смогут открыть одно устройство на чтение, поэтому нужен программный микшер: esound, pulseaudio и т.п. Не исключаю, что с помощью них это как-то и реализуется...
Если вам нужно заворачивать входной поток на выход без всякой обработки, то можно воспользоваться возможностями организации локальной аналоговой петли самого чипа tlv320aic23b (см. datasheet): analog bypass mode или sidetone insertion. Как я понял, первый режим позволяет заворачивать c line-in, а второй с микрофона.
Я использую gstreamer и по отдельности работает и прием и выдача звука, а когда я пытаюсь запустить прием и выдачу одновременно - вывод затыкается, но ошибок насчет того, что устройство нельзя открыть нет. Я не знаю какие-именно устройства использует gstreamer, но команды типа
gst-launch alsasrc ! audioconvert ! alsasink sync=false
на писишках работают.
Команда "arecord | aplay" работает !!!! (при указанном выше способе аппаратного подключения). То есть проблема не в ядре и не в аппаратной части.
Насколько я понимаю arecord и aplay базируются на библиотеке libasound. Gstreamer (alsasrc и alsasink) тоже базируются на этой библиотеке. Получается, что gstreamer как-то криво ее использует.