Thanks Jean-Marc. Is there a Speex trunk for the C64xx I can use? Or do I have to figure what options to turn on (in configure) when building the library? Thanks. Regards, Andy Ngo ----- Original Message ---- From: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> To: ndno72-speex@yahoo.com Cc: jtrantow@ieee.org; speex-dev@xiph.org Sent: Tuesday, December 5, 2006 2:52:02 PM Subject: Re: [Speex-dev] Speex support for TI DaVinci processor Hi Andy, Speex itself (the library) should work fine on the C64xx because from the libspeex point of view, just just another 32-bit architecture with no FPU. There wasn't anything special to do to port Speex to the C64 (unlike the C5x). Jean-Marc ndno72-speex@yahoo.com a ?crit :> Jerry, > > Thanks for the response; basically, I need to get just the narrow > band working now (maybe use advanced features such as jitter buffer, > echo cancellation, VAD, etc in the future); the DSP will do the > encode and decode simultaneously as data are available. My main > objective is just do a voice application that runs on the ARM side of > the DaVinci with the codec running on the DSP side; the application > on the ARM will get from and give to the DSP Speex encoded data via > shared memory. On the outbound flow (to ARM), the DSP basically > continuously samples a mic, encodes it in Speex format, and give it > to the application on the ARM side via the shared memory; on the > inbound flow (from ARM), the DSP gets encoded Speex data via the > shared memory, decodes it and then plays it to the speaker. > > I know there's a Speex port for the TMS320VC5510 but will that port > work for the C64xx series? Thanks. > > Regards Andy > > ----- Original Message ---- From: Jerry Trantow <jtrantow@ieee.org> > To: ndno72-speex@yahoo.com; speex-dev@xiph.org Sent: Tuesday, > December 5, 2006 1:55:13 PM Subject: RE: [Speex-dev] Speex support > for TI DaVinci processor > > > Do you need to encode and/or decode? I did some work optimizing the > DM642 speex 1.1.11.1 encoder earlier this year. I was able to reduce > the narrow band MIPS from approx 30 to 16 using some of the #pragmas > and optimizing the functions (Following the BlackFin example.) The > project I was working on has been put on hold so I haven?t looked at > the more recent changes. If you are tight on MIPS, there are plenty > of opportunities to optimize Speex following the BlackFin example. > > -----Original Message----- From: speex-dev-bounces@xiph.org > [mailto:speex-dev-bounces@xiph.org] On Behalf Of > ndno72-speex@yahoo.com Sent: Friday, December 01, 2006 5:18 PM To: > speex-dev@xiph.org Subject: [Speex-dev] Speex support for TI DaVinci > processor > > Hi, > > My company just recently bought a TI DaVinci development board and > I'm trying to port Speex to run on it. The TI DaVinci chip has an > ARM926 processor and a TMS320C64+ DSP in it. I was able to get Speex > somewhat working on a TMS320VC5510 about a year ago but I was > wondering is there anything special I need to do to get Speex working > on the TMS320C64+ DSP in the DaVinci chip. I appreciate any insight > or comment you may give me or point me to sites where I can get more > information. Thanks in advance! > > Andy > > > ------------------------------------------------------------------------ > > > _______________________________________________ Speex-dev mailing > list Speex-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20070104/d1cacf32/attachment.htm
Andy Ngo wrote:> Thanks Jean-Marc. Is there a Speex trunk for the C64xx I can use? Or > do I have to figure what options > to turn on (in configure) when building the library? Thanks.Support is in the main version. Just look at the TI/ directory for extra TI-related stuff. Jean-Marc> Regards, > Andy Ngo > > ----- Original Message ---- > From: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> > To: ndno72-speex@yahoo.com > Cc: jtrantow@ieee.org; speex-dev@xiph.org > Sent: Tuesday, December 5, 2006 2:52:02 PM > Subject: Re: [Speex-dev] Speex support for TI DaVinci processor > > Hi Andy, > > Speex itself (the library) should work fine on the C64xx because from > the libspeex point of view, just just another 32-bit architecture with > no FPU. There wasn't anything special to do to port Speex to the C64 > (unlike the C5x). > > Jean-Marc > > ndno72-speex@yahoo.com a ?crit : >> Jerry, >> >> Thanks for the response; basically, I need to get just the narrow >> band working now (maybe use advanced features such as jitter buffer, >> echo cancellation, VAD, etc in the future); the DSP will do the >> encode and decode simultaneously as data are available. My main >> objective is just do a voice application that runs on the ARM side of >> the DaVinci with the codec running on the DSP side; the application >> on the ARM will get from and give to the DSP Speex encoded data via >> shared memory. On the outbound flow (to ARM), the DSP basically >> continuously samples a mic, encodes it in Speex format, and give it >> to the application on the ARM side via the shared memory; on the >> inbound flow (from ARM), the DSP gets encoded Speex data via the >> shared memory, decodes it and then plays it to the speaker. >> >> I know there's a Speex port for the TMS320VC5510 but will that port >> work for the C64xx series? Thanks. >> >> Regards Andy >> >> ----- Original Message ---- From: Jerry Trantow <jtrantow@ieee.org> >> To: ndno72-speex@yahoo.com; speex-dev@xiph.org Sent: Tuesday, >> December 5, 2006 1:55:13 PM Subject: RE: [Speex-dev] Speex support >> for TI DaVinci processor >> >> >> Do you need to encode and/or decode? I did some work optimizing the >> DM642 speex 1.1.11.1 encoder earlier this year. I was able to reduce >> the narrow band MIPS from approx 30 to 16 using some of the #pragmas >> and optimizing the functions (Following the BlackFin example.) The >> project I was working on has been put on hold so I haven?t looked at >> the more recent changes. If you are tight on MIPS, there are plenty >> of opportunities to optimize Speex following the BlackFin example. >> >> -----Original Message----- From: speex-dev-bounces@xiph.org >> [mailto:speex-dev-bounces@xiph.org] On Behalf Of >> ndno72-speex@yahoo.com Sent: Friday, December 01, 2006 5:18 PM To: >> speex-dev@xiph.org Subject: [Speex-dev] Speex support for TI DaVinci >> processor >> >> Hi, >> >> My company just recently bought a TI DaVinci development board and >> I'm trying to port Speex to run on it. The TI DaVinci chip has an >> ARM926 processor and a TMS320C64+ DSP in it. I was able to get Speex >> somewhat working on a TMS320VC5510 about a year ago but I was >> wondering is there anything special I need to do to get Speex working >> on the TMS320C64+ DSP in the DaVinci chip. I appreciate any insight >> or comment you may give me or point me to sites where I can get more >> information. Thanks in advance! >> >> Andy >> >> >> ------------------------------------------------------------------------ >> >> >> _______________________________________________ Speex-dev mailing >> list Speex-dev@xiph.org >> http://lists.xiph.org/mailman/listinfo/speex-dev >
I am in the process of dropping the TI DSP lib fft routines into the AEC. Currently, FFTWrap.c uses the USE_SMALLFT and USE_KISS_FFT to select between two packages of FFT routines. ] #ifdef USE_SMALLFT ... #elif defined(USE_KISS_FFT) ... #else #error No other FFT implemented #endif My guess is that every DSP and many other processors will have their own specific FFT and iFFT. What method should be used to drop in a DSP specific FFT? Should just use something like this for fftwrap.c? #if defined(__TMS320C55X__) #include "FFT_TI55.h" #endif #ifdef USE_SMALLFT ... #elif defined(USE_KISS_FFT) ... #else // Use FFTWrap_*.h file to supply processor specific functions. #if defined(OVERRIDE_FFT_INIT) void *spx_fft_init(int size) {}; #endif #if defined(OVERRIDE_FFT_INIT) void spx_fft_destroy(void *table) {}; #endif #if defined(OVERRIDE_FFT_INIT) void spx_fft(void *table, float *in, float *out) {}; #endif #if defined(OVERRIDE_FFT_INIT) void spx_ifft(void *table, float *in, float *out) {}; #endif #endif
I understand that the capture/playback signals need to be sync'd for an AEC to adapt. I'm a little bit confused on the requirements of synchronous sampling between the near end (mic/speaker) and the far end (phone line). I have an embedded DSP system with mic and speaker getting 1msec packets containing 8 samples. We can watch the DSP and ISDN clock frames drift and every few minutes we will drop or reuse a packet of samples. According to "Echo Cancellation Demystified" by Alexey Frunze http://www.spiritdsp.com/pdf/article_4.pdf (see section "Incorrect Codec Synchronization") dropping or reusing samples isn't a viable solution since it abruptly changes the echo path delay. If I am dropping/reusing far end (phone line/ISDN) samples before they go out the speaker and after the mic, I don't understand why this has anything to do with the echo path. The solution in the paper is to put an adaptive SRC between the phone codec and mic/speaker codec. This must be a common situation. I'm curious how people are implementing speex and the AEC? Is there any benefit to resample? Is the speex resample code suitable for adjusting the sample rates that only differ by clock crystal tolerances?