Поддерживает ли OpenSL ES PerformanceMode :: LowLatency? - PullRequest
1 голос
/ 01 июля 2019

Когда я создаю свое приложение на 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, может ли что-то подобное мне помочь? </p>

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

1 Ответ

0 голосов
/ 01 июля 2019

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

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

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

...