2010-05-04 5 views
5

Кажется, что этот вопрос задан раньше, я просто хотел бы узнать, есть ли обновление на Android.Низкий звук задержки на Android через NDK

Я планирую написать звуковое приложение, включающее аудио ввода-вывода с низкой задержкой (примерно < 10 мс). Кажется, что это невозможно, исходя из методов, предложенных SDK, следовательно, есть - тем временем - способ достижения этой цели с использованием NDK?

ответ

4

В настоящее время в NDK нет библиотек для доступа к звуковой системе Android, по крайней мере, нет, которые считаются безопасными в использовании (стабильны).

Проводили ли вы какие-либо тесты с классом AudioTrack? Его самый низкий вариант задержки доступен на данный момент.

+0

Проблема заключается в минимальном ограничении буферизации класса AudioTrack. Этот размер слишком велик, чтобы реализовать звук с низкой задержкой. И на реальных устройствах (Motorola Droid) показанная буферизация еще выше, чем с эмулятором. – user332530

+0

@hkhauke Размер буфера AudioTrack не влияет на латентность воспроизведения звука. Другими словами, вам не нужно заполнять буфер AudioTrack для воспроизведения, если вы установили MODE_STREAM. Реальный вопрос будет заключаться в том, насколько быстро работает базовая аудиосистема в Android, а также насколько быстро работает аудиооборудование. – Mark

+0

Спасибо за этот намек, я проверю этот режим! – user332530

0

В настоящее время 2 основных APIs выставлены в НДК для аудио: OpenSL (от Android 2.3 уровня Апи 9) OpenMAX AL (от Android уровне 4,0 Api 14)

Хорошая начальная точка, чтобы узнать о OpenSL API в Android находится в образце кода NDK: смотрите образец «native-audio».

измерения о спектаклях были сделаны в этом блоге: http://audioprograming.wordpress.com/

В итоге лучшие латентности, полученные были вокруг 100-200ms, далеко от цели. Но, из документации android NDK, интерфейс OpenSL - это тот, который в будущем принесет большую пользу от ускорения HW, чтобы перейти к низкой задержке.

Смежные вопросы