Webcams 3: USB 2.0 Friend or Foe?
Have you ever noticed that basically all webcams are connected to the host computer using the USB 2.0 bus? The ubiquitous USB 2.0 bus is cheap and convenient for such purposes. Providing 480 Mbps it’s no slouch, but it’s not exactly state-of-the-art either. This has implications when webcams are reaching for HD resolutions at decent frame rates.
Until quite recently webcams always provided an uncompressed image stream to the host computer. USB 2.0 is a serial connection standard supporting up to 480 Mbps. That’s about one third of the data rate of the production HD-SDI standard, SMPTE-292M, which is 1.485 Gbps.
Let’s do a little math corresponding to a 720p video stream as related to uncompressed HDTV.
8 bit/pixel @ 1280 x 720 @ 59.94fps = 105 MB per/sec, or 370 GB per/hr.
105 MB/s = 840 mbps
…but a lot of video conferencing gear actually uses 30 frames/second instead of 59.94 or 60 frames/second…so half that value…
720p30 = 420 mbps!
There you have it! The mathematics supports the assertion that 720p30 uncompressed “HD” video stream can be passed across the USB 2.0 serial bus. This explains how Skype, Google, ooVoo, VSee and others have been able to offer HD video using common USB 2.0 connected webcams. Understanding the limit of the USB 2.0 connection also informs us why 1080-capable webcams have not become similarly commonplace.
There is a little bit of confusion about webcams capable of 1080i or even 1080p. For example, a year ago the Linux Tech Show posted behind the scenes video walk-through of how they produce their webcast, Category5 Technology TV. It’s a interesting video and I applaud how much thought they’ve obviously put into the tools that they use. They turn out a first rate product.
However, in the video they cite their use of “…Microsoft Lifecam Studio 1080p webcams.” Well, that’s a bit misguided. The Microsoft LifeCam Studio webcam does have a sensor capable of 1080p resolution, but it’s still a USB 2.0 connected webcam. It cannot pass a 1080 video stream at normal frame rates to the host computer. Microsoft’s own specs state “…up to 30 frames/second at 720p.”
Speaking of Microsoft’s own statements, looking at the Amazon listing for the device I see it described as the Microsoft LifeCam Studio 1080p HD Webcam. I find that to be somewhat deceptive. It does have a 1920×1080 image sensor, but it’s limited by the USB 2.0 host connection. Thus it’s quoted as capable of “…720p HD Video Chat.”
Some might argue that the 1080p sensor results in better quality 720p video. I’m not so sure about that in this case. However, the Lifecam Studio is still a fine webcam. It’s just not delivering 1080p video as the folks on Cat5 TV have been lead to believe.
I must admit that Cat5 TV has the best thought-out webcams-into-Wirecast setup that I’ve ever seen. The use of multiple USB 3.0 interface cards, allocating one to each camera, is a good idea. They could get away with USB 2.0 cards, because that’s all the Microsoft camera can handle.
For the moment lets set aside the Microsoft webcam. There are a couple of webcams that truly are capable of 1920x1080p video. The one that I have on hand is the Logitech BCC950 ConferenceCam , although the Logitech HD Pro Webcam C920 and Webcam C930e are similarly capable.
How do they do it you ask? The answer is simple enough. Those webcams have an on-board H.264 encoder chip.
Given some 2012 extensions to the USB UVC command set a suitably smart host application on the connected computer can initialize the camera telling it to send the video stream already compressed instead of a sequence of uncompressed frames. By moving the compression into a dedicated chip in the camera the bandwidth required across the USB bus is dramatically reduced.
However, this may not be a panacea. For simple applications like Skype, there’s little or no processing of the video stream once it’s captured by the camera. Thus there’s no particular problem offloading the compression to the camera. In fact, it makes for less workload on the host CPU. This very fact once allowed me to have a real 720p HD video call using a Freetalk Everyman webcam connected to a modest HP Mini 5102 netbook.
If the host application needs to process the video stream before it’s passed online then the H.264 stream must be decoded, and again encoded for transmission. There’s some potential quality loss in such a process, as well as additional CPU overhead. For a Wirecast application it’s not clear if the 1080p capable webcams would actually be a better choice.
The Webcam C930e is a special case in that it’s onboard encoder is capable of H.264 SVC. “SVC” stands for “Scalable Video Coding” and is a method of sending multiple video streams in one. That’s not really a very good description of it. It encodes the video in such a manner that a relatively simple device can decode just the portion that it requires to achieve optimal display given it’s hardware. It’s an approach to creating a single video stream that might be optimally viewed on a large HDTV, tablet or mobile phone.
H.264 SVC is most often associated with Vidyo. Google has recently contracted Vidyo to add SVC extensions to their VP series codecs. This will likely show up in VP9 which aims to compete with H.265/HEVC.
In the next installment of this series; Hunting the very rare USB 3 webcam