I'm Youness Alaoui, a.k.a KaKaRoTo, Project manager and developer of the aMSN project, a Tcl/Tk application.

I wrote a Tk extension for flashing a window in the taskbar under windows (winflash).

I wrote the Chameleon package that allows you to easily migrate to Tile (c.f. How to migrate to Tile).

I wrote the Tcl_Farsight extension for binding to the farsight library.

That's it for now.. short introduction

LV When you say aMSN, are you referring to Alvaro's Messenger?

Yes, but the application was renamed simply to aMSN a while ago.

ferrieux Googling yields next to nothing about the Tcl_Farsight extension. Do you have a pointer to the script-level API it exposes ? Possibly examples ?

KaKaRoTo @ferrieux : Google will probably not give you much info as it's code in aMSN's SVN repository. Its code is a little MSN specific at the moment but it won't require much changes to make it compatible with something else (it uses the 'nice' component with MSN compatibility and it's easy to make it compatible with ICE draft 19 by changing one int, or make it use raw UDP by changing a string). There are no docs for now since it's for internal use only by aMSN, but if there is interest, I can enhance it so others can enjoy it. It's fairly simple/easy.

  kakaroto% tclsh
  % lappend auto_path [pwd]
  /usr/share/tcltk/tcl8.4 /usr/lib /usr/local/lib/tcltk /usr/local/share/tcltk /usr/lib/tcltk /usr/share/tcltk /home/kakaroto/amsn/utils/farsight
  % package require Farsight
  % info commands ::Farsight::*
  ::Farsight::InUse ::Farsight::Stop ::Farsight::Start ::Farsight::Prepare
  % ::Farsight::Prepare
  wrong # args: should be "::Farsight::Prepare  callback controlling ?relay_info? ?stun_ip stun_port?
  Where relay_info is a list with each element being a list containing : {turn_hostname turn_port turn_username turn_password}"
  % ::Farsight::Start
  wrong # args: should be "::Farsight::Start  remote_codecs remote_candidates
  Where remote_codecs is a list with each element being a list containing : {encoding_name payload_type clock_rate}
  And where remote_candidates is a list with each element being a list containing : {username component_id password protocol priority ip port}"
  % ::Farsight::Stop
  % ::Farsight::InUse
  % exit

You can have a look at the code in aMSN's SVN repository. You can also look at the file sip.tcl and the Farsight snit type for a 'how to use'. The ::Farsight::Prepare will make it gather candidates and do local codecs discovery and it will call your callback proc with the info it found. You can also just use the ::Farsight snit type as a wrapper around the library.

ABU 16-Mar-2010

What about the "Image Handling Enhancement" project listed in GSoC 2009 Executed Projects ?