EDID Override - Injecting a Dolby VSVDB Block

Thank you!

Feature Complete - Update 5

  • Fix defect with DV content and [GUI peak luminance in HDR PQ mode] not being applied.

  • Change VS10 up and down mapping to: SDR, HDR10, Dolby Vision

    • After further investigation in linux-amlogic even though there are clear modes for SDR8 and SDR10, for the DV Engine both come down to just SDR and sent for processing the same way, so no point having two distinct options in the UI.

    • Have left in [for SDR8] and [for SDR10] → SDR mapping which may appear counter intuitive, but until proven that it does nothing useful in both cases (i.e. requires capture and compare analysis) leaving them in for now.

    • Note for HDR HLG that is also sent to the DV Engine as SDR [sending as HDR HLG does not work - at least on the g12a/b SoC] (probably why the colours are off - to my eyes), have noted this in the UI help text, but left in the mapping in incase the user does not have a HDR HLG Display - this mapping may still be useful in that situation.

  • Add testing ssh parameter for max luminance control. (More on that later) @philgaultier

  • Code refactoring

    • Various improvements (no user visible changes)

When testing use the below tar to update a fresh install of CE-21 ng.

[Version Removed] please use next version here.

Dolby VSVDB Calc (no update)


Even though [Feature Complete] was thinking maybe one more!, if there is suitable need and genuine interest.

Currently if playing content with both DV and HDR10+ enhancements it will pick DV.
Could add another option in that case to prefer the HDR10+ instead.

Note: [GUI peak luminance in HDR PQ mode] cannot distinguish HDR10+ so would have the caveat for that, as per post on last update, in this case it would take the luminance control as per DV (VS10 config).

Note: There is talk of having something like this upstream in Kodi - if that materialises later then no need to do it here, and should be able to then resolve the luminance control issues as well.


Thank you for this latest update - just wonderful!

I am not sure if I understood a few of your comments, but just in case I wanted to validate that your previous settings recommendations below are still the same?

Thank you again:

Mode: On [Prefer the reduced switching and not concerned on my display]
GUI Max Lum: 100 [not too dim but display friendly]
Type: Display Led (DV-Std)
Colorimetry: BT.2020nc [There is a slight effect on my LG E8 - and I prefer this]
For SDR8 → DV [Don’t watch much SDR and what I have is high quality, but can be a bit over the top but overall I default to this and switch to other if the result is not working well]
For SDR10 → DV [Similar to above]
For HDR10 → DV
For HDR10+ → DV [Recommend off if you have an HDR10+ display]
For HDRHLG → off [Not sure on the colours in other mode, prefer off most of the time]
For DV → off

I switch now and again depending on content.

Of the original CE settings on this page I set:

Disable noise reduction: On
Tone map SDR to HDR: Off [Should leave off if using DV VS10]
Tone map HDR to SDR: Off [Should leave off if using DV VS10]

As mentioned before - those are my settings but not recommendations per se, as they are subjective and your setup is unlikely to be exactly like mine, I would encourage you to try settings and see what you prefer. Having said that my usage/settings remain the same.

Just FYI, if I set Colorimetry: BT.2020nc on my TV LG C8, the skin tones will become slightly reddish, so I disabled it. Better to test it on your display first.

With the last update I have added a module parameter so you can test if changes are effective for SDR projectors etc.:


This takes an array of 9 values to allow changing of the max luminance values - here is the code change so you can understand more - replaces code commented at the start:

static unsigned int dolby_vision_target_max[3][3] = {
	{ 4000, 1000, 100 }, /* DOVI => DOVI/HDR/SDR  
	{ 1000, 1000, 100 }, /* HDR =>  DOVI/HDR/SDR 
	{ 600, 1000, 100 },  /* SDR =>  DOVI/HDR/SDR 

static unsigned int dolby_vision_target_lum_max[9] = { 
	4000, 1000, 100,  // DOVI => DOVI/HDR/SDR
	1000, 1000, 100,  // HDR  => DOVI/HDR/SDR
	600,  1000, 100   // SDR  => DOVI/HDR/SDR
module_param_array(dolby_vision_target_lum_max, int, NULL, 0664);
MODULE_PARM_DESC(dolby_vision_target_lum_max, "\n dolby_vision_target_lum_max\n");

static unsigned int (*dolby_vision_target_max)[3] = (unsigned int (*)[3])dolby_vision_target_lum_max;

e.g. at startup will be:

1 Like

Indeed - it just emphasises the need to check in the individual setup, @vlix sounds like you have a similar generation panel - my now very old original calibration and undoubted usage difference, as well as other factors very likely drive different outcomes - always try and see what is better in the real world usage @OCEFDA .

1 Like

Thanks a lot, I’ll test that once at home, if it works, a bunch of people will praise you on AVSforum :wink: :hand_with_index_finger_and_thumb_crossed:

I guess I just have to change the parameter and play a file (I should not reboot or restart kodi I guess ?)

From what I can tell it should work on the fly.

if you echo 1 > debug_dolby (same parameters dir) then dmesg will see logging with the values as they are going to the dv engine.

[ 6786.301288@0]h DOLBY: v 1: 3840x2160 0->0(T:50-50),g 1: 1920x1080 50->3000000,vpr

0->0 is the source and dest in this case DV src DV dst
50-50 is the min and max - I set everything to 50 just to test.

note first 50 min is 0.0005 nits can look to expose that as well if needed.

In the DV src and dst case could see no difference - the understanding is it used the min and max from the VSVDB instead.

1 Like

Thanks for the great work, I have been waiting for something like this for ages. I see many mentions of the Ugoos in this thread. Should this work in any Dolby vision capable amlogic-ng device like the Box R 4K Plus?

1 Like

If DV is working with that box on standard CE-21 ng Nightly, then no reason this would not work also - I think the only diff would be no p7 FEL.

If trying the recommendation is a new install on a separate sdcard.

Just be aware I only have a Ugoos so all my testing is on that, so no guarantees. :slight_smile:

1 Like

Hmm… VS10 didn’t trigger for me, files keep playing in HDR instead of DV…
Mode: On Demand
Type: Display Led (DV-Std)
Colorimetry: disable/remove
HDR10 => DV
HDR10+ => DV
Everything else => off

Was it a fresh install, if not maybe try switching between the settings, play and then switch back etc., not seeing that issue my side.

Edit: Looks like an On vs On Demand issue
Will look into it more, for now can use On or revert back to previous versions

Edit 2: Ok found it - it’s a defect - correcting will post another version later.

Me too but only via update folder. So how do we do a fresh install? Thanks

Feature Complete - Update 6

  • Fix defect with VS10 → DV not working in DV Type: On demand.

When testing use the below tar to update a fresh install of CE-21 ng.

Update tar

Dolby VSVDB Calc (no update)


Fresh install is getting the Nightly install and then using the tar to update that.
Issue though was a defect - should be fixed, please download [Feature Complete - Update 6]

1 Like

Fixed with a new version - lets see what else I broke :rofl:

1 Like

Everything looks good :+1:
Awesome work! Thanks again!!

1 Like

Hi still hdr on lg c6 any ideas why?

Thank you, I am testing on my projector (no native DV so I am using LLDV) to validate and experiment with the settings but wanted to see how you as the developer preferred the settings. Specifically:

Mode: ? Why do you prefer “On” vs “On Demand”?
SDR8 to X - Is there a difference if you choose SDR (assuming for SDR10)? I am not noticing any difference but DV sometimes over blows image.
HDRHLG to ? I rarely have HDRHLG material so was wondering what do you see when it is set to “DV” that you prefer it “off”

Thanks again.