Поддерживает ли OpenSL ES PerformanceMode::LowLatency?

Когда я создаю свое приложение на Pixel 2 (Oreo 8.0), я получаю PerformanceMode:: LowLatency:

2019-06-30 15:04:15,560 8506-8506/? D/AUDIO-APP: HearSightEngine - Stream PlayStream имеет низкую задержку

2019-06-30 15:04:15,572 8506-8506/? D/AUDIO-APP: HearSightEngine - потоковая запись с низкой задержкой

Когда я создаю свое приложение на приложении Samsung S7 (Nougat 7.0), я не получаю его:

2019-06-30 14:49:30,874 20025-20025/? W/AUDIO-APP: HearSightEngine - Stream PlayStream НЕ имеет низкой задержки. Проверьте ваш запрошенный формат, частоту дискретизации и количество каналов

2019-06-30 14:49:30,896 20025-20025/? W/AUDIO-APP: HearSightEngine - потоковая запись НЕ имеет низкой задержки. Проверьте ваш запрошенный формат, частоту дискретизации и количество каналов

Два существенных различия

  1. AAudio используется в первом случае, а OpenSL ES используется во втором.
  2. Пиксель 2 используется в первом случае, Samsung S7 - во втором.

Поддерживает ли OpenSL ES PerformanceMode::LowLatency? Или Samsung S7 его не поддерживает? Или что-то другое? Я прочитал FAQ [1] и там упоминалось AudioAttributes.FLAG_LOW_LATENCY для API < 26, может ли что-то подобное мне помочь?

[1] https://github.com/google/oboe/blob/master/docs/FAQ.md

1 ответ

Только с нуга 7.1 и выше. На предыдущих версиях Android запрос режима производительности вернется PerformanceMode::None, Вот код

Не существует программного способа узнать, есть ли у вас поток с низкой задержкой на Android 7.0 и ниже. Вы можете проверить это вручную, используя adb shell dumpsys media.audio_flinger и ищет F (для быстрой дорожки) рядом с потоком вашего приложения.

Вы можете максимально увеличить свой шанс получения потока с низкой задержкой, следуя приведенным здесь инструкциям.

Другие вопросы по тегам