[Speex-dev] Re: Speex-dev Digest, Vol 33, Issue 10

venkatram mustoor mustoor.venkatram at gmail.com
Tue Feb 13 04:49:42 PST 2007


Hi All,

I am trying to cross compile speex-1.1.12 to powerpc-405,

i get a error after the make,   speexec.lo error,
please help me how to get rid of this error.


On 2/9/07, speex-dev-request at xiph.org <speex-dev-request at xiph.org> wrote:
> Send Speex-dev mailing list submissions to
>         speex-dev at xiph.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://lists.xiph.org/mailman/listinfo/speex-dev
> or, via email, send a message with subject or body 'help' to
>         speex-dev-request at xiph.org
>
> You can reach the person managing the list at
>         speex-dev-owner at xiph.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Speex-dev digest..."
>
>
> Today's Topics:
>
>    1. Re: AEC and resample question (Jim Crichton)
>    2. Re: AEC and resample question (Jean-Marc Valin)
>    3. Speex port to Coldfire or Equivalent (Larry W. Koos)
>    4. speex in C# please help (Mohammed Ibrahim)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 8 Feb 2007 16:27:28 -0500
> From: "Jim Crichton" <jim.crichton at comcast.net>
> Subject: Re: [Speex-dev] AEC and resample question
> To: <jtrantow at ieee.org>, <speex-dev at xiph.org>
> Message-ID: <00b601c74bc7$ef43c6c0$7100a8c0 at Jimlaptop2>
> Content-Type: text/plain; format=flowed; charset="iso-8859-1";
>         reply-type=original
>
> Jerry,
>
> Looking at the paper that you referenced (which I have seen before), the
> example shows an AEC on the microphone/speaker side and an LEC on the
> ISDN/PSTN side, and an Adaptive Interpolator in the middle.  The add/drop
> sample approach is just a simple adaptive interpolator, and, as you say, it
> has nothing to do with the echo path delay.
>
> As long as you are behind the AEC/microphone/speaker combination, it seems
> like dropping or repeating samples should not affect the echo canceller at
> all.  However, you are introducing phase jumps in the audio, and maybe that
> disrupts the frequency-domain echo canceller that Speex is using.
>
> Cutting and pasting speech files would create similar phase jumps.
> Jean-Marc, would you expect this to give the echo canceller any trouble?
>
> If this is really an issue, instead of adaptive resampling, you could try to
> make the changes when the energy is low.  But the decision logic might not
> be any simpler than the resampler.
>
> - Jim
>
>
> ----- Original Message -----
> From: "Jerry Trantow" <jtrantow at ieee.org>
> To: <speex-dev at xiph.org>
> Sent: Thursday, February 08, 2007 1:08 PM
> Subject: [Speex-dev] AEC and resample question
>
>
> 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?
>
>
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev
>
>
>
>
> ------------------------------
>
> Message: 2
> Date: Fri, 09 Feb 2007 09:35:26 +1100
> From: Jean-Marc Valin <jean-marc.valin at usherbrooke.ca>
> Subject: Re: [Speex-dev] AEC and resample question
> To: jtrantow at ieee.org
> Cc: speex-dev at xiph.org
> Message-ID: <45CBA5AE.9030903 at usherbrooke.ca>
> Content-Type: text/plain; charset=ISO-8859-1
>
>
>
> Jerry Trantow a écrit :
> > 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.
>
> The only requirement for sync is between the near-end capture and
> playback. outside of that, you can do pretty much whatever you like.
>
> > 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.
>
> All of that is only about differences between the capture and playback
> clocks.
>
> > 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?
>
> The resampler I have is actually designed to be able to do that type of
> this. But in your case it's overkill, just keep on discarding samples
> (or better, doing a bit of smoothing) and you should be fine.
>
> Sorry about the confusion.
>
>         Jean-Marc
>
>
> ------------------------------
>
> Message: 3
> Date: Thu, 08 Feb 2007 09:08:00 -0500
> From: "Larry W. Koos" <larry at koostech.com>
> Subject: [Speex-dev] Speex port to Coldfire or Equivalent
> To: speex-dev at xiph.org
> Message-ID: <45CB2EC0.5050703 at koostech.com>
> Content-Type: text/plain; charset="us-ascii"
>
> An HTML attachment was scrubbed...
> URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20070208/8d58621c/attachment.htm
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: ktsLogoNew.jpg
> Type: image/jpeg
> Size: 8000 bytes
> Desc: not available
> Url : http://lists.xiph.org/pipermail/speex-dev/attachments/20070208/8d58621c/ktsLogoNew.jpg
>
> ------------------------------
>
> Message: 4
> Date: Thu, 8 Feb 2007 17:36:40 +0200
> From: "Mohammed Ibrahim" <snouto at gmail.com>
> Subject: [Speex-dev] speex in C# please help
> To: <speex-dev at xiph.org>
> Message-ID: <000601c74b96$ef707250$0201a8c0 at robtronix>
> Content-Type: text/plain; charset="windows-1256"
>
> hello guys this is my code for the C# wrapper.
> =================================
> using System;
>
> using System.Runtime.InteropServices;
>
> using System.IO;
>
> namespace Speex
>
> {
>
> ///<summary>
>
> ///the following class is the win32 SPEEX API that retrieve
>
> ///methods and structures from the libspeex file
>
> ///</summary>
>
> public unsafe class Speex_win32
>
> {
>
> #region Speex Constants
>
> //global speex file that contains the api(s)
>
> public const string libpath = "libspeex.dll";
>
> public const int Frame_Size = 160;
>
> public const int Max_Frame_Size = 2000;
>
> public const int Speex_Get_Frame_Size = 3;
>
> public const int Speex_Set_Quality = 4;
>
> public const int Speex_nb_Mode = 3;
>
> //create the structure that will hold the speexbits
>
> public struct SpeexBits
>
> {
>
> public char *chars; /* "raw" data */
>
> public int nbBits; /* Total number of bits stored in thestream*/
>
> public int charPtr; /* Position of the byte "cursor" */
>
> public int bitPtr; /* Position of the bit "cursor" within thecurrent char */
>
> public int owner; /* Does the struct "own" the "raw" buffer(member "chars") */
>
> public int overflow; /* Set to one if we try to read past thevalid data */
>
> public int buf_size; /* Allocated size for buffer */
>
> public int reserved1; /* Reserved for future use */
>
> public void *reserved2; /* Reserved for future use */
>
> }
>
> [StructLayout(LayoutKind.Sequential)]
>
> public struct SpeexMode
>
> {
>
> public void *mode;
>
> public IntPtr query;
>
> public char *modename;
>
> public int modeid;
>
> public int bitstream_version;
>
> public IntPtr enc_init;
>
> public IntPtr enc_destroy;
>
> public IntPtr enc;
>
> public IntPtr dec_init;
>
> public IntPtr dec_destroy;
>
> public IntPtr dec;
>
> public IntPtr enc_ctl;
>
> public IntPtr dec_ctl;
>
> }
>
> #endregion
>
> #region Exported Methods
>
> [DllImport(libpath)]
>
> public static extern void *speex_encoder_init(ref SpeexMode modein);
>
> [DllImport(libpath,EntryPoint="speex_lib_get_mode")]
>
> public static extern IntPtr speex_lib_get_mode (int modein);
>
> [DllImport(libpath)]
>
> public static extern int speex_encoder_ctl(void *state , int request , void *ptr);
>
> [DllImport(libpath)]
>
> public static extern int speex_encoder_settings(void *state , int complexity , int samplingrate,int quality , int bitrate);
>
> [DllImport(libpath)]
>
> public static extern int speex_encoder_int(void *state , short *input , SpeexBits *bits);
>
> //exported bit operation methods
>
> [DllImport(libpath)]
>
> public static extern void speex_bits_init(SpeexBits *bits);
>
> [DllImport(libpath)]
>
> public static extern int speex_bits_write(SpeexBits *bits , IntPtr bytes , int Max_length);
>
> [DllImport(libpath)]
>
> public static extern int speex_bits_reset(SpeexBits *bits);
>
> [DllImport(libpath)]
>
> public static extern void *speex_decoder_init(int modein);
>
> [DllImport(libpath)]
>
> public static extern int speex_decoder_ctl(void *state , int request , void *ptr);
>
> [DllImport(libpath)]
>
> public static extern int speex_decoder_int(void *state , short *input , SpeexBits *bits);
>
> #endregion
>
> }
>
> }
>
>
>
> when i call the speex_lib_get_mode(int modein);
>
> in my managed code i have an exception with the message "unable to find an entrypoint for the speex_lib_get_mode in the libspeex.dll file"
>
> please help is there anything something wrong in my wrapper please help or correct my file please.
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20070208/9ba521bb/attachment.htm
>
> ------------------------------
>
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev
>
>
> End of Speex-dev Digest, Vol 33, Issue 10
> *****************************************
>


More information about the Speex-dev mailing list