Devices with high latency - High framesPerBurst reported
- Dominant language
- C++
- Stars
- 4.1k
- Forks
- 639
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 8
Description
My app is in the closed beta phase and many users are reporting high latencies.
I gathered the info below and some devices are reporting `framesPerBurst` ranging from 768-1024. I would expect similar results only from devices with SDK <26.
I used the drumthumper app as a starting point and I am loading mono .wav files only.
Is there anything missing in my stream setup? Or are these devices doomed?
Android version(s): >26
Android device(s): Many, see below
Model | xxx | framesPerBurst reported
Redmi 6A | cactus | 768
CPH2083 | CPH2083 | 770
CPH2015 | CPH2015 | 770
Redmi 6A | cactus | 770
RMX2185 | RMX2185T2 | 770
RMX2020 | RMX2020 | 770
SM-G975U | beyond2qltesq | 882
Redmi Note 5 | whyred | 960
M2007J20CG | surya_global | 960
SM-T805 | chagallltexx | 960
moto g(6) play | aljeter | 960
CPH1729 | CPH1729 | 960
Redmi 6A | cactus | 1024
LG-M250 | mlv5_global_com | 1024
Oboe version: 1.5.0
Stream setup:
```
// catering for SDK <=26 inside my AudioEngine class
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
val myAudioMgr = MyApp.appContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager
val sampleRateStr = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE)
val defaultSampleRate = sampleRateStr.toInt()
val framesPerBurstStr = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER)
val defaultFramesPerBurst = framesPerBurstStr.toInt()
Log.d("pwd drumknee", "pwd mAudio defaultSampleRate ${defaultSampleRate}")
Log.d("pwd drumknee", "pwd mAudio defaultFramesPerBurst ${defaultFramesPerBurst}")
native_setDefaultStreamValues(defaultSampleRate, defaultFramesPerBurst)
}
...
AudioStreamBuilder builder;
builder.setChannelCount(mChannelCount);
builder.setDataCallback(this);
builder.setErrorCallback(this);
builder.setPerformanceMode(PerformanceMode::LowLatency);
builder.setSharingMode(SharingMode::Exclusive);
builder.setSampleRateConversionQuality(SampleRateConversionQuality::Medium);
...
kBufferSizeInBursts = 2;
...
result = mAudioStream->setBufferSizeInFrames(mAudioStream->getFramesPerBurst() * kBufferSizeInBursts);
```
Contributor guide
Assessment
This issue has not been assessed yet.