[opus] Memory Size?
Mike Hooper
mihooper at bellsouth.net
Fri Aug 31 11:25:19 PDT 2012
Greg,
Thanks for the quick reply.
Let me make sure I understand what you are saying.
I have compiled with NONTHREADSAFE_PSEUDOSTACK since the TI compiler does
not support alloca. As I understand it, ALLOC_STACK, using
opus_alloc_scratch(), creates a heap of size= GLOBAL_STACK_SIZE, which is
100k bytes as defined in arch.h by
"#define GLOBAL_STACK_SIZE 100000" for FIXED_POINT systems.
After the heap is created, both the encoder and decoder are created in this
heap by:
enc = malloc(size);
dec = malloc(size);
Therefore, if I have determined (by using get_size) that both the encoder
and decoder require no more 50kbytes, I can safely reduce the
GLOBAL_STACK_SIZE to 50kbytes?
-----Original Message-----
From: Gregory Maxwell [mailto:gmaxwell at gmail.com]
Sent: Friday, August 31, 2012 1:40 PM
To: Mike Hooper
Cc: opus at xiph.org
Subject: Re: [opus] Memory Size?
On Fri, Aug 31, 2012 at 1:10 PM, Mike Hooper <mihooper at bellsouth.net> wrote:
> In order to determine the optimum heap size requirements for my embedded
> C55xx design, I have used the following to get the encoder and decoder
> memory requirements:
[snip]
> Both the encode decoder init function return no error. However,
opus_encode
> crashes somewhere deep in the bowels of the function (I cannot determine
> where since I have compiler optimizations enabled). Do I need more heap
than
> what is returned by the above get_size functions?
In a normal compile there are _no_ heap allocations done except in the
_create calls, which you can avoid using as you've described.
If you have compiled with NONTHREADSAFE_PSEUDOSTACK in order to reduce
the stack usage then there are heap allocations via
opus_alloc_scratch() to allocate stack for the pesudostack.
More information about the opus
mailing list