EDID Override - Injecting a Dolby VSVDB Block

thx for the info and have a nice vacation!

nice vacation!

1 Like

Happy Holidays

1 Like

@cpm, I was able to complete the HDR InfoFrame Metadata calculator in the spreadsheet. I added a new tab “HDR InfoFrame” that follows the same approach as the original model with the appropriate mods for the HDR InfoFrame metadata calculator. I also cleaned up the previous two tabs “Original” and “Player Led (HDR)” for updating the graphs and a few cells that were inactive. I also expanded the choices for Color Space to include a CUSTOM option that you can change the values to your liking in the matrix. For the HDR InfoFrame Calculator I also added other White Points besides D65 including a CUSTOM option as for the Color Space.

I am sure there was a reason that for the VSVDB block the spreadsheet had pre-defined nits values (you could not just put a value you wanted). For the HDR InfoFrame Metadata Calculation I used a more free form way where you just put any value you want as long as it is part of the CTA-861.3-A standard - which means you can go higher than 10000 nits and lower than 96 nits (even though current technology is limited to that). I could add limits in the future but thought that this will allow folks to test extreme options as some have done in some forums.

Enjoy your holidays!
dolby_vsvdb_calc_MOD.xlsm (57.1 KB)

1 Like

The nits are a representation of PQ values - can see the latest build it lists the PQ values in the UI, there is only “space” in the VSVDB to allow 32 permutations of the min and max PQ values hence only those available for selection - not possible to have other values.

@cpm, ok got it. I wonder how other devices that allows more values to be put in on the VSVDB such as HDFury deals with this limitation?

I forgot to ask why for “Player Led (HDR)” spreadsheet tab you do not allow “Global Dimming” and “Blacklight Control” since I think it should still work? Is that a limitation for Player Led HDR?

Maybe the HDFury UI allows but it gets converted to closest value in the VSVDB - is it actually changing with all the values?

Test Build:

Update tar


@DMDreview

Added “work-around” code for HDR10, to pull out the Master Display Colour Volume and Content Light Levels in the HEVC ES for the problematic ATEME Titan created files.

Have tried with a variety of mkv looks working so far (i.e. it picks up the values and has not broken anything else!).

Film: Arrival - has some interesting values.

You can ssh into the Ugoos and run the following to setup debug and then track the values when playing:

echo 1 > /sys/module/amdolby_vision/parameters/debug_dolby
journalctl -f | grep "DOLBY"

@OCEFDA

For the Player Led (HDR) I have added a 48 character parameter to override the values has per the previous posts, you can ssh into the Ugoos and use the following to change: for example all Hex 0 (the default):

echo -n 000000000000000000000000000000000000000000000000 > /sys/module/amdolby_vision/parameters/dolby_vision_hdr_payload

Below is a 2nd example I used to check values on the HDMI output (code side), where I changed all to Hex D:

echo -n DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD > /sys/module/amdolby_vision/parameters/dolby_vision_hdr_payload

Note: when setting make sure to use -n on the echo command.

You also need to set an inject parameter for the payload value to be in effect:

echo 1 > /sys/module/amdolby_vision/parameters/dolby_vision_hdr_inject

To take it out of effect you need to set:

echo 0 > /sys/module/amdolby_vision/parameters/dolby_vision_hdr_inject

With the above example of all D, and setting the inject to 1, I see it changing the values on the output - I think you can confirm the desired result on your HD Fury:

--------parsing DRM/HDR--------

hdr_transfer_feature: 0x10
hdmi_current_hdr_mode: 0x1
hdmi_last_hdr_mode: 0x1
DRM.enable: enable
[0x10001168]: 0x1
version: 1
[0x10001169]: 0x1a
size: 26
[0x1000116a]: 0x2
eotf: ST 2084
[0x1000116b]: 0x0
metadata_id: static metadata
primaries:
56797, 56797,
56797, 56797,
56797, 56797,
white_point: 56797, 56797,
luminance: 56797, 56797,
max_content: 56797
max_frame_average: 56797

56797 being the integer result of the Ds

Let me know how it goes, later on can look to integrate with the UI.

7 Likes

I will check HDFury yo see how it behaves. I know that it does not change for every single nit value but I thought that it had more “steps”. It could be that it is just different steps at different values.

In the mean time, I update the spreadsheet to have boundary limits on the HDR InfoFrame values and also resolved an excel rounding effect on the formula. I also found the boundaries limits of the Color Space values on the “Original” tab and documented in all tabs so if anyone is inputting CUSTOM values they knows the max and min limits (I included those for the White Point also).

I also created a “legend” for all fields and protected the ones that are not supposed to be changed. If someone wants to change the protect field they can just unprotect the sheet and change whatever they want. This will limit any accidental changes.

dolby_vsvdb_calc_MOD_2.xlsm (59.7 KB)

This is great! Will test and let you know.

@cpm, ok, checked HDFury and there are the same number of “slots” 32 as the spreadsheet but the nits are somewhat different. I am sure not noticeable to the eye. In any case, the big difference that was throwing me off was that the spreadsheet was missing 2 rows after row 15 for the “dec” values of 5 and 6. Once I put those values on the spreadsheet then things looks much more aligned.

Here is the updated spreadsheet:

dolby_vsvdb_calc_MOD_3.xlsm (60.2 KB)

Could you add back to the user interface a way to put the VSVDB Block string for all modes (LLDV, HDR, etc…)? It provides more flexibility to put a custom string.


Ok, I ran the Test build and although HDFury can see the changes for the string you provided:

echo -n DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD > /sys/module/amdolby_vision/parameters/dolby_vision_hdr_payload

Once I put a valid string it does not work. The values changes but are not correct. I think the mapping could be off. Just to make sure, here is the mapping of the HDR InfoFrame Metadata bytes being generated to the string:

Generated HDR InfoFrame Metadata:

3421AA9B9619FC08488A0839133D4240A00F0100E8039001

Byte format is Little-Endian. The primaries order on the string being Green, Blue, Red. Below is the CTA-861.3-A table format:

Thats just a calculated value for the UI - for reference use by the users who may understand nits over understanding PQ.

A Dolby VSVDB V2 (from my understanding) the 32 steps are actually PQ values iirc in 20 increments for min and 65 increments for max. - I put all this in the CE UI (along side pre-canned equivalent cd/m^2 (nits) values - just for reference).

I had noticed when adding to the UI the spreadsheet missed 5 and 6, but doing lots of things and focusing on the UI and had dropped the spreadsheet from the post so had not remembered to mention it.

The UI has and continues to let you enter any Dolby VSVDB V2 payload you want, once entered just don’t touch the min max or colour as will re-calc for those instead if you do and override, you can also leave inject off on the UI and set the inject and payload via ssh like with the new hdr params (dolby_vision_vsvdb_inject and payload).

The UI VSVDB payload inject has and continues to work for any DV type: Display Led DV-Std, Player Led DV-LL, Player Led HDR.

I have not looked in depth all the element on the Ugoos as takes a lot of time, so maybe it is reversing somewhere.

In any case if just a byte order issue, then you can try and re-arrange the hex values in the payload to suit for now - I will not be back to look at this for several weeks.

Each hex value represents 4 bits, so each two values are a byte.

Is it that if you put in say ABCD in the UI payload then then you see CDAB in the fury? if co can rearrange to CDAB in the payload and would then be ABCD in the fury.

If the primaries order is off then can just shuffle the corresponding block of 4 hex values around for each.

Ok, thank you. Enjoy your time off.

Great job. everything’s fine work with ateme now.

1 Like

Small problem with this update:

If I press back button whilst a Movie is playing this triggers the overlay which is Green and Pink - this was fixed a few versions ago, has something changed?
Thank you.

If you are not using “On Demand” try changing from “On” to “On Demand” to see if that fixes this issue?

@cpm, I did more testing with different permutations and found out that all variables are correctly aligned. The issue is that the CE code is, at that point in the program, using big-endian format and the HDR InfoFrame Metadata uses little-endian. Later on the CE program chain the format is changed to little-endian to send to the display as per the CTA-861.3-A standard. Everything worked correctly once I changed the string format to big-endian and loaded it.

I will be glad to change the spreadsheet to generate a big-endian format string but if it is not too much work it would be better to have the User Interface string format being little-endian since that is the CTA-861.3-A standard format for the HDR InfoFrame Metadata. Thus, anyone can use any other spreadsheets or tools that generate a HDR InfoFrame Metadata string (such as HDFury) besides this specific spreadsheet to generate the string to load.

Be glad to discuss further when you are back from your time off. Enjoy!

For those who want to test cpm’s latest tar version (T) with the HDR InfoFrame Metadata functionality, I have attached an updated spreadsheet with an additional tab “CE HDR InfoFrame Metadata”. This tab is only to be used with this version of cpm’s tar. This tab is coded in Big-Endian and is not the standard HDR InfoFrame Metadata and should only be used for this purpose since the coding is different then the standard little-endian coding.

Please follow cpm’s instruction that he previously outlined on this thread to get this to work.

This functionality is not useful for all TVs and Projectors but will work on a number of TVs and in some Projectors.

dolby_vsvdb_calc_MOD_4.xlsm (72.1 KB)

Hi OCEFDA
“This functionality is not useful for all TVs and Projectors but will work on a number of TVs and in some Projectors.”

What do you mean ?

Sorry but it may be a translation problem, but this sentence doesn’t happen… but it’s like writing “it’s not colored white, but it’s white”

Which version of Excel did you use? Even if I have enabled all macros if I change a parameter I get “###” in the box

Thanks

Hi okvcos,

Sorry but the English language is, sometimes, difficult to translate correctly. Let me try to explain:

When I say “all TVs and Projectors” in this context “all” means 100% (“all” in the English language without qualifications means 100%). So what I am saying is that this will not work with 100% of TVs and with 100% of Projectors.

Then I say it will work on “a number of TVs” and “some Projectors” - “a number of” means in English an undefined amount that is less than 100% and more than 0%. In this sentence in conjunction with the term “some” it means a larger amount. So “a number of” is a larger amount than “some”. So let’s say “a number of” means ~50% - although that is not a correct percentage but just an example of what a person may think of “a number of” in this context. “some” means an undefined amount that is smaller than 100% and larger than 0% - but - In this sentence context it means a smaller amount than “a number of” - so let’s say ~20% - although that is not a correct percentage but just an example of what a person may think of the term “some” in this context.

So in a very accurate translation it would be:

This functionality is not useful for 100% of TVs and 100% of Projectors but it will work with ~50% of the TVs and with ~20% of Projectors. (again the ~50% and ~20% are just examples to explain the terms magnitude/size differences - in other words - this will work on more TVs than it will work on Projectors).

I hope the above explanation helps and does not complicate the translation even further.

I am using the latest version of Excel that comes with Microsoft 365. The “###” is probably due to difference to screen resolution or the fonts being used. You will need to go to the “Review” top menu option and then “Unprotect Sheet” to be able to resize the columns/rows so the text/numbers could fit in the cells.

As you mentioned, you need to make sure to “Enable Content” so the Macros can run.

Let me know if this works or you need any other info.

1 Like