linphone-developers
[Top][All Lists]
Advanced

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

RE: [Linphone-developers] Linphone customisation


From: M Walton
Subject: RE: [Linphone-developers] Linphone customisation
Date: Fri, 11 Dec 2009 09:10:01 -0000

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

-----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]