Ekiga as a SIP client
This is written for Ekiga 3.2.6. If you are using other versions your mileage may vary.
Patch asterisk
Asterisk in its stable branch shipped on debian (1.4.21) does not support video properly. There are two major problems:
- No support for additional format args in SIP SDPs. Some of the codecs like mpeg4 pass parameters in a = fmtp:= entry in the SDP. This is stripped by Asterisk. As a result both clients fall back to the "minimal" mpeg4 profile No 1 - 64K, 172x144 width. I have yet to solve that. Asterisk is not architected for pass through of SDP data - all data in the SDP is parsed and rebuilt from scratch. Looking at the code in channel_sip.c adding "sane" support for mpeg4 profiles is going to be rather difficult. It is also one of the reasons why asterisk does not support G722 properly. In anyt case, this does not affect other codecs which do not ship args in a fmtp: entry in the SIP sdp like theora, H263, etc.
- Asterisk does not support theora and MP4 as shipped with debian. These will be stipped from the SDP and the call dropped to audio only or other codec. Fixing it requires asterisk to be patched to recognise these formats properly. The attached patch does that for asterisk. However that does not fix the ekiga side which still uses the wrong ID and not the ID in draft-barbato-avt-rtp-theora-01 (124 instead of 98). I need to fix ekiga for that which I will try to do ASAP.
Asterisk configuration
- Enable video in asterisk - asterisk needs video enabled globally in order for SIP video to work.
videosupport=yes ; Turn on support for SIP video. You need to turn this on
; in the this section to get any video support at all.
; You can turn it off on a per peer basis if the general
; video support is enabled, but you can't enable it for
; one peer only without enabling in the general section.
maxcallbitrate=8000 ; Ekiga cannot realistically produce more than 3M anyway
nat=no
insecure=very
qualify=yes
type=friend
regexten=7117
username=EkigaQuoth
context=default
secret=XXXX
host=192.168.3.51
canreinvite=yes
allow=all
Ekiga works flawlessly as a "fixed" peer. Making it work as dynamic however is in the realm of "your mileage may vary".
Ekiga Configuration (cut-n-pasted with fixes from ekiga.com).
Pretty much just fill up the relevant details into the account dialogue. After that enter the proxy address into the Preferences/SIP section. If you are using a non-standard port it can be entered in host:port notation and it works (my SIP server runs on an upper port so it can be accessed from hotspots and other places where 5060 is filtered).
Ekiga encoder/decoder performance is anything but stellar. 320x240 will work on nearly anything. 640x480 however is in the land of "forget it". It flatlines a Pentium 4 at 2.4GHz on the codecs which can support 640x480. In both cases the maximum stream bandwidth is around 2-3Mbit. It however does not properly wean frames. As a result there is a noticeable lag between audio and video and video is late by up to several seconds.
Caveats
- The call state machine in Ekiga is broken. Nothing surprising - welcome to "Gnome Land". The first time you dial from the dialpad it fails. You have to enter a full SIP url into the URL bar instead. After that however dialing from the pad works. Go figure.
Topic revision: r3 - 21 Feb 2010 - 14:24:19 -
AntonIvanov?