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

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Tue Feb 13 14:49:20 PST 2007


Could you be less specific please?

	Jean-Marc

venkatram mustoor a écrit :
> 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
>> *****************************************
>>
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev
> 
> 


More information about the Speex-dev mailing list