Skype does a clever trick when bandwidth is scarce
On a Skype video conference this morning, I noticed the software did something very interesting. Instead of pixelating video when my crappy broadband internet connection slowed down briefly, it zoomed.
It was accomplished so smoothly I wouldn't even have noticed except that I was talking with a room full of people on the other end and suddenly I couldn't see the people on the sides any more.
Instead of reducing the full-frame video resolution when bandwidth grew scarce, as it usually does, instead this time Skype selected the middle portion of the frame and showed it clearly. It was very subtle. It was done completely smoothly. The effect was aesthetically pleasing, not disruptive at all, and an elegant solution.
Well done, Skype.
67 comments
[ 3.5 ms ] story [ 135 ms ] threadI think you misunderstood the question. Cropping and scaling are both software choices for reducing resolution, so the question is why crop specifically?
Mainly, I was impressed by how smoothly and seamlessly it was done.
Sounds like a smart idea.
However, i just skyped and noticed nothing of the sort. framedrops and compression artifacts galore. :-/
I'm sure. I was watching when it happened, twice. Shortly before it happened, I did see some pixelisation, so I know the bandwidth was flaky. It seems to have started doing this after the most recent software update.
I thought about sending a nice note of thanks to Skype's support address, but it was just so neatly done that I wanted to give them more public praise.
Secondly, zooming is not as effective as real compression. What I mean by this is: assume you have a high resolution image. One way to save bandwidth is to use a well-designed compression algorithm optimized for the human visual system. The second way is to just shrink the image, and then "stretch" it back to the original size, which -- in a sense -- is what Skype is doing here. Which is going to be more effective?
It really depends on how much data you need to shave off. Beyond a certain point, you'll get better visual results by reducing image size rather than increasing compression. As an example, an SD movie encoded with H.264 to a file size of 300MB would look a lot better than an HD movie encoded to the same file size, even when played back at the same on-screen dimensions.
Maybe it comes down to the per-macroblock overhead; maybe fewer blocks total in the lower resolution image allows more bits to be allocated to frequency coefficients instead of DC offsets.
It's hard to imagine why anyone would want a blocky highres lowbitrate stream if the lowres variants are always better, for a given timespan of video
Since someone reading this might know, does anyone have any recommendations for webcams for OS X? The Logitech C920 seems to be the most modern HD webcam out there, but the Internet is conflicted on whether Mac's in-built UVC drivers will properly take advantage of it in FaceTime or not or if it will just be seen as an SD camera. So if anyone has any personal experiences with good HD webcams on OS X I'd be very interested to hear...
Edit: Actually, a "weekend project" I never got around to was to use OpenCV to detect faces and automatically encode just those regions with a higher bitrate, and sacrifice the rest. So that the areas we actually care about are encoded better and we can get an objectively better image for the same average bitrate. I'm sure someone must have done this already, though I couldn't find anything when I looked.
I believe that the LifeCam looks for movement in the peripheral area. If there is no movement there, the LifeCam will truncate the sides of the image. I have sometimes been able to force the sides to appear by waving my arms off to the side.
When I first noticed this happening, I was surprised that many "people on the side" don't move or talk at all, thus triggering a truncation. But I started looking for this, and most "people on the side" barely move at all.
In my experience, Skype video quality tends to degrade by simply freezing the screen. I have also noticed this behavior when Skype was off entirely, when recording a video of myself. So I'm pretty sure it's the webcam itself auto-controlling the width, and not Skype.
Or those companies could band together and give the NSA the collective finger.
This makes people "speak" incredibly fast occasionally.
It's ironic that Twitter, Facebook, Skype, Yahoo, AOL, Google et al. use XMPP in one or the other proprietary form.
It's opensource, many awesome clients are available and yet people still choose possibly backdoored and definitely monitored and text-mined closed-source solutions. I don't understand why the usage of the open solutions is so low. Can someone explain?
And, for voice/video, getting them to work through NAT is a pain, while Skype JustWorks™. Plus, it is a really good solution: I can change my connection from WiFi to cable, and the video recovers within a few seconds.
That said, I'd love it if everyone ditched propietary solutions. But, unless you really care about privacy and freedom, it's a hard choice to make.
Get someone in there to completely strip the UI, increase the audio quality, and I'm there. Paid user.