[CELT-dev] Porting CELt to the C5505
Cave, Tony
t-cave at ti.com
Thu Dec 31 08:00:39 PST 2009
Jean-marc,
I am now using this default option. Originally this was not working because global-stack was not allocated. I allocated this in testcelt.c and it seems to be working now.
I'll continue testing with the current implementation and if all is well I will look into using alloca, as this would be my preferred option.
Regards,
Tony.
Texas Instruments Limited, 800 Pavilion Drive, Northampton, NN4 7YL. Registered in England & Wales under company number 00574102
-----Original Message-----
From: Jean-Marc Valin [mailto:jean-marc.valin at usherbrooke.ca]
Sent: 30 December 2009 00:43
To: Cave, Tony
Cc: celt-dev at xiph.org; Peake, Greg
Subject: Re: [CELT-dev] Porting CELt to the C5505
Well, obviously if you replace alloca() by malloc(), it's only a matter
of time 'til you run out of memory. I'm really surprised that the
compiler doesn't support either alloca() or C99 variable-length arrays.
The only other option is to fall back on the "pseudo stack", which is
the default. Any reason this doesn't work?
Jean-Marc
On 2009-12-29 15:33, Cave, Tony wrote:
> Jean-Marc,
>
> Sorry I have not got back to you, I had a lot to finish off on the run
> up to Xmas vacations. I suspect I have introduced a memory leak. If I
> increase the heap then it increases the number of iteration of encode
> before the crash.
>
> I suspect it is because the modification I made below in stack_alloc.h.
> I made this because I had no alloca function.
>
> /#elif defined(USE_ALLOCA)/
>
> / /
>
> /#define VARDECL(type, var) type *var/
>
> /#define ALLOC(var, size, type) var =
> ((type*)*malloc/*alloca*/(sizeof(type)*(size)));
> memset(var,0,sizeof(type)*(size))*/
>
> /#define SAVE_STACK/
>
> /#define RESTORE_STACK/
>
> /#define ALLOC_STACK/
>
> / /
>
> /#else/
>
> (I attached the file for reference).
>
> I am almost convinced this is the issue as the alloc a would be coming
> out of the heap and not the stack. Can you suggest a better way of
> implementing this? Or a way to make the de-alloc come from the heap
> (i.e. free the malloc)?
>
> Regards,
>
> Tony.
>
> Texas Instruments Limited, 800 Pavilion Drive, Northampton, NN4 7YL.
> Registered in England & Wales under company number 00574102
>
> -----Original Message-----
>
>
> From: Jean-Marc Valin [mailto:Jean-Marc.Valin at USherbrooke.ca]
> Sent: 17 December 2009 16:34
> To: Cave, Tony
> Cc: celt-dev at xiph.org
> Subject: RE: [CELT-dev] Porting CELt to the C5505
>
> Quoting "Cave, Tony" <t-cave at ti.com>:
>
>> Jean-Marc,
>
>> I have the codec and testcelt.c building and running, but after 5
>
>> encode/decode (or 10 enc only) cycles I see something that looks like it
>
>> popped the stack. What are the stack size requirements?
>
> If it doesn't overflow the stack on the first call, I don't see how it
> would do
>
> so later. What probably happens is that for some reason the stack is never
>
> restored back to its normal value. But just in case, try increasing it a
> bit.
>
> What frame size/number of channels are you using?
>
> Jean-Marc
>
>> Regards,
>
>> Tony.
>
>>
>
>>
>
>> Texas Instruments Limited, 800 Pavilion Drive, Northampton, NN4 7YL.
>
>> Registered in England & Wales under company number 00574102
>
>>
>
>> -----Original Message-----
>
>>
>
>> From: Jean-Marc Valin [mailto:jean-marc.valin at usherbrooke.ca]
>
>> Sent: 17 December 2009 12:03
>
>> To: Cave, Tony
>
>> Cc: celt-dev at xiph.org; Peake, Greg
>
>> Subject: Re: [CELT-dev] Porting CELt to the C5505
>
>>
>
>> Hi Tony,
>
>>
>
>> What do you mean by "create an alloca.h" doesn't the compiler have one?
>
>> If not, then you might as well create a definition for the VARDECL() and
>
>> ALLOC() macros (see stack_alloc.h). I would be interested in merging bac
>
>> the changes. The best way to do that is to send a patch. Ideally, the
>
>> arch-dependent changes should be clearly separated from the
>
>> arch-dependent code (within #ifdef or separate file).
>
>>
>
>> Cheers,
>
>>
>
>> Jean-Marc
>
>>
>
>>
>
>> On 17/12/09 03:14, Cave, Tony wrote:
>
>> > Jean-Marc, Thank you for the tips. I think I have solved the stack
>
>> > issue (I noticed the C99 array issue and avoided this). I will
>
>> > probably create an alloca.h (I think this is the correct thing to
>
>> > do). I am happy to feed back any work I do, if you want me to do this
>
>> > what is the process?
>
>> >
>
>> > Tony.
>
>> >
>
>> >
>
>> > Texas Instruments Limited, 800 Pavilion Drive, Northampton, NN4 7YL.
>
>> > Registered in England& Wales under company number 00574102
>
>> >
>
>> > ----- Original Message -----
>
>> >
>
>> > From: Jean-Marc Valin<jean-marc.valin at usherbrooke.ca> To: Cave, Tony
>
>> > Cc: celt-dev at xiph.org<celt-dev at xiph.org> Sent: Thu Dec 17 03:18:43
>
>> > 2009Subject: Re: [CELT-dev] Porting CELt to the C5505
>
>> >
>
>> > Hi,
>
>> >
>
>> > There's are already some C55-specific optimisations in the code. You
>
>> > can enable them by defining CONFIG_TI_C55X and ENABLE_TI_DSPLIB. As
>
>> > for the stack allocation, it's just a fallback for compilers that
>
>> > don't support C99 arrays and have a broken alloca() -- it's always
>
>> > best not to use it. Still, can you tell me what problem you are
>
>> > seeing with it?
>
>> >
>
>> > Cheers,
>
>> >
>
>> > Jean-Marc
>
>> >
>
>> > On 16/12/09 05:38, Cave, Tony wrote:
>
>> >> Hi,
>
>> >>
>
>> >> I am an applications engineer for Texas Instruments in the UK. I
>
>> >> am trying to port the CELT codec to the C5505, this has HW
>
>> >> accelerated FFT engine
>
>> >> (http://focus.ti.com/docs/prod/folders/print/tms320vc5505.html).
>
>> >>
>
>> >> I am having problems with the stack allocation. Do you have any
>
>> >> reference code that compiles for the C55x under CCS (code composer
>
>> >> studio)?
>
>> >>
>
>> >> *******************************
>
>> >>
>
>> >> Tony Cave
>
>> >>
>
>> >> Senior Embedded Processor FAE
>
>> >>
>
>> >> Texas Instruments Limited
>
>> >>
>
>> >> 3000 Aviator way
>
>> >>
>
>> >> Manchester
>
>> >>
>
>> >> M22 5TG
>
>> >>
>
>> >> Mb: +44-7917-183293
>
>> >>
>
>> >> *******************************
>
>> >>
>
>> >> Texas Instruments Limited, 800 Pavilion Drive, Northampton, NN4
>
>> >> 7YL. Registered in England& Wales under company number 00574102
>
>> >>
>
>> >>
>
>> >>
>
>> >> _______________________________________________ celt-dev mailing
>
>> >> list celt-dev at xiph.org
>
>> >> http://lists.xiph.org/mailman/listinfo/celt-dev
>
>> >
>
>> >
>
>> >
>
>>
>
>>
>
>>
>
More information about the celt-dev
mailing list