В моем приложении для Android я использую библиотеку Oboe для перенаправления аудиосэмплов на аудиовыход.
Согласно моим тестам, в функции oboe::AudioStreamCallback::onAudioReady()
кажется, что большую часть времени формат float
используется для формата аудиопотока. Но иногда int16_t
формат int16_t
.
Поскольку формат float
гораздо удобнее в использовании, чем формат int16_t
, у меня есть несколько вопросов по этому поводу:
float
и формат int16_t
? Это зависит от устройства? Или, может быть, на версии для Android?int16_t
все еще используется на последних устройствах, или это то, что имеет тенденцию исчезать и используется только для целей int16_t
?float
?Спасибо за вашу помощь.
Если вы не укажете формат в AudioStreamBuilder, вы можете получить либо float, либо int16_t. Гобой и AAudio выберут формат, оптимальный для этой платформы. Обычно плавание является предпочтительным. Но, например, на некоторых платформах вы можете получить входной поток LOW_LATENCY, только если используете int16_t. Так что он выберет int16_t.
Вы можете определить формат, вызвав AudioStream :: getFormat().
Если вы укажете формат, вы получите этот формат при открытии потока, если он поддерживается. OpenSL ES до L (21) не поддерживает float, поэтому Oboe на устройстве pre-L не будет открывать поток в формате float.
Формат int16_t не исчезнет. Мы будем продолжать поддерживать это.