5 ms·
For all of our sanity, please don't start producing 8-bit H.264 videos with full 0-255 range. If you have enough control over the decoder and renderer to make
by m0dest 7y ago
For all of our sanity, please don't start producing 8-bit H.264 videos with full 0-255 range.
If you have enough control over the decoder and renderer to make that hack work, you should just be producing 10-bit HEVC/AV1 video – which does not suffer from these 8-bit banding issues – with a modern color space (Rec 2020, PQ, etc.).
And if you don't have choice or control over the decoder and renderer, then it's a good sign that this would be a fragile hack.
- the-dude 7y agoLogitech C920 family cameras do exactly that. H264 full range.
- JohnCarmack 7y agoMy primary concern is for immersive VR media on our Go and Quest platforms, which use Snapdragon 821 and 835 SoC, respectively. The 821 doesn’t support 10 bit on anything, and the 835 only supports it on h265. Software decoding a 4k60 video on mobile isn’t an option, and you can see every bit transition with dark adapted eyes in a vr headset, so getting full 8 bit range is pretty valuable.
- thrwaycolor 7y agoYou forget to mention which colorspace you're using. It matters. From Rec. 2020 wikipedia article: Since a larger color space increases the difference between colors an increase of 1-bit per sample is needed for Rec. 2020 to equal or exceed the color precision of Rec. 709. The "correct" solution is to use a modern colorspace (rec 2020) with 10 bits encoding (or 12 bits, if you can). UHD standard mandates at least 10 bits. On the '821 you could gain 1 bit by degrading to an older color space - 709. Full 0-255 range should never be used - they are invalid according to the standard. None of the hardware codecs are validated for 0-255 - you're asking for trouble here. Expect ghosting and weird motion artifacts accumulating from one I-frame to the next I-frame.
- the-dude 7y agoAre you sure about that? Logitech sells H264-encoding cameras which do yuvj420p ( which is full range as I understand it ). YT and other platforms have no problem ingesting these videos. Also the RPi Broadcom chipset does not seem to care.
- sorenjan 7y agoSo to clarify, you don't agree that anyone should use -pix_fmt yuvj420p when encoding video to share with others? Let's say I have a video with full RGB range 0-255 video. Why would 10-bit be a better option than 8-bit?