[opus] implement opus codec

Ralph Giles giles at thaumas.net
Tue Oct 29 22:06:08 UTC 2019


Opus is a very scalable codec, so the resources required depend on the
profile you want to support. However, the strong quality at low latency
comes as the expense of complexity, so it generally requires more
resources than common bluetooth codecs.

If you control the encoder in your application, and don't have to handle
general input, you can disable features you're not using in the decoder
as well, which can save resources for specific applications, e.g. only
voice, or rates above 32 kbps per channel.

Genereally we recommend building the reference implementation with
`-DFIXED_POINT=1 -DDISABLE_FLOAT_API` and run the codec at different
complexity levels and bitrates on various possible targets to see what
the general budget will be as a starting point. Then look at
optimization to fit it on the next-smaller part.

Here is an example of the full decoder running on a 120 MHz M4 core with
256 KB sram. https://www.ti.com/lit/an/spma076/spma076.pdf

Hope that helps, and thanks for considering Opus for your implementation!


More information about the opus mailing list