linphone-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Linphone-developers] Linphone customisation


From: Simon Morlat
Subject: RE: [Linphone-developers] Linphone customisation
Date: Fri, 11 Dec 2009 10:24:20 +0100

Le vendredi 11 décembre 2009 à 09:10 +0000, M Walton a écrit :
> Hi Simon,
> 
> Thanks for this.  I have managed to do a basic style VAD using power/energy 
> summing whilst processing the samples in my soundcard filter - i then embed 
> this result in the packets header which gets put back onto the network - 
> seems to work quite well, but i think when time allows ill dig into the speex 
> code and see how things are working.
> 
> The code in msconf looks very interesting, yes somewhat involved - may take 
> some time that one!!
> 
> I cannot see the noise suppression in msvolume you spoke of - is it part of 
> the echo avoider? or is this an addition passed v 3.1
It is called "noise gate", it is in MSVolume, but yes probably added
after 3.1.0

Simon

> 
> -----Original Message-----
> From: Simon Morlat [mailto:address@hidden 
> Sent: 11 December 2009 8:39 AM
> To: M Walton
> Cc: address@hidden
> Subject: RE: [Linphone-developers] Linphone customisation
> 
> Hi Billy,
> 
> Oh I realize I confused VAD with AGC.
> In MSVolume there is support for gain control, automatic gain control,
> noise suppression and automatic echo mute (refered as EA, echo "avoider"
> which is not a good terminology).
> The way the echo mute algorithm works is quite simple: it consists in
> decreasing the mic gain when there are things played to the speaker.
> It works by coupling the 2 MSVolume (one in the inbound path, other in
> outbound). The coupling is done with SET_PEER. 
> The muting occurs when speaker energy exceeds EA_THRESHOLD. And there is
> a kind of smoothing controlled by EA_SPEED, when transitionning from
> echo muted to normal.
> There is a VAD implementation in speex, but it has to be used somewhere
> in MSVolume or outside in a new MSVad filter.
> The MSConf filter (for audio mixing) has builtin VAD inside but it may
> not be what you want.
> 
> Simon
> 
> Le lundi 07 décembre 2009 à 12:35 +0000, M Walton a écrit :
> > Hi Simon,
> > 
> > Many thanks for your help so far, my soundcard plugin is now working and 
> > looking good.
> > 
> > You mentioned that you had the beginnings of VAD code in the msvolume.c, 
> > but it is not yet complete in the fact that it doesnt do anything with its 
> > results...
> > 
> > I have been looking at this source, and i am a little confused as to what 
> > functions do what in the setup, could you confirm if im on the right tracks?
> > 
> > MS_VOLUME_GET               // Log volume of current packet
> > MS_VOLUME_GET_LINEAR        // Linear volume of current packet
> > MS_VOLUME_SET_GAIN  // Increases/Decreases the volume of the current packet?
> > MS_VOLUME_GET_EA_STATE      //Removes any acoustice echo from the 
> > computation?
> > MS_VOLUME_SET_PEER  
> > MS_VOLUME_SET_EA_THRESHOLD //VAD Threshold
> > MS_VOLUME_SET_EA_SPEED         //VAD Speed
> > MS_VOLUME_SET_EA_FORCE         //Amplitude needed to becom of interest to 
> > the VAD algorithm?
> > 
> > My oher option is to explore a simple power threshold technique, but by 
> > looking at the code in msvolume, i think its using a similar equation?
> > 
> > Kindest regards
> > 
> > Billy
> > 
> > -----Original Message-----
> > From: Simon Morlat [mailto:address@hidden 
> > Sent: 30 November 2009 2:37 PM
> > To: M Walton
> > Cc: address@hidden
> > Subject: Re: [Linphone-developers] Linphone customisation
> > 
> > Hi Billy,
> > 
> > I think you need to implement a soundcard plugin in mediastreamer2; take
> > example over mediastreamer2/src/alsa.c or mediastreamer2/src/winsnd2.c
> > Basically this consists in implementing 2 MSFilter, one for reading from
> > your special soundcard, one for writing to it, and one MSSndCard object
> > representing your soundcard, that will be responsible for creating the
> > MSFilter when asked.
> > Then it should work without any modification outside.
> > I recommend this method over the other one of using wav files to
> > communicate with the pseudo-soundcard.
> > 
> > For VAD, in 3.1.2 there is a start of VAD code in
> > mediastreamer2/src/msvolume.c actually based on speex VAD. However it is
> > not finished (notification of the application is not implemented), and
> > untested.
> > Hope this helps,
> > 
> > Simon
> > 
> > 
> > Le vendredi 27 novembre 2009 à 10:13 +0000, M Walton a écrit :
> > > Hello everybody,
> > > 
> > >  
> > > 
> > > My name is Billy and i have just joined this list - sorry for a long
> > > first post!.  I have been given a project which could involve using
> > > the functionality of Linphone, and i was hoping somebody may have the
> > > time to give me a few pointers to help me get started.
> > > 
> > >  
> > > 
> > > My project involves interfacing some already built audio hardware to a
> > > SIP Client type interface.  It is based on a Blackfin platform running
> > > a uClinux Dist.  No video needed, just audio.  The other hardware has
> > > an ethernet connection (local and dedicated, not via internet so
> > > streaming is easier) and expects an ADPCM stream over UDP, as well as
> > > sending the same back.
> > > 
> > > I have identified 3 areas which i will need to make modifications:
> > > 
> > >  
> > > 
> > > 1)There is no soundcard on the hardware, i will need to catch the PCM
> > > output from Linphone and convert it using a library i have written
> > > before which will stream it onto the local LAN.  I will also have to
> > > pipe the return speech stream back into Linphone in a similar way.
> > > 
> > >  
> > > 
> > > 2)I will have to add some signalling between Linphone and the current
> > > hardware to setup/tear down the calls.
> > > 
> > >  
> > > 
> > > 3)I need to somehow provide a VAD flag so i can identify if the ADPCM
> > > block just converted actually has something of interest in (as the
> > > current audio hardware is simplex).
> > > 
> > >  
> > > 
> > > I have LinPhone (V3.0) compiled and running on Blackfin uClinux
> > > 2009R1.  I think i will simply modify the LinphoneC app to achieve the
> > > signalling part.
> > > 
> > >  
> > > 
> > > To do the custom conversions into framed ADPCM, is it best to write a
> > > new filter to work with the MediaStreamer? - or somehow get linphone
> > > to pipe the PCM data in and out of files which are shared with a
> > > separate conversion application? or maybe use a Pipe? any ideas here
> > > welcome.
> > > 
> > >  
> > > 
> > > As for the VAD, well that seems the hardest at the moment, i guess it
> > > should be implemented with the ADPCM conversion routines, and i am
> > > looking at the Speex source and wondering at the moment!
> > > 
> > >  
> > > 
> > > So if anyone could suggest a pointer or two on how to best get started
> > > customising with the Linphone source id be greatly appreciative.
> > > 
> > >  
> > > 
> > > Many thanks
> > > 
> > > Billy
> > > 
> > >  
> > > 
> > >  
> > > 
> > > Billy Walton
> > > 
> > > Development Engineer
> > > 
> > > Lismore Instruments Ltd
> > > 
> > > ----------------------------------
> > > 
> > > Unit 2 Tristar Centre
> > > 
> > > Star Road Industrial Estate
> > > 
> > > Star Road
> > > 
> > > Horsham
> > > 
> > > RH13 8RA
> > > 
> > >  
> > > 
> > > [T] 01403 713121
> > > 
> > > [E] address@hidden
> > > 
> > > [W] www.Intercall.co.uk
> > > 
> > > ----------------------------------
> > > 
> > >  
> > > 
> > > 
> > > _______________________________________________
> > > Linphone-developers mailing list
> > > address@hidden
> > > http://lists.nongnu.org/mailman/listinfo/linphone-developers
> > 
> > 
> 
> 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]