[Speex-dev] Quick survey for Speex 1.2

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Wed Nov 15 18:49:30 PST 2006

> Another issue is the memory allocations distributed so many places that
> it's hard to provide a single memory initial function interface.
> In a VoIP case on ARM, the total memory size for speex codec should be
> known at the inital stage since  all the  memories are allocated
> at the initial stage.

If you want everything in the same big block, all you need to do is
override the speex_alloc() function to give pointers to a big block
you've previously allocated.

> In my current implementation, all the memory allocations are collected
> together to form one big structure like below,
> typedef struct  {
>    EncState                    enc_state;
>    char                           stack[NB_ENC_STACK];
>    spx_word16_t winBuf[80];
>    spx_word16_t excBuf[612];
>    spx_word16_t swBuf[612];
>    spx_word16_t lagWindow[22];

Yuk. That's so.... G.729 and ITU codecs :-) As much as you'd like
something like that, it would be a pain to maintain it. If you want
everything in one chunk, just go with the solution above.

> The structure defined above is used to allocate all memories after call
> the  initial function.
> The problem here is the size of the structure which is very large(160k
> Word32) for wb which is unacceptable for ARM.

That's a totally different topic. I do intend to reduce the wb memory
usage, just like I did with the narrowband for 1.2beta1. Still, don't
know where you take this 160k Word32 number (640 kB). I don't think
wideband requires anywhere near that amount of memory.


> Any suggestion?
> Regards,
> Lianghu
> On 11/13/06, *Jean-Marc Valin* <jean-marc.valin at usherbrooke.ca
> <mailto:jean-marc.valin at usherbrooke.ca>> wrote:
>     Hi everyone,
>     As you may have guess, Speex 1.2 is slowly approaching, though there's
>     still a lot left to do so I can't say how long it'll take. I thought
>     this was the right time to ask if there's anything missing or that can
>     be improved to make 1.2 better. At this point, it can't be anything
>     major, but there are still some changes that are possible, e.g:
>     - Improving some component that doesn't behave very well.
>     - Improving a confusing API.
>     - Improving robustness of a component to a specific condition
>     - Adding a minor feature
>     ...
>     So what's your favourite "I wish Speex could..." or "Speex sucks
>     because..."? I won't promise I'll take everything into account, but I'll
>     do my best -- if not for 1.2, then maybe for 1.4. Oh, and no I will not
>     make Speex compatible with G.729 :-)
>             Jean-Marc
>     P.S. I finally got around to posting my trivial Speex client that shows
>     how to use Speex with the echo canceller, preprocessor and jitter
>     buffer. It's in svn at http://svn.xiph.org/trunk/speex/speexclient/
>     _______________________________________________
>     Speex-dev mailing list
>     Speex-dev at xiph.org <mailto:Speex-dev at xiph.org>
>     http://lists.xiph.org/mailman/listinfo/speex-dev

More information about the Speex-dev mailing list