[opus] Global stack on Cortex-M4

Eric
Wed, 18 Oct 2017 20:40:58 -0000

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