我在音频 android 应用程序中使用 Oboe 1.2。当我调用给出端点缓冲区大小的 getFramesPerBurst() 时,如果输出通道数设置为 2,我会得到预期的结果(240 帧)。但是,当我设置 4 个输出通道时,getFramesPerBurst() 返回的值大约是960(!)。这正常吗?这是硬件的限制吗(我在 4 个不同的设备上进行了测试,但操作系统版本不同)?双簧管的限制?我还注意到这个值与 AudioService 中 AudioManager 的属性 PROPERTY_OUTPUT_FRAMES_PER_BUFFER 给出的值不同。
oboe::AudioStreamBuilder builder;
if (!oboe::AudioStreamBuilder::isAAudioRecommended()){
builder.setAudioApi(oboe::AudioApi::OpenSLES);
}
builder.setSharingMode(oboe::SharingMode::Exclusive);
builder.setFormat(oboe::AudioFormat::Float);
builder.setChannelCount(4);
builder.setCallback(&_oboeCallback);
builder.setPerformanceMode(oboe::PerformanceMode::LowLatency);
oboe::Result result = builder.openStream(&_stream);
if (result == oboe::Result::OK) {
int framePerBurst = _stream->getFramesPerBurst(); // gives value around 960 for 4 channels, 240 for 2 channels
_stream->setBufferSizeInFrames(2*framePerBurst);
}