Media Encoder CC17 renders HDR HEVC files to <7 bits. Uh oh. Here's proof.

Participant ,
Nov 16, 2016 Nov 16, 2016

Copy link to clipboard

Copied

Executive Summary: Adobe’s HEVC implementation renders footage to <7 bits when HDR is selected, even when set to deliver 10 bits.

Description:

I’ve been experimenting with UHD HEVC encoding options for a while now, and was very interested in the new HDR options.

Unfortunately, while the Rec2020 option now renders smoothly to SMPTE range, when the HDR switch is enabled, the same setting will render to less than 7 bits, producing a lot of banding artifacts.

Here’s some screen grabs:

Source comp in AE:

SourceSample.jpg

This was made from an Illustrator file, when I did a blend with the specific number of steps (Blend maxes out at 1000 steps, so I couldn't do 1024 for 10 bit). Just note that there is more and more banding the further down you go in the chart.

If I output enable Main10 (gives me 10 bits/channel instead of default 8), and enable Rec2020 and render it, I can get this:

SDR-OK.jpg

It is clipping the blacks, but OK, that's potentially resolvable with an Adjustment Layer. We'll deal with that another time. But my 8 bit gradations are still nice and smooth, so far so good.

Here's what happens when I take the exact same setting, and turn on the HDR switch:

HDR-flawed.jpg

Notice I now have banding where I didn't before - the top three bars that were smooth before are now in discrete steps.

If you look carefully at the 128 steps - 7 bit bar (the one under those words), you'll see some inconsistencies - it isn't a smooth blend. There are a lot of these inconsistencies, where the width from one step to the next varies every few bars. 6 bit, with 64 steps, seems to be OK, so I'd say I'm getting between 6 and 7 bits of detail out of this.

Well....[expletive]. This format is supposed to have 10 bits. And in fact, you can't access it UNTIL you turn on "Main10" which is what gives you 10 bits/channel.

This is just a bug. OK Adobe - this needs fixing STAT.

Want to prove it yourself? Here's a link to my Public Dropbox so you can download the After Effects file, media, and Adobe Media Encoder settings used to create this situation. I've done a ton of testing with the Media Encoder presets to try to work around this, and after 40 or 50 settings and innumerable attempts, I can't get it to work and I'm confident the problem is with Media Encoder.

https://dl.dropboxusercontent.com/u/46125841/HDR_ProblemDemo.zip

Proof:

Attached is a .zip archive, which contains an After Effects project, and two Adobe Media Encoder settings.

Open the After Effects Project, and the GradationTest will be open. Go to the Composition pulldown menu and select Add to Adobe Media Encoder Queue.

In Adobe Media Encoder, in the Preset Browser, select Import Settings (the fifth icon under the words Preset Browser).

Navigate to the folder I provided, in MediaEncoderPresets, and select the two .epr files starting with 11- and 12-.

These settings are otherwise identical, but 11 is HDR and 12 is SDR.

Apply these two settings to the queued GradationTest and render.

Open and compare, as you’ve seen in the above description.

Comments? Suggestions?

-mike

Views

2.6K

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Nov 16, 2016 Nov 16, 2016

Copy link to clipboard

Copied

While we're at it, turning on Rec2020 also is what is doing that weird crushed blacks thing too - so we can't output a clean/proper Rec2020 because blacks are crushing in a non-linear fashion, and can't output HDR because the bit depth drops from 10 to 6 1/2 or so. This is bad.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Nov 16, 2016 Nov 16, 2016

Copy link to clipboard

Copied

Looks like it is due to a difference in results between After Effects Add to Adobe Media Encoder Queue, vs making an interstitial file (EXR sequence) and adding that directly to Media Encoder. Drat, or harsher language.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Nov 17, 2016 Nov 17, 2016

Copy link to clipboard

Copied

OK - LOTS of further testing. I made a ramp in AE using he Gradient tool (so no Compensate for Scene Referred interference)

In After Effects, I tried different Working Color Spaces that might make sense:

Rec. ITU-R BT.2020-1 (with Linearize, Blend Colors w/1.0 Gamma, Compensate for Scene Referred - all those on, as well as all those off)

HDR UHDTV Wide Color Gamut Display (Rec. 2020) - E (with Linearize, Blend Colors w/1.0 Gamma, Compensate for Scene Referred - all those on, as well as all those off)

...as well as None selected (with all buttons off)

I then rendered the results using Add to Adobe Media Encoder Queue, brought those resulting HEVC files into Premiere and compared the results on scopes - comparing to an EXR sequence rendered straight out of After Effects.

Linearlzing the working space did make the black to white ramps look different (because linearized), but in general here were the results:

here's the source (screen grab from Premiere):

Source.png

4K UHD material - matched source

4K UHD material with Main10 (10 bit output) - matched source

4K UHD 10 bit Rec2020 - a SIGNIFICANT gamma shift (this from HEVC file placed into Premiere):

Rec2020.png

...and here's the Rec2020 HDR:

Rec2020HDR.png

a LOT of banding and a shift to green. Hmmph.

I then took that EXR sequence and placed it into Premiere, and rendered both using Export as well as Add to Media Encoder Queue - exact same results.

SO - After Effects can't make an HEVC file - it lacks that as a choice when exporting. So direct render is out.

After Effects via Adobe Media Encoder - BEST case scenario - using elements created in AE (useless then for photographic/video content), you still get a dramatic gamma shift when attempting to make Rec2020 content, and HDR content bands so much as to make the entire effort useless - you've got high dynamic range, but something like 100 or fewer steps between darkest and lightest tones - useless for the effort we're undertaking!

Rec2020 output - I'm going to go back and try all this with pixels (photographic content) instead of a ramp made with the Gradient tool in AE. But all this points to significant issues to be resolved in the render pipeline for Rec2020 and HDR content for HEVC.

I'd use H.264, but it doesn't allow for Rec2020 nor HDR options.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Nov 17, 2016 Nov 17, 2016

Copy link to clipboard

Copied

Just noticed the new versions available today for After Effects and Premiere Pro - just tested, results are still the same as above, the banding problem persists.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Nov 19, 2016 Nov 19, 2016

Copy link to clipboard

Copied

LATEST

OK, further thoughts:

-the gradient was built to operate in the 0-100 IRE range - the standard video range. In a 10 bit world, that means 1024 steps from black to pure white. OK.

BUT....when you activate HDR mode, you are using a >100 IRE world - lets start talking nits of brightness instead of IRE. But same thing (ish) for this conversation.

That 1024 steps now has to accommodate MORE than just 0-100 - how how does it go? I think what is going on is perhaps an excess of headroom - in the PQ (Perceptual Quantization) of the signal, how many bits/levels/gradations are going to the 0-100 range? It would appear ballpark of 100 (between 6 and  bits of data). OK - so if that's the case, and the gradations are applied equally (probably they aren't), 10 times more would be roughly 1000 steps, spread out over 1000 nits - is that what is happening? We get 1 step of our 10 bit scale per 1 nit of brightness?

Adobe, want to chime in on this one? I went and looked at some of Amazon Prime's UHD HDR content (The Man in the High Castle) and I don't see similar banding issues there, even at streaming bandwidth, so I think this should be surmountable. I presume we're operating in HDR10 here, since my TV doesn't support Dolby Vision so I'm betting that's the flavor of HDR Adobe is using.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines