First experiences with the Doubango Project

Doubango looks to be a very promising young project & stack for mobile video and audio. I took the time in the last week to experiment a little bit with the stack and see how it held up against their non-open source competitors such as Skype, Vidyo and FaceTime.

The first thing that looked extremely promising in the stack was OpenVCS, which acts as a Video conferencing server

To trial out this stack I decided I wanted to try each of the clients on their respective mobile platforms, (iDoubs for iOS and IMSDroid for Android). My end goal was to have some sort of mobile conferencing platform for video where a user could talk to another user via Video and voice.

The first thing I did was spin up a VM and install OpenVCS. The install was relatively painless and being quite familiar with .NET it was rather easy. One of the things I was intrigued about was pairing OpenVCS with a SIP Stack such as Asterisk or FreePBX, however there was no documentation at all on offer at the project site so for the purposes of testing I left OpenVCS on its own.

Next up was installing the IMSDroid. This was also relatively painless as they have a beta available in their downloads section which I can download straight to my Android phone.

In the options section, under Identity I set my realm to the IP of my VM running OpenVCS (sip:192.1682.81). and I also set my proxy-cscf host to this IP under network.

Next step was to sign into the server. This all worked as intended. No problems here.
I then used the dialer inside the application to call the bridge I had set up in OpenVCS and select call out.

After this set up it was finally time to give the bridge a test call and see what doubango’s video quality was like!
It wasn’t pretty. On my HTC Evo phone, after turning on send video I was getting some extreme delay on video play back.

The UI itself with IMSDroid is relatively simple, in the bottom left corner it shows what you are sending and in the big pane it shows what is showing up on OpenVCS. The status of the call was still Ringing and I still heard a Ring tone (perhaps this was an aspect of having openVCS on its own without a sip stack like asterisk)

With just one user in the call, I received 5second delays and extreme distortion and differences to what my little  camera in the bottom left was receiving. Not good.

I decided I needed to add another client to continue my tests. Choosing to continue on the mobile platform I visited the iDoubs project to attempt to check out performance on my development iPod Touch.
After following the steps to clone the project and then manually fix up the paths, I recieved quite a few problems with compiling. After fixing up a few of these I ran into a time constraint and decieded to instead source another person to do a two person test that had an existing android device.

After setting up IMSDroid on my collegues device, we proceeded to enter a video conference together.

My original test was on profile Baseline H.264 level 3.
We proceeded to enter and were greeted with a green background, split into 4 panes. In the top left pain was my collegues camera, complete with 20-30second delay. I would estimate the framerate was close to 2fps. Extremely bad. There was also a large warping of  the picture I was taking to what was going to OpenVCS. Again, the call was still set to ringing, even though I could see both participants by Video.

After testing with different levels of H.264 on the local network I must say that the results were just not feasible for any type of conferencing.

I’m hoping in the above steps I may have missed something rather major that could be the reason for these performance problems and I’m reaching out to anyone else who has used the above stack for video with any degree of success.  Overall the project looks like a promising start for the open source community at a reusable video calling stack but ultimately much work is still required from the community to get it to a usable level.