HEVC / H.265 support in Jami

We are currently deploying HEVC / H.265 support in Jami on all supported platforms!

What is HEVC / H.265?

HEVC (High Efficiency Video Coding) or H.265 is a new generation video codec that succeeds H.264. Codecs (Coder-Decoder) are used to compress digital data such as images, sound or video to reduce the amount of data for storage or broadcast while preserving the highest possible quality. You've probably heard at least one of these names: mpeg, mp3 or jpeg, codecs are hidden behind these names.

Codecs have become so essential that we use them every day and sometimes even without being aware of it.

Video represents the most important part in communication networks and on storage servers in the world, this is why having increasingly efficient video codecs is crucial to reduce our energy consumption and allow more and more people to access online video.
If you want to know more about the principle of encoding/decoding feel free to read this post: https://jami.net/video-encoding-in-jami/

Why HEVC?

Each generation of codec offer improvement and additional efficiency. As the latest standard change (MPEG-2 to H.264), HEVC offers a compression ratio 25% to 50% better compared to H.264.

In addition HEVC is today supported by a large number of hardware and platforms.

What about VP9 and AV1?

VP9 is another new generation codec, which succeeds VP8. AV1 is the successor to VP9. These codecs also offer good compression rates, and have the advantage of being under an open patent policy allowing their use without payment of royalties.

We are working on the integration of VP9 in Jami, however few platforms currently have an accelerated VP9 encoder capable of encoding in real time with satisfactory quality, in addition compatibility with RTP audio/video, which is the transport protocol used in Jami, is not yet complete.

We also plan to test AV1 support as soon as we have the hardware to support it.

Integration into Jami

Thanks to HEVC, users will now be able to communicate with higher video quality while limiting their bandwidth usage.

For a real-time communication application like Jami, offering the best experience for its users requires the highest visual quality but also low latency.

Jami now supports HEVC only via hardware encoding, if supported by the device, because most of CPUs on the market are not powerful enough to perform HEVC encoding/decoding in real time with an acceptable resolution.

Jami chooses for you the hardware acceleration API most suited to the support of HEVC depending on the platform you use and the configuration present in your device:

GNU/Linux

  • NVENC/NVDEC (Nvidia)
  • VAAPI (Intel/AMD)

Windows

  • NVENC / NVDEC (Nvidia)
  • QSV (Intel)

Android

  • Mediacodec

macOS and iOS

  • Videotoolbox

See the post on hardware encoding for more information: https://jami.net/hardware-accelerated-encoding-and-decoding -in-jami /

As Jami negotiates the video codec with SIP/SDP, HEVC will only be used if the two communicating devices support it, and will continue to use H.264 or VP8 otherwise.

If your GPU allows it and your graphics drivers are up to date, you can take advantage of the benefits of HEVC.

By Pierre Lespagnol - Jami developer

Contact: pierre.lespagnol@savoirfairelinux.com