We will support HEVC playback via Media Foundation transform (MFT).
HEVC playback will be supported via the Media Foundation Transform (MFT)
and WMF decoder module will check if there is any avaliable MFT which
can be used for HEVC then reports the support information.
HEVC playback can only be support on
(1) users have purchased paid HEVC extension on their computer (SW decoding)
(2) HEVC hardware decoding is available on users' computer
For now, I'd like to only enable HEVC for the media engine playback, but
keep the HEVC default off on the MFT. Because the media engine is an
experimental feature, which is off by default, it's fine to enable HEVC
for that.
HEVC playback needs hardware decoding, and it currently only support on
Windows. HEVC playback check would be run when the task is in the
mda-gpu, which has the ability for hardware decoding. On other
platforms, HEVC should not be supported.
In about 5 years, the last patents for the baseline H.264 (AVC) video codec will expire. This means Firefox will finally be able to support decoding for H.264 (the codec most commonly used with the MP4 container) without Cisco needing to cover the licensing fees for them. DaVinci Resolve will also be able to support decoding/encoding on GNU/Linux. Basically, anyone will be able to implement a H.264 decoder/encoder without needing to pay royalties, which means free software programs like Firefox which don't charge their users will be able to implement it. The codec will no longer be patent-encumbered. See Wikipedia's debate on whether to support H.264 in 2014 for lots of opinions on this: https://commons.wikimedia.org/wiki/Commons:Requests_for_comment/MP4_Video
However, H.265 (also called HEVC) is the "next-generation" video codec after H.264. The patent pool situation is so confusing and expensive compared to H.264 that Mozilla, Google, Apple, Microsoft, Netflix, and dozens of other companies using video compression technology formed the Alliance for Open Media to develop a royalty-free codec they could use instead of HEVC. As a result, HEVC has seen very little adoption, particularly on the web. Most companies continue to use H.264. Windows 10 asks you to pay $0.99 for HEVC decoding support in the default video player. In fact, Google even announced they were dropping support for H.264 in 2011 because of their "focus on open web principles": https://blog.chromium.org/2011/01/html-video-codec-support-in-chrome.html
They never went through with it, of course.
AV1 is finally at a point where there are production-ready encoders and decoders. The iPhone 15 Pro is shipping with AV1 hardware decoding support, so even Apple is on board (though only for the most expensive phone so far). So, we'll see hardware decoding support in more phones in a few years, and hopefully AV1 will see a lot of adoption.
Adding support for HEVC in browsers feels like a step back because it legitimizes the codec and works against AV1 adoption. Many of these companies have resisted implementing HEVC support (aside from Apple) because it positions AV1 as the only realistic option to shift to from H.264. With HEVC in the picture now, it might be a realistic option in the future. Well, there's VP9 too, but there are some patent disputes over that codec that might make companies sheepish about adopting it. Not that AV1 is free from those disputes either, but they are far more confident about it and Unified Patents is doing great work invalidating Sisvel's AV1 patent claims (and even some HEVC patents here and there).
My opinion is that the ship has already sailed. Chrome caving in and adding HEVC support last year, albeit only with hardware decoders, was all it took with their 90%+ market share. Firefox's 3% market share isn't going to make a dent, and not doing it risks keeping users who need HEVC support on Chrome. I also don't think hardware decoding support is a big deal right now due to all the older devices without HEVC hardware decoders, but it opens the door to ask for more support down the line. I very much doubt Google is going to do that, though.
Really great explanation. Thank you.
This is a way better explanation than I could have possibly done. Thank you.