【问题标题】:Oboe audio stream format: will the int16_t format disappear?双簧管音频流格式:int16_t格式会消失吗?
【发布时间】:2018-11-02 15:22:40
【问题描述】:

在我的 Android 应用中,我使用 Oboe library 将音频样本重定向到音频输出。

根据我的测试,在oboe::AudioStreamCallback::onAudioReady()函数中,似乎大多数时候,float格式用于音频流格式。但有时会使用int16_t 格式。

由于float 格式比int16_t 格式使用起来方便得多,我对此有一些疑问:

  • 什么时候使用floatint16_t 格式?它取决于设备吗?或者在 Android 版本上?
  • int16_t 格式是否仍在最近的设备上使用,还是会逐渐消失并仅用于向后兼容?
  • 如果格式取决于 Android 版本,那么仅使用 float 格式的最低 Android API 版本是多少?

感谢您的帮助。

【问题讨论】:

    标签: android audio android-ndk


    【解决方案1】:

    如果您没有在 AudioStreamBuilder 中指定格式,那么您可以获得浮点数或 int16_t。双簧管和 AAudio 将选择最适合该平台的格式。通常浮动是首选。但是,例如,在某些平台上,如果使用 int16_t,则只能获得 LOW_LATENCY 输入流。所以它会选择int16_t。

    您可以通过调用 AudioStream::getFormat() 来确定格式。

    如果您确实指定了格式,那么您将在打开流时获得该格式(如果支持)。 L (21) 之前的 OpenSL ES 不支持浮点数,因此 pre-L 设备上的双簧管不会打开浮点格式的流。

    int16_t 格式不会消失。我们将继续支持它。

    【讨论】:

    • 跟进一下,双簧管1.3.0版本支持格式转换。如果启用它,它将在需要时将 int16_t 转换为浮点数,反之亦然。 builder.setFormatConversionAllowed(true);
    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2011-12-24
    • 2022-08-13
    相关资源
    最近更新 更多