Thursday, 11 October 2018

Introducing Oboe: A C++ library for low latency audio





Posted by Don Turner, Developer Advocate, Android Audio Framework



This week we released the first production-ready version of Oboe - a C++ library for building real-time audio apps. Oboe provides the lowest possible audio latency across the widest range of Android devices, as well as several other benefits.


Single API





Oboe takes advantage of the improved performance and features of AAudio on Oreo MR1 (API 27+) whilst maintaining backward compatibility (using OpenSL ES) on API 16+. It's kind of like AndroidX for native audio.



Diagram showing the underlying audio API which Oboe will use



Less code to write and maintain





Using Oboe you can create an audio stream in just 3 lines of code (vs 50+ lines in OpenSL ES):





AudioStreamBuilder builder;
AudioStream *stream = nullptr;
Result result = builder.openStream(&stream);



Other benefits





  • Convenient C++ API (uses the C++11 standard)
  • Fast release process: supplied as a source library, bug fixes can be rolled out in days, quite a bit faster than the Android platform release cycle
  • Less guesswork: Provides workarounds for known audio bugs and has sensible default behaviour for stream properties, such as sample rate and audio data formats
  • Open source and maintained by Google engineers (although we welcome outside contributions)


Getting started





Take a look at the short video introduction:






Check out the documentation, code samples and API reference. There's even a codelab which shows you how to build a rhythm-based game.



If you have any issues, please file them here, we'd love to hear how you get on.

No comments:

Post a Comment