The world beyond OpenH264
The world beyond OpenH264
Posted Mar 26, 2025 14:19 UTC (Wed) by mcatanzaro (subscriber, #93033)In reply to: The world beyond OpenH264 by mat2
Parent article: Bhattcharya: Closing the chapter on OpenH264
This is wrong.
Posted Mar 26, 2025 14:46 UTC (Wed)
by farnz (subscriber, #17727)
[Link] (6 responses)
Posted Mar 26, 2025 15:15 UTC (Wed)
by mcatanzaro (subscriber, #93033)
[Link] (4 responses)
If I uninstall OpenH264, I can't play videos in my web browser anymore except on websites that do not require H.264, like YouTube. With it installed, I can play video on almost every website. I understand web videos generally use high profile? (I'm not actually familiar with this terminology, but it was a big deal when OpenH264 started to support web videos several years ago; originally, it only supported WebRTC and was otherwise not useful.)
Posted Mar 26, 2025 15:46 UTC (Wed)
by farnz (subscriber, #17727)
[Link] (1 responses)
As best I can tell from a cursory code inspection, the README is correct in as far as it goes; it only fully supports CBP, but doesn't bail out on the wrong profile marker in the bitstream (allowing you to at least attempt to decode potentially unsupported profiles), and supports a subset of Main and High Profiles. Note that just because you flagged your video as Main profile doesn't mean it's actually using all the features of Main Profile; it's permissible for a video flagged as High profile to use only CBP features, for example.
What I'm seeing is signs that someone's added support for B slices, CABAC encoding, and some (but not all) of the options around quantization matrixes present in High profile. As a result, it doesn't support Main or High profiles, but it does support the output of some encoders.
For background, the profiles tell you what bitstream components the decoder can handle (or the encoder can use); the levels tell you how many macroblocks/second, macroblocks/frame and bits/second your decoder needs to handle to keep up, and how big the decoded picture buffer is. If you're claiming support for a profile in a decoder, you're claiming that you can decode all of the bitstream elements that that profile permits, but (for example), I'm not spotting code to handle separate quantization parameters for Cb and Cr planes, which is required for High profile, but not used by common encoders.
Posted Mar 27, 2025 0:26 UTC (Thu)
by numgmt (guest, #167446)
[Link]
Posted Mar 27, 2025 0:21 UTC (Thu)
by numgmt (guest, #167446)
[Link] (1 responses)
So it has some support for High Profile, but it's incomplete. Enough for web.
Posted Mar 27, 2025 9:34 UTC (Thu)
by farnz (subscriber, #17727)
[Link]
And remember that the decoder's behaviour is fully specified by the standard; a High 10 Profile bitstream can assume that if a 9 bpc picture is in the set of reference pictures, it's in there at 9 bpc, and thus pictures that reference the 9 bpc picture will be doing their differences against the 9 bpc reference, not that reference truncated to 8 bpc. And since H.264 allows for reference pictures to themselves be reconstructed from previous reference pictures, the error can accumulate quite quickly, going from "off by the LSB" to "reduced to 4 bpc of data plus 4 bpc of noise" if you use an 8 bpc truncated reference.
Posted Mar 31, 2025 13:50 UTC (Mon)
by fabiop (guest, #24661)
[Link]
In what way is it wrong? The official Cisco OpenH264 GitHub says that it only supports "Constrained Baseline Profile" up to "Level 5.2", and not Baseline, Main, Extended or High profiles.
The world beyond OpenH264
The world beyond OpenH264
This gets complicated, and you'd need to actually test with a conformance suite to find out what it actually supports, or do a detailed dive into the code.
The world beyond OpenH264
The world beyond OpenH264
The world beyond OpenH264
Confusingly, High Profile and High 10 Profile are separate profiles. You can fully support High Profile, and have no support for High 10 Profile; the difference between High Profile and High 10 Profile is simply that High Profile only supports 8 bpc, while High 10 Profile supports 8, 9 and 10 bpc.
Profile names in H.264
The world beyond OpenH264
It never got any response in a couple years.