Формат аудио потока гобоя: исчезнет ли формат int16_t?

1

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

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

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

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

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

Теги:
audio
android-ndk

1 ответ

2
Лучший ответ

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню