Tech Talk - A Peek Behind the Curtain

I've spent a lot of time discussing video quality, resolution, frame rate, bandwidth and the like. But after using this information to set the video resolution, or optimize your setup to get the best possible performance, how are you going to know if it actually worked?

I've spent a lot of time discussing video quality, resolution, frame rate, bandwidth and the like. But after using this information to set the video resolution, or optimize your setup to get the best possible performance, how are you going to know if it actually worked? Well, the obvious way is to look at the screen and see if it is "better". But being an engineer, that's far too objective for me. This blog entry will describe how to get SightSpeed and Skype to tell you about what is going on behind the curtains. I'll also explain what a few of the most important parts mean.

SightSpeed actually has two kinds of technical (aka debug) information available. One is about the general operating environment it finds - your computer, audio and video devices and internet connections - and the other is details about a call in progress. To get the general information, make sure the SightSpeed main window is "active" (focus), then press Ctrl-D. A new window will open with the general technical information. Some of that information you will probably be able to understand pretty easily - for example your CPU type and speed, amount of memory installed and available, and operating system version. It will also tell you about whatever speaker, microphone and cameras it finds, with a lot of technical information about various capabilities of each. If you are trying to use a "non-typical" webcam, such as one connected by FireWire or a video capture card, you can see here if SightSpeed detects the camera at all, and if so what capabilities it thinks the camera has.

To get the technical info for a call, once you have the call connected make sure that you have the "full window view" (the one with the incoming video and your contact list, not the "video only view"), and then press Ctrl-S. A new window will open, and you will see the current, peak and average data rate, the video resolution and frame rate, CPU load and connection latency. If you watch this technical data for a while during a call you will see that SightSpeed does quite a good job of getting the video frame rate up to 30 FPS quickly at the beginning of a call, and then varies it as necessary to compensate for environmental changes, but always returns to 30 or so relatively quickly. You will also be able to see if either your own video or the incoming video is being limited to something less than 320x240 resolution, which can happen because of camera, CPU or bandwidth limitations. When I was testing with my brother on the 128k internet connection, for example, his video was only 128x96 resolution. That's still acceptable in the standard video window, but don't try to stretch that window too far - and stay away from the "Full Screen Video" button! If you have an older/slower computer, keep an eye on the CPU load shown in this window. If it is consistently above 90%, your computer really isn't up to the task and your call quality is likely to degrade. This is often caused by overly demanding cameras; the latest Logitech cameras and drivers call for a minimum 1.4 GHz CPU with XP and 2.4 GHz with Vista and that is taking a big bite, and might not be leaving much processing power for the video call itself! If you find yourself in this situation, take another look at my previous blog entry about not buying the greatest, fanciest (most expensive, most demanding) webcam on the market just for video chatting. My friend Grant and I were testing cameras yesterday evening, and found that the video quality from a very simple and inexpensive Philips SPC505 camera was not much below that of the SPC900, and the load it puts on my system is considerably less!

Skype has a single large "technical call info" window. To get it, you must first activate the option, by going to Skype / Tools / Options / Advanced / Connection, and tick the "Display technical call info during calls" option, then "Save". Then, when you are in a call, put the mouse cursor in the Skype main window and after a few seconds a new window will come up with the Skype call technical info. (Like most everything else in Skype, this "doesn't always work" - sometimes it just doesn't show up.) There's a LOT of information there - it kind of reminds me of their "Options" windows, it looks like everything they ever needed for any problem is still in there, some things several times! Some of the most interesting parts are "Relays", which tells you if you have a direct P2P connection (when it is zero), or if your connection is going through some other computers along the way. Having any relays is not good for performance and quality, and having four or more is very bad. Related to that is "SessionOut" and "SessionIn", if they say "RELAY_" something, then you really are not getting a good connection, perhaps because of firewall or NAT router problems, video call quality is likely to be very low, and file transfer is likely to be better by post than over that link. If you are making a video call, the "Video Send" and "Video Recv" lines will tell you about the current video quality and give you some hints about why it might be limited. Obviously, FPS at the beginning of the line is the frame rate, and 320x240 (or whatever) near the end is the resolution. Within the parenthesis you can see what Skype estimates the maximum frame rate at the current resolution for various components is: "cam" is the camera itself, "bw" is the connection bandwidth, and "cpu" is the processing power of your computer. If the effective frame rate is less than 30 FPS, you might be able to tell from these where the bottleneck is, and thus what you need to improve. Again, if you watch this technical info during a call, you'll see that Skype drops the frame rate about as quickly as SightSpeed when there is some external disturbance, but it recovers much more slowly. Finally, at the bottom of the technical info window, if there is something that is being overtaxed or running low, you'll see an error indication, such as "CPU_LOW" or "BW_CRITICAL".

I haven't been able to find any similar "debug info" source for ooVoo. I suggested on their forums that it would be a nice feature, and they seemed receptive to that suggestion, so perhaps it will show up in a future release.

jw 14/12/2007