Troubleshooting HDR playback

I’m trying to figure out why some files are recognized by TV as 10 bit when most are not.

Here is the file played back correctly:
General
Unique ID : 179768350720378371925034052307682204296 (0x873E1FFE11E218779845D5E9E7621A88)
Complete name : The_World_in_HDR_in_4K_HDR10.mkv
Format : Matroska
Format version : Version 4 / Version 2
File size : 308 MiB
Duration : 2mn 34s
Overall bit rate mode : Variable
Overall bit rate : 16.7 Mbps
Movie name : The World in HDR in 4K - Demo-UHD3D.com
Encoded date : UTC 2017-04-24 13:38:07
Writing application : mkvmerge v11.0.0 (‘Alive’) 64bit
Writing library : libebml v1.3.4 + libmatroska v1.4.5
DURATION : 00:02:34.569000000
NUMBER_OF_FRAMES : 7450
NUMBER_OF_BYTES : 2116797
_STATISTICS_WRITING_APP : mkvmerge v11.0.0 (‘Alive’) 64bit
_STATISTICS_WRITING_DATE_UTC : 2017-04-24 13:38:07
_STATISTICS_TAGS : BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 2mn 34s
Bit rate                                 : 16.3 Mbps
Width                                    : 3 840 pixels
Height                                   : 2 160 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 60.000 fps
Bits/(Pixel*Frame)                       : 0.033
Stream size                              : 300 MiB (97%)
Default                                  : Yes
Forced                                   : No

Audio
ID                                       : 2
Format                                   : Vorbis
Format settings, Floor                   : 1
Codec ID                                 : A_VORBIS
Duration                                 : 2mn 34s
Bit rate mode                            : Variable
Bit rate                                 : 128 Kbps
Channel(s)                               : 2 channels
Sampling rate                            : 44.1 KHz
Compression mode                         : Lossy
Stream size                              : 2.36 MiB (1%)
Language                                 : English
Default                                  : Yes
Forced                                   : No
Writing application                      : Google

Here is the one that plays as SDR:
General
Unique ID : 236558978440196851327403649777541729215 (0xB1F79A1DED887FAAAFA15FA5E6A64BBF)
Complete name : ./jellyfish-140-mbps-4k-uhd-hevc-10bit.mkv
Format : Matroska
Format version : Version 4 / Version 2
File size : 503 MiB
Duration : 30s 293ms
Overall bit rate mode : Variable
Overall bit rate : 139 Mbps
Encoded date : UTC 2016-02-06 04:59:45
Writing application : mkvmerge v8.6.1 (‘Flying’) 64bit
Writing library : Lavf56.3.100
DURATION : 00:00:30.293000000
NUMBER_OF_FRAMES : 36352
NUMBER_OF_BYTES : 10303316
_STATISTICS_WRITING_APP : mkvmerge v8.6.1 (‘Flying’) 64bit
_STATISTICS_WRITING_DATE_UTC : 2016-02-06 04:59:45
_STATISTICS_TAGS : BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5.1
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 30s 297ms
Width                                    : 3 840 pixels
Height                                   : 2 160 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 29.970 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Writing library                          : x265 1.8+190-75d1c62d8f0c:[Windows][MSVC 1700][64 bit] 10bit
Encoding settings                        : wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=1 / tu-inter-depth=1 / me=1 / subme=2 / merange=57 / no-rect / no-amp / max-merge=2 / temporal-mvp / no-early-skip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu-lossless / no-constrained-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=250 / min-keyint=25 / scenecut=40 / rc-lookahead=20 / lookahead-slices=8 / bframes=4 / bframe-bias=0 / b-adapt=2 / ref=3 / limit-refs=3 / no-limit-modes / weightp / no-weightb / aq-mode=1 / qg-size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=3 / psy-rd=0.30 / rdoq-level=0 / psy-rdoq=0.00 / signhide / deblock / sao / no-sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=2 / pass / bitrate=146000 / qcomp=0.60 / qpmin=0 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ipratio=1.40 / pbratio=1.30
Default                                  : Yes
Forced                                   : No
Encoded date                             : UTC 2016-02-06 04:56:11
HANDLER_NAME                             : hevc@GPAC0.5.2-DEV-rev565-g71748d7-ab-suite
DURATION                                 : 00:00:30.030000000
NUMBER_OF_FRAMES                         : 900
NUMBER_OF_BYTES                          : 517356145
_STATISTICS_WRITING_APP                  : mkvmerge v8.6.1 ('Flying') 64bit
_STATISTICS_WRITING_DATE_UTC             : 2016-02-06 04:59:45
_STATISTICS_TAGS                         : BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

Audio
ID                                       : 2
Format                                   : TrueHD
Codec ID                                 : A_TRUEHD
Duration                                 : 30s 293ms
Bit rate mode                            : Variable
Maximum bit rate                         : 4 851 Kbps
Channel(s)                               : 6 channels
Channel positions                        : Front: L C R, Side: L R, LFE
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossless
Delay relative to video                  : -67ms
Default                                  : Yes
Forced                                   : No

As far as I can tell both have true 10 bit encoded. Is there a way to make files like second one to play in HDR?

EDID:
00ffffffffffff00593a181001010101041b0103808f50782aa41dab4f48a3270e474aa5ce00d1c0010101010101010101010101010104740030f2705a80b0588a0094245300001e023a801871382d40582c450094245300001e000000fc004d36352d45300a202020202020000000fd00174c0f8c26000a202020202020011e020363714e5f645d621022200504070603020132570600000000000000000000090707150750830100006f030c002000383ca05b5b0060010304f90146d000025caa4f5d44a2c1260d1450546409ba2800000000e200ffe30e6166e3060701e305e000000000000000000000000000000000000000000000000000000000008c

10-bit is colour depth

HDR is High Dynamic Range.

10-bit != HDR

The 10-bit Jellyfish clips are not HDR, so Vero 4K is not passing HDR metadata.

1 Like

That explains a lot, thanks!

HDR and 10bit color depths are something different.

10 Bit refers to the color depths. More shades of each color can be displayed. This is usually visible in a better contrast like a smoother color transition (you can barely spot it on 99% of content out there which is Rec.709). At this point it is a good idea to read up on chroma subsampling. (e.g, Y Cr Cb, 4:2:0, 4:2:2) to understand how this works.

But now HDR kicks in. HDR TVs usually use a wider color gamut of Rec2020 (not all do) these days.

Dynamic range is the ability to display the darkest and lightest parts of an image at the same time. This is rated in f-stops. And it is basically independent of color depths. It is a matter of what the panel you are using is actually capable of. Top notch displays can do like 6 stops (haven’t checked specs on the latest top shelf ones), whereas the average human can distinguish 10-14 stops.

So if the display can do more stops than the average 1080p display, they called it High Dynamic Range (HDR).

How good is it? Well the mileage will vary A TON between 4K displays. Some are barely better than a top shelf 1080p display. And many other factors play an important role in the display technology as well…

So basically by adding two more bits to each channel the total number of values per channel quadruples to 1024 and this allows a display to have a higher range in luminance (aka contrast ratio) and a wide color gamut.

So the 10bit are the means of achieving a better contrast ratio, with the catchy HDR (High Dynamic Range) name many people know from photography since decades. It’s marketing. The nice thing HDR is no standard at all, it just say “hey, we have a high dynamic ratio!” How high? “Well, that depends what you consider as high…”

Just for reference: 10bit/HDR is out these in professional displays used for color grading since the first DPX scans. And todays professional displays surpass consumer equipment as well.

And to round it off: and all that has nothing to do with AVC vs. HEVC. It more depends what you hardware can do. Not all hardware supports everything of the AVC specs and some parts are only available for HEVC decoding (e.g. 4:2:2).

HEVC (h265) vs. AVC (h264) is mainly about bandwidth saving for broadcasters (including OTT) as well as UHD/2K/4K has been specified. It is specified up to 8K with 300fps. But HEVC requires about 16 times more computation power, hence slower adoption in the broadcast world and SOCs.

A shitty AVC encode will stay a shitty AVC encode, regardless of your display. And re-encoding it in HEVC will not make it better either. But HEVC will be very popular for the OTT world as it saves a ton of bandwidth for 4K content.

You can’t deliver 4K content PROPERLY over the Internet which requires about 32mbits on the consumer side, when the average bandwidth is like 18mbps. Hence HEVC which can do the same at 16mbps. For non 4K content AVC vs. HEVC beside the better quality in compression will not really show much different in size given the relatively low bandwidth used to begin with in non 4K content overall and the low bandwidth broadcasters or OTTs often use.

So just enjoy your content. If you have a good display and PROPERLY CALIBRATED IT (that is the most important thing or it will always look crappy) it will look great (assuming good encodes to begin with). Don’t get hung up at all about the marketing stuff here. Shitty encodes delivered in low band width will always look shitty.

Best example here are the illegal Kodi addons. The quality you get there is abysmal. And even Netflix 2160p stuff is not where it could be as they have to take into account the average bandwidth available for the consumers and what their hardware supports. HEVC’s not there yet - that is a matter of broadcast hardware and how broadcasting including OTT works (not diving into this here). Hence Netflix delivers in AVC (though experimenting with VP9 before finally going to HEVC in the future when enough hardware supports it out of the box.

1 Like

Thanks, that was comprehensive! :slight_smile:
Though some points are at somewhat questionable. Where did you get that puny 18mbps bandwidth alike?


Netflix only requires 25mbps for its 4K tittles.

The main limitation we have at streaming 4K content online is it’s actual sub-par availability.
Only small portion of Netflix portfolio is 4K and even less is in HDR but when it is available 4K DolbyVision is no issue.

Anyway, my main mistake was an assumption that HDR is 10bit, now I know it is not :slight_smile:

18mbps is the average speed you got in the US in Q4/2016 (to be precise it’s 17.2mbps, mobile its 7.9mbps average). Only 42% households have speeds above 15mbps. Sure depends where you live.

The 32bmit for 4K in AVC is what the standard recommends in regards to the reference material they use. I didn’t make the numbers up. That is what the broadcast world is calculating with. Going lower is always possible of course. Basically means going lower you’ll lose quality of the broadcast reference material. Same deal with with all the standards. They are just recommendations as always not a law :slight_smile:

But yeah, I agree not much 4K stuff out there at the moment… Will change over time. And OTT might push it .Sadly right now OTT providers needs to pay hefty premiums for 4K right now. Same deal as it was initially with 1080p content.

1 Like