opus-rs 0.1.16

pure Rust implementation of Opus codec
Documentation

opus-rs

A pure-Rust implementation of the Opus audio codec (RFC 6716), ported from the reference C implementation (libopus 1.6).

Production-ready

Features

  • Pure Rust — no C dependencies
  • High Performance: At or faster than C libopus across all configurations on X64/AARCH64

Quick Start

use opus_rs::{OpusEncoder, OpusDecoder, Application};

// Encode
let mut encoder = OpusEncoder::new(16000, 1, Application::Voip).unwrap();
encoder.bitrate_bps = 16000;
encoder.use_cbr = true;

let input = vec![0.0f32; 320]; // 20ms frame at 16kHz
let mut output = vec![0u8; 256];
let bytes = encoder.encode(&input, 320, &mut output).unwrap();

// Decode
let mut decoder = OpusDecoder::new(16000, 1).unwrap();
let mut pcm = vec![0.0f32; 320];
let samples = decoder.decode(&output[..bytes], 320, &mut pcm).unwrap();

WAV Roundtrip

# Rust encoder/decoder
cargo run --example wav_test

Performance

Criterion benchmarks with 20 samples, real audio (902/1804 frames of real speech), mono encode + decode. All numbers are wall-clock time for the full frame set.

vs C Opus (libopus 1.6.1) on x86-64 (AVX2/FMA)

Measured on AMD Ryzen 7 5700X, compiled with --release (opt-level=3 + ThinLTO).

Config Pure Rust C Opus Ratio
8 kHz / 20 ms VoIP 39.9 ms 40.6 ms 0.98× (Rust 2% faster)
16 kHz / 20 ms VoIP 66.8 ms 67.1 ms 1.00× (Rust 0.5% faster)
16 kHz / 10 ms VoIP 73.2 ms 72.5 ms 1.01× (within noise)
48 kHz / 20 ms Audio 25.1 ms 28.4 ms 0.88× (Rust 12% faster)
48 kHz / 10 ms Audio 29.7 ms 31.2 ms 0.95× (Rust 5% faster)

vs C Opus (libopus 1.6.1) on Apple Silicon

Measured on Apple Silicon M-series (aarch64), compiled with --release (opt-level=3 + ThinLTO).

Config Pure Rust C Opus Ratio
8 kHz / 20 ms VoIP 33.06 ms 34.26 ms 0.96× (Rust 4% faster)
16 kHz / 20 ms VoIP 55.62 ms 56.11 ms 0.99× (Rust 1% faster)
16 kHz / 10 ms VoIP 63.28 ms 62.50 ms 1.01× (C 1% faster)
48 kHz / 20 ms Audio 22.40 ms 30.46 ms 0.74× (Rust 26% faster)
48 kHz / 10 ms Audio 25.25 ms 31.57 ms 0.80× (Rust 20% faster)

License

See COPYING for the original Opus license (BSD-3-Clause).

Links