-
Hi, this is just a question, not a bug report. My goal is low-latency unprocessed input from Bluetooth and wired headsets. I've tried different input presets with the following results:
All tests were made on the same device (Xiaomi Redmi Note 7), which initially had Android 9, but was recently upgraded to Android 10. So it seems that the most reliable input presets are Actually I don't see any audible difference between On my device So here are the questions:
|
Beta Was this translation helpful? Give feedback.
Replies: 6 comments 2 replies
-
Just want to mention our experience with input presets. Android CDD details about how certain input presets should be handled such as Voice Recognition and Unprocessed, but manufacturers don't seem to follow these specifications exactly. See issues #911 and #950. The difference between |
Beta Was this translation helpful? Give feedback.
-
@rpattabi Thanks for sharing! So it seems that |
Beta Was this translation helpful? Give feedback.
-
For now I've worked it around by retrying different presets: Unprocessed, VoicePerformance, VoiceRecognition, and Generic. If open fails, or I don't receive any input during timeout, I switch to next preset until I find a working one. So far this approach worked good for both wired and wireless headsets on Android 9 and 10. |
Beta Was this translation helpful? Give feedback.
-
I am working on answers regarding InputPreset.
SCHED_FIFO is needed to support small burst sizes. It is used for streams that have PerformanceMode::LowLatency. |
Beta Was this translation helpful? Give feedback.
-
This patch improves the logging of the callback thread CPU scheduler in OboeTester. It shows the initial callback from OpenSL ES using SCHED_OTHER followed by the use of SCHED_FIFO. |
Beta Was this translation helpful? Give feedback.
-
As an experiment, I converted this Issue to the new GitHub Discussions feature. Let me know how that works for you.
Generic (0x01) is the default InputPreset for the Java AudioRecord. So it should work pretty well on all devices.
It was will not guarantee FAST path. But it is allowed. You may not get a FAST path if you have sample rate conversion, for example.
VoicePerformance was added in Q 10.0. If you request VoicePerformance on earlier devices then Oboe will use VoiceRecognition instead. All InputPresets should be supported. But we are finding that the result is not consistent on all devices. We have found:
It should be used for the callback threads for OpenSL ES and AAudio on most devices. But some devices may use a different scheduler. The exact scheduler is not mandated. |
Beta Was this translation helpful? Give feedback.
As an experiment, I converted this Issue to the new GitHub Discussions feature. Let me know how that works for you.
Generic (0x01) is the default InputPreset for the Java AudioRecord. So it should work pretty well on all devices.
It may have higher gain than the VoiceRecognition preset because Generic may have Automatic Gain Control.
It may also have higher latency.
It was will not guarantee FAST path. But it is allowed. You may not get a FAST path if you have sample rate conversion, for example.
I was able to get LowLatency when using the InputPreset=Generic. This worke…