ALSA — многопоточность и эксклюзивный доступ к аудио HW

У меня есть вопросы о звуковой библиотеке ALSA.

Позвольте мне сначала сказать, что обычным ответом на вопросы, подобные моему, является «использовать JACK», и что этот ответ бесполезен, поскольку я, вероятно, не могу использовать JACK. Я запускаю собственную программу Linux на устройстве Android (не NDK, но действительно родную), и, насколько я понял, JACK не работает на Android из-за некоторых несовместимостей libc и posix.

Вопросы:

1) могу ли я использовать 2 разных потока для а) чтения захваченных сэмплов и б) воспроизведения сэмплов? Все примеры ALSA с «полным дуплексом», которые я видел, просто используют попеременное чтение/запись на звуковую карту с блокирующими функциями, что, кажется, не слишком хорошо работает, особенно если ваша программа должна делать немного больше.

2) Как я понял, ALSA микширует звук, воспроизводимый разными приложениями, так же, как микшер Windows Audio. Можно ли получить эксклюзивный доступ к аудиоустройству, чтобы мое приложение гарантированно было единственным, воспроизводящим звук, без микширования и ухудшения динамического диапазона?


person user1847129    schedule 05.02.2013    source источник
comment
Насколько я знаю, ОС Android отвечает за управление системными звуками, и нет возможности получить прямой доступ к ALSA на нерутированном/немодифицированном устройстве.   -  person Kristopher    schedule 05.02.2013
comment
Более того, нет никакой гарантии, что нижележащий уровень на самом деле является ALSA.   -  person marko    schedule 05.02.2013
comment
Что ты имеешь в виду / не мог бы ты уточнить, Марко?   -  person user1847129    schedule 05.02.2013
comment
Что касается рутированного устройства, это на самом деле не беспокоит то, что я делаю, возясь с пользовательским устройством.   -  person user1847129    schedule 05.02.2013


Ответы (1)


  1. Вы можете использовать два потока для двух устройств воспроизведения/захвата (см. документацию).

  2. ALSA микширует звук, только если используется плагин dmix. По умолчанию это настроено только для большинства настольных звуковых карт.

    Если вы откроете устройство hw или plughw, любое микширование программного обеспечения будет пропущено.

    (Пока воспроизводится только один поток, качество данных никоим образом не ухудшается.)

person CL.    schedule 05.02.2013