[Haskell-cafe] Video phone application
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
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
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