H.264 in WebRTC

Cisco just did a solid and released H.264 into open source for use in WebRTC. Cisco is absorbing the estimated $13 million in licensing fees from MPEG-LA. The reason Cisco did this was to avoid transcoding of H.264 streams from other video clients, a wise choice. The IETF is determining which video compression algorithm will be the baseline for webRTC this week.

Mozilla will incorporate webRTC, including H.264, into the Firefox browser and Chrome already has it. Google is sticking with VP8 and is a major developer and contributor to webRTC. The IETF vote is in Atlanta this week and we’ll update this post with who won out in the video codec selection. We hope both are supported, yet Cisco is right, the last thing one wants to be doing in a real time stream is transcoding H.264 to VP8. It does seem that stand alone proprietary video conferencing and streaming solutions are going the way of the dinosaur, although webRTC as the meteor which killed the beast is yet to be determined.

Real-time communications in the browser utilizing native codecs and javascript sounds too good to be true and that is becuase it is. Underneath the hood are the typical real time streaming issues such as NAT transversal, firewalls, latency, QoS and synchronization, to name just a few. WebRTC latency was reported to be 150ms with a mininimum of 100ms. While that mets ITU QoS, it is pretty much the crappy out of sync video conferencing most of us experience daily.

It appears at the IETF meeting there was no consensus on which video compression algorithm to make mandatory for webRTC.   It also appears both is not an option, so far and Nexus has hardware implementations of VP8 while hardware acceleration for H.264 is available in many chipsets.

On a technical note, I am downloading the source for webRTC, focus on Opus, (Xiph), since supposedly it is not ported, never mind optimized, on many embedded platforms.    I’ll write up what I find in another post.

HEVC Video

The ISO/IEC JTC 1/SC 29/WG 11, a.k.a. MPEG video – ITU video, a.k.a. JCT-VC,  has issued a committee draft of H.265, or HEVC.    HEVC stands for High Efficiency Video Coding and is the next generation video coding standard.     The algorithm’s main goal is to achieve the same video quality at half the bitrates of H.264.     More resolutions are also offered.     The final standardization approval date is scheduled for January 2013, with a standardization draft due in July 2012.

The Fraunhofer site is maintaining the source and some documentation.

We’re following HEVC as it develops.     Here is a pdf of the  HEVC requirements document, w11872.      The requirements document does specify video conferencing.      This implies a low algorithmic delay and overall  low latency HEVC profile, at minimum.     The fundamental trade off of the standard is increased computational complexity to achieve higher compression efficiency.     Below is the HEVC application list from the MPEG  requirements document.

• Home cinema
• Digital Cinema
• Surveillance
• Broadcast
• Realtime communications, video chat, video conferencing
• Mobile streaming, broadcast and communications
• Storage and playback of video
• Camcorders
• Video On Demand
• Internet streaming, download and play
• Remote video presentation and remote computer graphics display
• 3D video
• Telepresence
• Content production and distribution
• Medical imaging

3D Video

There have been recent queries on 3D video technologies.    Currently the MPEG standards body has created an amendment to the H.264 (AVC) video standard, approved June 2009, called Multiview Video Coding.

The amendment covers:

  • Stereoscopy
  • Multi-view
  • Free viewpoint

The MPEG H.264/AVC MVC amendment is backwards compatible to older technologies & MPEG-4/H.264 implementations that do not support 3D display capabilities.

Nokia Research is hosting the reference source code and corresponding standards drafts.

I am currently working with the above references, Fedora 13 OS platform. To date, the open source x264 project, part of VideoLan, emulating H.264 streams, does not support the MVC amendment.