Выборка микрофона QNX и воспроизведение динамика

Я использую ОСРВ QNX neutrino, я новичок в QNX. Я настроил свой первый проект с обменом сообщениями IPC между двумя потоками.

Что я хочу сделать, так это иметь один поток в качестве «драйвера» микрофона, который сэмплирует ввод с микрофона и сохраняет/отправляет его в виде пакетов PCM в другой поток, который воспроизводит его из динамика.

Итак, существуют ли какие-либо библиотеки поддержки звука? Как лучше всего добиться записи входа микрофона и выхода динамика?


person code_fodder    schedule 21.02.2014    source источник


Ответы (1)


Да, QNX поставляется с аудиобиблиотекой.

Аудиобиблиотека задокументирована, начиная с этого места (версия 6.5 SP1): http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_audio%2Fabout.html&cp=13_1

Ваша система qnx включает в себя утилиту (команду) "wave" для воспроизведения файла .wav и "waverec" для записи звука с микрофона и сохранения его в файл .wav.

Вы можете использовать команды «use wave» и «use waverec» для получения информации о поддерживаемых параметрах командной строки.

Документация включает в себя полный исходный код утилит wave и waverec:

wave.c: http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_audio%2Fwavec.html

waverec.c: http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_audio%2Fwaverec.html

Рекомендуемый способ начать с аудиозаписи и воспроизведения — сначала запустить двоичные файлы wave и waverec, поставляемые вместе с системой. После этого создайте предоставленный исходный код, снова заставьте его работать, затем изучите его и вставьте в свое приложение, возможно, после его удаления. (Поскольку пример является универсальным и, возможно, вы хотите жестко закодировать определенные функции, которые динамически настраиваются в образце).

Вам нужно связать библиотеку libasound.so, чтобы собрать семплы. Минимальный пример командной строки (протестирован) для сборки wave.c для armlev7 и x86:

ntoarmv7-gcc wave.c -o wave -l asound
ntox86-gcc wave.c -o wave -l asound

Если вы собираете через IDE, вам нужно добавить библиотеку в соответствующие настройки.

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

person maverick    schedule 21.02.2014
comment
Большое спасибо Maverick (извините за поздний ответ, я был в отъезде по З/В). Я только что получил эти файлы и начну играть с ними. Я начал думать, что мне нужно получить аудио DDK, но я изо всех сил пытался установить это (какая-то проблема с java), когда я закончил в пятницу ... надеюсь, это выглядит намного проще :), я могу принять ваше предложение также размещать вопросы! - person code_fodder; 24.02.2014
comment
Maverick, у меня QNX 6.4.0 (работаю над обновлением до 6.5.0 sp1), поэтому я нашел файл waverec.c для этой версии. Я превратил его в проект QNX c, но он не строится. Кажется, это не работает со всеми функциями asoundlib.h. Заголовочный файл есть, но после прочтения документации выяснилось, что настоящая библиотека может не поставляться с QNX (какая-то проблема с LGPL). Я искал в Интернете, но не вижу, как решить эту проблему... есть идеи? - person code_fodder; 24.02.2014
comment
Аудиофункции определены в libasound, поэтому вам нужно связать их с этим; Я обновил пост с примерами командной строки, чтобы сделать это. Что касается аудио DDK, он вам понадобится, если вы хотите разработать аудиодрайвер. Аудиодрайвер обычно является частью вашего BSP, и вам не нужно об этом беспокоиться. - person maverick; 24.02.2014
comment
Спасибо за это, я думаю, что я увлекся этой лицензией LGPL, я убедил себя, что asoundlib там не было, но он есть! Я добавил эту библиотеку в настройки своего компоновщика, и теперь проект компилируется нормально :) ... Но теперь я не могу получить звук в своей установке x86 QNX RTOS. Я сделал коробку QNX (из неиспользуемого ПК с Windows, со встроенной звуковой картой). Я возился, пытаясь заставить io-audio обнаружить мою карту, похоже, она не поддерживается, поэтому я купил дешевую звуковую карту и установил ее ... похоже, это тоже не поддерживается, так что я сейчас застрял здесь! - person code_fodder; 24.02.2014