[Haskell-cafe] Video phone application

Jamie haskell at datakids.org
Mon Feb 9 00:21:15 EST 2009


I like to create H.323 (primarly) & SIP based video phone application that 
will run on Linux, Windows & Mac platforms and of course, written in 
Haskell.  (Writing similar application in Haskell is not "reinventing the 
wheel" :)

I did look/try various current H.323/SIP based video phone software that 
runs on Windows, Mac and Linux such as Ekiga, XMeeting, Linphone, Mirial 
and some others.  Ekiga (despite version 3.x) is unstable, keeps crashing 
a lot on me.  XMeeting (Mac) does not work good (choppy videos, dropped 
packets et al).  So do Linphone.  The best of the lot so far is Mirial 
Softphone, it has nice decent features to begin with, but there are lot 
more features I want to add.  Please let me know if there is good H.323 
based videophone software that I might miss (I think I have looked at all 
of them).

Since my video phone application mainly focus more on deaf people thus 
strong emphasize on video part while all other (if not all) video 
softphone put stronger emphasize on audio part & traditional phone setup. 
Also it has to be primarly H.323 because I would say about over 95% or so 
of all deaf people (with high speed Internet access) use Sorenson VP-200 
as their "main" videophone (Sorenson gives away VP-200 video phone device 
for free to all deaf people in USA in exchange for using Sorenson Video 
Relay Service which they make profit from).  Sorenson VP-200 only supports 
H.323, H.263 video codec and G.711/G.723.1 audio codec.  Being able to 
work with VP-200 well is this application's first step.

Skype, ooVoo, SightSpeed, QuteCom, VZOchat, iChat AV and some others are 
excellent video phone/chat applications but they are not H.323 complaint 
so they are "out of question".

It would take me a lot of time (more like forever) if I have to write my 
own H.323 protocol stack along with video/audio codecs as well the GUI in 
Haskell. So in order to write this application in timely manner (say one 
year from now or so) I will need external library/functions for H.323/SIP 
protocol stack, the audio/video codecs and the GUI.

I have been contacting serveral companies that offer licensing of their 
H.323/SIP/codecs SDK/API/Libraries for my program to be able to access to 
those functions.  Naturally all of them ues C/C++.  Yes there are some 
free/open source ones such as h323plus.org, x264, ffmpeg and some others, 
but still all of them are written in C/C++.  I think I am more likely to 
go for commercial libraries due to stability (least bugs), higher 
performance, better documentation and whole set of supported features.

What do I ask to make sure those libraries/SDK would work well with 

As for GUI, since I would like for this application to run on three 
popular platforms: Windows, Mac and Linux, so I think I would have to use 
Gtk+, wxWidgets or Qt which mean I would use Gtk2Hs, wxHaskell or 
qtHaskell.  Even nicer is to use FRP GUI library such as Fruit, 
Grapefruit, wxFruit, et al.  This application would need to support 
localization i.e. support different languages.

What do you suggest for me to use one of middle level GUI library or even 
the higher level FRP GUI library (with localization support)?

Fast and smooth video (i.e. 30 FPS) is the key for this application.

As it stands now, looks like I'll write the "main program" entirely in 
Haskell, then use some kind of bindings to call to those C/C++ libraries 
for H.323, SIP, codecs, webcam/video camera I/O, video display, GUI et al.

Any better ideas for doing this?

I know it would be dream come true to see acclerated vector/raster based 
drawing primitives with FRP GUI on top written entirely in Haskell along 
with H.323, codecs et al being written in Haskell too (we may have to wait 
quite while for that), but we live in real world so I will have to learn 
to deal with what we have now and the workarounds.

Thanks in advance!


More information about the Haskell-Cafe mailing list