Формат аудио потока гобоя: исчезнет ли формат int16_t? - PullRequest
0 голосов
/ 02 ноября 2018

В моем приложении для Android я использую библиотеку Oboe для перенаправления аудиосэмплов на аудиовыход.

Согласно моим тестам, в функции oboe::AudioStreamCallback::onAudioReady() кажется, что большую часть времени формат float используется для формата аудиопотока. Но иногда используется формат int16_t.

Поскольку формат float гораздо удобнее в использовании, чем формат int16_t, у меня есть несколько вопросов по этому поводу:

  • Когда используются форматы float и int16_t? Это зависит от устройства? Или, может быть, на версии для Android?
  • Формат int16_t все еще используется на последних устройствах или это то, что имеет тенденцию исчезать и использоваться только для целей ретро-совместимости?
  • Если формат зависит от версии Android, какая минимальная версия API Android использует только формат float?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 02 ноября 2018

Если вы не укажете формат в AudioStreamBuilder, вы можете получить либо float, либо int16_t. Гобой и AAudio выберут формат, оптимальный для этой платформы. Обычно плавание является предпочтительным. Но, например, на некоторых платформах вы можете получить входной поток LOW_LATENCY, только если используете int16_t. Поэтому он выберет int16_t.

Вы можете определить формат, вызвав AudioStream :: getFormat ().

Если вы укажете формат, вы получите этот формат при открытии потока, если он поддерживается. OpenSL ES до L (21) не поддерживает float, поэтому Oboe на устройстве pre-L не будет открывать поток в формате float.

Формат int16_t не исчезнет. Мы будем продолжать поддерживать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...