Audio Codec Module

Audio encoding and decoding for Opus, MP3, and OGG formats.

Design Goals

  1. Native Performance: FFI bindings to proven C libraries
  2. Streaming Support: Process audio in chunks, not full files
  3. VoIP Optimized: Low-latency Opus encoding for voice chat

Codec Support Matrix

CodecEncodeDecodeLibraryUse Case
OpuslibopusVoice chat, streaming
MP3LAME / minimp3File storage, compatibility
OGGN/AN/AliboggContainer format

Sub-modules

opus/

Opus codec implementation for voice and audio.

Features:

  • Encoder with VoIP/Audio/LowDelay modes
  • Decoder with PLC (Packet Loss Concealment)
  • TOC (Table of Contents) parsing
  • Frame duration detection

Key Types:

  • Encoder, Decoder
  • Frame, TOC, FrameDuration

mp3/

MP3 codec for compatibility with legacy systems.

Features:

  • LAME-based encoding with quality presets
  • minimp3-based decoding (header-only library)

Key Types:

  • Encoder, Decoder

ogg/

OGG container format for packaging Opus/Vorbis streams.

Features:

  • Page-based streaming
  • Bitstream management
  • Synchronization recovery

Key Types:

  • Encoder, Stream, Sync, Page

Opus Frame Durations

DurationSamples@16KSamples@48K
2.5ms40120
5ms80240
10ms160480
20ms320960
40ms6401920
60ms9602880

Recommended: 20ms frames balance latency and compression.

Common Opus Bitrates

ApplicationBitrateQuality
Voice (narrow)8-12 kbpsIntelligible
Voice (wide)16-24 kbpsGood
Voice (HD)32-48 kbpsExcellent
Music64-128 kbpsHi-Fi

Native Library Versions

LibraryMinimum VersionNotes
libopus1.3.0Opus encoder/decoder
libogg1.3.0OGG container
LAME3.100MP3 encoder
minimp3-Header-only decoder

Examples

See parent audio/ documentation for usage examples.

  • opusrt/ - Realtime Opus streaming with OGG container
  • resampler/ - Sample rate conversion before encoding