[OpenSER-Devel] rtpproxy - transcoder patch

Stefan Sayer stefan.sayer at iptego.com
Wed Jul 9 23:32:59 CEST 2008


[sorry if you receive this mail multiple times on multiple mailing list
  - I thought people on (open)serdev might be interested, but not
  necessarily subscribed to rtpproxy lists]

Hello,

some time back Atle and me did a small hack to rtpproxy and nathelper so 
it could use the codecs from SEMS[1] to transcode RTP from one codec 
into another in the rtpproxy.

Unfortunately we never had or spent the time to get this further than 
proof-of-concept. That is, iirc the rtpproxy part is quite ok, but the 
nathelper patch could need some eyes over it. As recently someone asked 
again about it, we thought we would just release the code as it is, so 
if there is anyone interested she or he could take the code, maybe 
improve and update it a little and maybe add it into rtpproxy/nathelper.

It works the following way:
  - nathelper gets another function force_rtp_transcode, that takes the 
codec to encode to, and creates a completely new SDP with the local port 
and new codec line
  - nathelper tells rtpproxy to transcode with a new command option (T) 
that takes new codec id and format parameters
  - rtpproxy gets a new codec module path option, from where codec 
plugins are loaded
  - when rtpproxy is invoked with 'T' command option, it instantiates a 
rtpproxy transcoder session with two codec instances from the correct 
codec plugins
  - if a packet is received for an rtpproxy session with transcoder, it 
passes the packet through the codecs before sending

The patch is against rtpproxy head from 14092006; since then I think the 
rtpproxy code has been a little restructured, so it would need some 
rework to go with current rtpproxy. It contains gsm, ilbc, speex-nb and 
g711 codec plugins; since then g726, l16, g722 (nb de/encoding) have 
been added to SEMS (though the codec interface has slightly changed, 
mostly optional stuff). Other codec wrappers (e.g. 729) could be added 
easily. A sample transcoder.cfg is in nathelper dir.

The patch and files are available at 
http://user.cs.tu-berlin.de/~sayer/transcoder/

If anyone is taking this up, we would be happy to hear about it.

Best Regards
Stefan Sayer & Atle Samuelsen

[1] http://iptel.org/sems

-- 
Stefan Sayer
VoIP Services

stefan.sayer at iptego.com
www.iptego.com

iptego GmbH
Am Borsigturm 40
13507 Berlin
Germany

Amtsgericht Charlottenburg, HRB 101010
Geschaeftsfuehrer: Alexander Hoffmann



More information about the Devel mailing list