У меня есть вопросы о звуковой библиотеке ALSA.
Позвольте мне сначала сказать, что обычным ответом на вопросы, подобные моему, является «использовать JACK», и что этот ответ бесполезен, поскольку я, вероятно, не могу использовать JACK. Я запускаю собственную программу Linux на устройстве Android (не NDK, но действительно родную), и, насколько я понял, JACK не работает на Android из-за некоторых несовместимостей libc и posix.
Вопросы:
1) могу ли я использовать 2 разных потока для а) чтения захваченных сэмплов и б) воспроизведения сэмплов? Все примеры ALSA с «полным дуплексом», которые я видел, просто используют попеременное чтение/запись на звуковую карту с блокирующими функциями, что, кажется, не слишком хорошо работает, особенно если ваша программа должна делать немного больше.
2) Как я понял, ALSA микширует звук, воспроизводимый разными приложениями, так же, как микшер Windows Audio. Можно ли получить эксклюзивный доступ к аудиоустройству, чтобы мое приложение гарантированно было единственным, воспроизводящим звук, без микширования и ухудшения динамического диапазона?