OpenSL ES
OpenSL поддерживается устройствами, начиная с Android 2.3 (Gingerbread). Однако быстрый микшер для OpenSL (высокопроизводительный звук) доступен, начиная с Android 4.2 (или 4.3?), и изначально поддерживается не всеми устройствами.
Что это значит? По моим наблюдениям, когда быстрый микшер не используется, Java AudioTrack быстрее (имеет меньшую задержку), чем OpenSL.
Когда используется быстрый микшер, задержка звука на самом деле хорошая и низкая. Для этого ваше устройство должно поддерживать быстрый микшер, а параметры конфигурации должны совпадать.
Еще одна проблема, которую следует учитывать, — «треск» на GearVR, вероятно, из-за изменения приоритетов потоков.
Чтобы реализовать звук с помощью OpenSL, вы можете обратиться к примерам NDK или, что еще лучше, сюда https://github.com/Over17/AndroidAudioFastPathSample — исправлено, чтобы фактически использовать быстрый путь.
Аудио
Будет поддерживаться Android 8 Oreo, который выйдет в этом году. Если вы не хотите, чтобы ваша игра была совместима только с Android O, вы, вероятно, не захотите идти по этому пути.
У меня пока нет большого практического опыта.
Гобой
Oboe — это библиотека, разработанная Google, которая использует AAudio или OpenSL в качестве серверной части, в зависимости от того, что поддерживается устройством, и имеет интерфейс C++, обертывающий API. Имеет смысл использовать его вместо прямого использования AAudio.
Мотивация
Почему вам действительно нужна нативная звуковая часть для вашей игры? Если это не синтезатор, профессиональное звуковое приложение или VR-игра, я бы не стал заморачиваться с нативным звуком C++ и выбрал бы JavaAudioTrack. Он надежен, совместим со всеми устройствами и имеет приемлемую задержку для непрофессиональных приложений.
person
Over17
schedule
09.06.2017