Opus
INTERACTIVE SPEECH and AUDIO CODEC
The Opus Codec format is based on the low-latency CELT format and the speech-oriented SILK format
Features List
- Bit-rates from 6 kb/s to 510 kb/s
- Frame sizes from 2.5 ms to 60 ms
- Support for both constant bit-rate (CBR) and variable bit-rate (VBR)
- Audio bandwidth from narrowband to fullband
- Support for speech and music
- Dynamically adjustable bitrate, audio bandwidth, and frame size
- Good loss robustness and packet loss concealment (PLC)
- Floating point and fixed-point implementation
Availability
Platforms |
Arm ® Devices – Armv7-A Cortex-A8 / A9 / A15 || Armv7-M Cortex-M4/M7 / Armv8-M || Armv8-A Cortex-A53 / A72 || Armv9-A |
TI TMS320C7000 C7x | TMS320C6000 – C64x+ / C674x / C66x – contact Sales for current specs 610-825-0182 x120 |
ADT Opus is available on the above Platforms: Other configurations are available upon request.
Specifications
NOTE: We specify MIPS (Millions of Instructions Per Second) as MCPS (Millions of Instruction Cycles Per Second). Unless otherwise specified, peak MIPS are indicated.
Opus Armv9-A
CPU UtilizationFrame Size | MIPs | |
OPUS WB – Wideband | 10 | 30 |
OPUS WB | 5 | 18 |
OPUS WB | 3 | 13 |
OPUS NB – Narrow Band | 10 | 17.4 |
OPUS NB | 5 | 11.5 |
OPUS NB | 3 | 9 |
OPUS Armv9A – No ASM, intrinsics enabled
Opus Armv7-A Cortex-A8/A9/A15
Memory requirements in units of byte.Function | Program Mem | Data Mem | Scratch Mem | Channel Data Mem |
Encode | Max: 100000 or call function OPUS_ADT_getEncScratchSize() | 41062 (1 channel) 45764 (2 channels) | ||
Decode | Max: 100000 or call function OPUS_ADT_getDecScratchSize() | 17964 (1 channel) 26684 (2 channels) | ||
Encode/Decode | 311K | 25K |
Opus Armv7-A Cortex-A8/A9/A15
CPU UtilizationFunction | VBR | FEC | DTX | Complexity | Bit Rate (kbps) | Frame Size (ms) | Sampling Rate (kHz) | MIPS* |
Wideband Silk Encoder | off | On | off | 3 | 25 | 10 | 16 | 38 |
Wideband Silk Encoder | On | On | off | 3 | 25 | 10 | 16 | 26 |
Fullband Celt Decoder | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 11 |
Fullband Hybrid | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 15 |
Opus Armv7-M / Armv8-M Wideband (WB)
CPU Utilization and Memory RequirementsFunction | MIPS | Program Mem | Data Mem (Channel + Scratch) |
Encode – CELT Mode Only, Complexity 10, 32 kbps rate | 52 | 110k bytes | 25k bytes |
Opus Armv7-M / Armv8-M Wideband (WB)
CPU UtilizationVBR | Complexity | Bit Rate (kbps) | Frame Size (ms) | MIPS* | |
WB CELT Encoder | off | 0 – 10 | 24 | 10 | 26-54 |
WB CELT Decoder | off | 0 – 10 | 24 | 10 | 21 |
WB CELT Encoder | off | 0 – 10 | 48 | 10 | 27-54 |
WB CELT Decoder | off | 0 – 10 | 48 | 10 | 21 |
WB CELT Encoder | off | 0 – 10 | 64 | 10 | 28-54 |
WB CELT Decoder | off | 0 – 10 | 64 | 10 | 21 |
Opus Opus Armv7-M / Armv8-M Super Wideband (SWB)
CPU UtilizationVBR | Complexity | Bit Rate (kbps) | Frame Size (ms) | MIPS* | |
SWB CELT Encoder | off | 0 – 10 | 48 | 10 | 31-57 |
SWB CELT Decoder | off | 0 – 10 | 48 | 10 | 23 |
SWB CELT Encoder | off | 0 – 10 | 64 | 10 | 33-59 |
SWB CELT Decoder | off | 0 – 10 | 64 | 10 | 23 |
Opus Armv8-A Cortex-A35, A53, A57, A72 || Armv9-A
Memory requirements in units of byte.Function | Program Mem | Data Mem | Scratch Mem | Channel Data Mem |
Encode | Max: 100000 or call function OPUS_ADT_getEncScratchSize() | 41062 (1 channel) 45764 (2 channels) | ||
Decode | Max: 100000 or call function OPUS_ADT_getDecScratchSize() | 17964 (1 channel) 26684 (2 channels) | ||
Encode/Decode | 311k | 25k |
Opus Armv8-A Cortex-A35, A53, A57, A72 || Armv9-A
CPU UtilizationFunction | VBR | FEC | DTX | Complexity | Bit Rate (kbps) | Frame Size (ms) | Sampling Rate (kHz) | MIPS* |
Wideband Silk Encoder | off | On | off | 3 | 25 | 10 | 16 | 38 |
Wideband Silk Encoder | On | On | off | 3 | 25 | 10 | 16 | 26 |
Fullband Celt Decoder | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 11 |
Fullband Hybrid | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 15 |
Opus C64x+ | C7x
CPU UtilizationFunction | Peak MIPS | ||||
Bit Rate | NB | MB | WB | SWB | FB |
Encode/Decode | 11.93 | 15.79 | 18.08 | 20.18 | 42.81 |
Opus C64x+ | C7x
Memory requirements in units of byte.Function | Program Mem | Data Mem | Stack Mem | Total Memory |
Encode/Decode | 259.63k | 94.41k | 3k | 357.04k |
NB -Narrow Band
MB -Medium Band
WB -Wide Band
SWB -Super Wide Band
FB Full Band
OPUS coding algorithm for speech/music signals sampled at either 48kHz, 24 kHz, 16 kHz, 12 kHz or 8 kHz.
Operates on variable frame sizes of 2.5ms, 5ms, 10ms, 20ms, 40ms, and 60ms.
Supports bit rates ranging from 6 kbps to 510kbps
Description
The Opus codec is a lossy audio coding format developed by the Internet Engineering Task Force (IETF) that is particularly suitable for interactive real-time applications over the Internet.
Opus incorporates technology from two other audio coding formats: the speech-oriented SILK and the low-latency Constrained Energy Lapped Transform (CELT) codec. Opus can be adjusted seamlessly between high and low , and internally, it transitions between linear predictive coding at lower bitrates and transform coding at higher bitrates (as well as a hybrid for a short overlap). Opus has a very low algorithmic delay (22.5 ms by default), which is a necessity for use as part of a low audio latency communication link, which permits natural conversation.
Function APIs
API function call summary
Opus_ADT_initEncoder()
Opus_ADT_initDecoder()
Opus_ADT_encode()
Opus_ADT_decode()
Opus_ADT_deleteEncoder()
Opus_ADT_deleteDecoder()
Opus_ADT_getStatus()