# google/oboe

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/google-oboe).**

4,069 stars · 623 forks · C++ · Apache-2.0

## Links

- GitHub: https://github.com/google/oboe
- awesome-repositories: https://awesome-repositories.com/repository/google-oboe.md

## Description

Oboe is a native C++ library designed for building high-performance, low-latency audio applications on Android. It serves as a unified wrapper and native API for managing audio streams, sample rates, and hardware routing across different Android operating system versions.

The library provides a consistent interface by automatically selecting the most efficient audio backend at runtime, switching between AAudio and OpenSL ES to ensure the lowest possible latency. It enables exclusive-mode hardware access to bypass the system mixer and utilizes a high-priority asynchronous pull model for audio processing.

Oboe covers a broad range of audio engineering capabilities, including real-time signal processing, programmatic waveform synthesis, and full-duplex audio routing. It includes systems for audio format conversion, effects pipeline management, and hardware routing change detection to handle device disconnections.

The project also includes diagnostic tools for measuring audio latency and detecting playback glitches, as well as automated performance testing utilities.

## Tags

### Graphics & Multimedia

- [Low-Latency Implementation](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/low-latency-implementation.md) — Implements high-performance, low-latency audio playback and recording using native C++ interfaces. ([source](https://google.github.io/oboe))
- [Audio Digital Signal Processing](https://awesome-repositories.com/f/graphics-multimedia/audio-digital-signal-processing.md) — Utilizes native C++ code and numeric iterators for high-performance, low-latency signal manipulation. ([source](https://github.com/google/oboe/blob/main/apps/fxlab))
- [Audio Hardware Routing](https://awesome-repositories.com/f/graphics-multimedia/audio-hardware-routing.md) — Manages audio streams and routing to specific hardware endpoints while handling device connection changes. ([source](https://github.com/google/oboe/blob/main/samples))
- [Audio I/O Management](https://awesome-repositories.com/f/graphics-multimedia/audio-i-o-management.md) — Handles the transport of digital audio data between applications and hardware via blocking I/O or callbacks. ([source](https://github.com/google/oboe/blob/main/docs/FullGuide.md))
- [Native API Integration](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/native-api-integration.md) — Provides a native C++ interface for managing audio streams, sample rates, and hardware routing on Android.
- [Real-Time Audio Threading](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/real-time-audio-threading.md) — Provides high-priority execution threads for time-critical audio calculations to support synthesizers. ([source](https://github.com/google/oboe/tree/main/samples))
- [Callback-Driven Streaming](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/real-time-audio-threading/callback-driven-streaming.md) — Utilizes a high-priority asynchronous pull model to request audio frames and minimize playback latency.
- [Android Performance Optimizations](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-streaming-engines/audio-playback-engines/chunked-audio-streaming/generative-audio-chunking/streaming-audio-generators/low-latency-audio-streams/android-performance-optimizations.md) — Ensures consistent high-performance, low-latency audio playback across various Android operating system versions.
- [Cross-Platform Audio APIs](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-streaming-engines/audio-playback-engines/cross-platform-audio-apis.md) — Provides a unified C++ interface for managing audio input and output across various Android versions. ([source](https://github.com/google/oboe#readme))
- [Stream Lifecycle Management](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-streaming-engines/raw-audio-sample-streaming/stream-lifecycle-management.md) — Manages the lifecycle of audio streams by specifying direction, performance mode, and sample format. ([source](https://github.com/google/oboe/blob/main/docs/GettingStarted.md))
- [Audio Sample Format Conversions](https://awesome-repositories.com/f/graphics-multimedia/audio-sample-format-conversions.md) — Defines sample rates and channel counts with automatic type conversion for different audio formats. ([source](https://github.com/google/oboe/blob/main/docs/FullGuide.md))
- [Low-Latency Playback](https://awesome-repositories.com/f/graphics-multimedia/live-media-streaming/rtmp-and-http-flv-streamers/low-latency-playback.md) — Designed for professional and gaming applications requiring the smallest possible lag during audio playback.
- [Real-Time Audio Processing](https://awesome-repositories.com/f/graphics-multimedia/real-time-audio-processing.md) — Supports the implementation of synthesizers and effects requiring immediate response and minimal input-output delay. ([source](https://github.com/google/oboe/blob/main/apps/fxlab))
- [System Audio Device Change Triggers](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-playback/playback-engine-integration/playback-event-hooks/automated-playback-pausing/system-audio-device-change-triggers.md) — Detects hardware disconnection events to trigger resource cleanup and stream reinitialization. ([source](https://github.com/google/oboe/blob/main/docs/OpenSLESMigration.md))
- [Latency Measurement](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/latency-measurement.md) — Provides specialized tools for calculating audio round-trip delay and detecting playback glitches to ensure stability. ([source](https://github.com/google/oboe#readme))
- [Latency and Power Balancing](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-streaming-engines/audio-playback-engines/chunked-audio-streaming/generative-audio-chunking/streaming-audio-generators/low-latency-audio-streams/latency-and-power-balancing.md) — Provides a mechanism to switch between low-latency interactive paths and power-saving modes. ([source](https://github.com/google/oboe/blob/main/docs/FullGuide.md))
- [Stream Configuration](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-streaming-engines/stream-configuration.md) — Implements a fluent builder interface to configure audio stream parameters and performance modes.
- [Audio Effect Chains](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/audio-processing-systems/audio-processing/speech-to-text-pipelines/audio-processing-pipelines/audio-effect-chains.md) — Implements linear sequences of audio processors that can be added, removed, and re-ordered in real-time. ([source](https://github.com/google/oboe/blob/main/apps/fxlab))
- [Audio Synthesis](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/audio-processing-systems/audio-synthesis.md) — Includes a programmatic waveform generator for creating custom sounds like sine waves or white noise. ([source](https://github.com/google/oboe/blob/main/samples))

### Operating Systems & Systems Programming

- [Audio Native Libraries](https://awesome-repositories.com/f/operating-systems-systems-programming/audio-native-libraries.md) — Provides a native C++ library for building high-performance, low-latency audio applications on Android.
- [Exclusive Hardware Access](https://awesome-repositories.com/f/operating-systems-systems-programming/exclusive-hardware-access.md) — Allows applications to bypass the system audio mixer for direct hardware access to achieve minimum latency. ([source](https://github.com/google/oboe/blob/main/docs/FullGuide.md))
- [Latency Minimizers](https://awesome-repositories.com/f/operating-systems-systems-programming/input-and-audio-management/latency-minimizers.md) — Optimizes sample rates and burst sizes to minimize audio delay across different hardware levels. ([source](https://github.com/google/oboe#readme))
- [Audio Hardware Offloading](https://awesome-repositories.com/f/operating-systems-systems-programming/audio-hardware-offloading.md) — Utilizes hardware-specific offloading to lower CPU usage and extend battery life during audio playback. ([source](https://github.com/google/oboe/blob/main/samples))
- [Hardware ID Device Discovery](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-id-device-discovery.md) — Facilitates connecting audio streams to specific hardware endpoints using hardware ID discovery. ([source](https://github.com/google/oboe/blob/main/docs/FullGuide.md))

### Artificial Intelligence & ML

- [Audio Backend Selection](https://awesome-repositories.com/f/artificial-intelligence-ml/hardware-agnostic-accelerators/compute-backend-abstractions/audio-backend-selection.md) — Automatically selects the most efficient audio backend at runtime to ensure lowest possible latency.

### Mobile Development

- [Audio API Abstractions](https://awesome-repositories.com/f/mobile-development/audio-api-abstractions.md) — Provides a unified C++ interface that automatically selects the most efficient Android audio backend at runtime.

### Software Engineering & Architecture

- [OS Version Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/distribution-agnostic-configuration-layers/os-version-abstraction-layers.md) — Provides a consistent C++ interface to abstract audio backends across different Android OS versions.
- [Architectural State Machines](https://awesome-repositories.com/f/software-engineering-architecture/state-machine-logic/lightweight-state-machines/automation-state-machines/entity-state-machines/architectural-state-machines.md) — Manages asynchronous transitions between audio stream states to prevent glitches and crashes.
- [Asynchronous Transition Control](https://awesome-repositories.com/f/software-engineering-architecture/state-transition-models/asynchronous-transition-control.md) — Manages multi-step asynchronous transitions for audio streams (open, start, pause, stop). ([source](https://github.com/google/oboe/blob/main/docs/FullGuide.md))

### Networking & Communication

- [Audio Stream Property Controls](https://awesome-repositories.com/f/networking-communication/audio-management-systems/audio-stream-property-controls.md) — Provides tools for managing sample rates, bit depth, and channel counts via a builder-based configuration system. ([source](https://github.com/google/oboe/blob/main/docs/OpenSLESMigration.md))

### Programming Languages & Runtimes

- [Audio Hardware Disconnection Detection](https://awesome-repositories.com/f/programming-languages-runtimes/file-stream-management/stream-monitoring/audio-hardware-disconnection-detection.md) — Implements a monitoring system to detect hardware removals and automatically trigger callbacks to restart disconnected audio streams. ([source](https://github.com/google/oboe/blob/main/docs/FullGuide.md))

### Part of an Awesome List

- [Audio and Subtitle Tools](https://awesome-repositories.com/f/awesome-lists/media/audio-and-subtitle-tools.md) — C++ library for high-performance audio operations on Android.
- [Media & Communication](https://awesome-repositories.com/f/awesome-lists/media/media-communication.md) — Library for high-performance audio apps
