除了设置setSampleRateConversionQuality还有什么会导致Oboe修改采样率

问题描述

函数setSampleRateConversionQuality的注释

/**
 * Specify the quality of the sample rate converter in Oboe.
 *
 * If set to None then Oboe will not do sample rate conversion. But the underlying APIs might
 * still do sample rate conversion if you specify a sample rate.
 * That can prevent you from getting a low latency stream.
 *
 * If you do the conversion in Oboe then you might still get a low latency stream.
 *
 * Default is SampleRateConversionQuality::None
 */

这句话是什么意思?

“如果设置为 None,则 Oboe 不会进行采样率转换。但如果您指定采样率,底层 API 可能仍会进行采样率转换”

如果我设置了 SampleRateConversionQuality = None ,采样率仍然可以被双簧管修改吗?

如果是,是什么情况导致这种情况发生?

解决方法

如果我设置了SampleRateConversionQuality = None,采样率还能被双簧管修改吗?

不,在这种情况下,双簧管不会进行采样率转换。

“底层 API”指的是 Android 音频框架,如果您指定的采样率与底层音频硬件的本机采样率不匹配,该框架可能会执行重采样。如果 Android 音频框架进行重采样,您将无法获得低延迟流。

这就是为什么在双簧管中引入重采样的原因。这意味着双簧管可以重新采样您的音频数据,这样音频框架就不必重新采样,并且意味着您可以获得具有特定采样率的低延迟流。