[opus] Global stack on Cortex-M4

Eric eric at wiebols.se
Wed Oct 18 20:40:58 UTC 2017


Hi all !

I just learned about the Opus codec and would like to try it out on my 
NRF52 (Cortex-M4) target.   I've been struggling a bit with the 
"trival_example.c" setup but repeatedly run into "hard fault" crashes 
when stepping through the code.


Firstly; for a "bare bone" configuration, does the following compiler 
directives make sense ?

UDEFS = -DOPUS_BUILD -DFIXED_POINT -DDISABLE_FLOAT_API \
         -DOPUS_ARM_INLINE_EDSP -DEMBEDDED_ARM -DNONTHREADSAFE_PSEUDOSTACK \
         -DOVERRIDE_OPUS_ALLOC  -DOVERRIDE_OPUS_FREE  \
          -D'opus_alloc(x)=NULL' -D'opus_free(x)=NULL'


Secondly; With the "overide" directives above no dynamic memory 
allocation is supposed to happen. However, the following call chain 
(obviously)  cause a crash:

opus_encode(..)-> 
opus_encode_native(..)->ALLOC_STACK->opus_alloc_scratch(..)->opus_alloc(..)

Is this a bug or what am I missing here ?

Any advise on how to get a basic encode/decode example working would be 
most appriciated.

Thanks !

\Eric



More information about the opus mailing list