Hey @Portisch I’ve been playing around with the latest amlogic-no on my new X96 X10. My TV is a Samsung S90C, which isn’t DoVi compatible. Noticed that if I try to play a DoVi P5 test file, it actually plays fine and the comparison between scenes with no metadata and dovi tuning applied clearly shows that there is dynamic tonemapping going on. The debug command below shows dv_mode = HDR10
watch -n1 'echo "--- src_format ---"; cat /sys/class/amdolby_vision/src_format; echo "--- dv_mode ---"; cat /sys/class/amdolby_vision/dv_mode | grep current; echo "--- hdr_status ---"; cat /sys/class/amhdmitx/amhdmitx0/hdmi_hdr_status; echo "--- config ---"; cat /sys/class/amhdmitx/amhdmitx0/config'
--- src_format ---
vd1(inst1): DV FORMAT_DOVI
vd2(inst0): DV FORMAT_INVALID
graphic: FORMAT_SDR
--- dv_mode ---
current dv_mode = HDR10
--- hdr_status ---
HDR10-GAMMA_ST2084
--- config ---
VIC: 93 3840x2160p24hz
Colour depth: 10-bit
Colourspace: YUV444
Colour range: default
EOTF: HDR10
YCC colour range: default
Colourimetry: BT.2020
This is awesome, but it only works if the file is P5. If there is any “fallback” hdr data, then that gets played instead, and dv_mode = off. I have figured out a way to enable it for all dovi files though:
- Patch display edid to include a vsvdb block that pretends my display is compatible with player led dovi only
- Before playing any dovi files, run:
echo 2 > /sys/module/aml_media/parameters/dolby_vision_policy
echo 3 > /sys/module/aml_media/parameters/dolby_vision_mode
echo 3 > /sys/class/amdolby_vision/dv_mode
Now, if I play a file that has fallback hdr, dv_mode = HDR10, instead of off, so I believe it is working through vs10.
I’m pretty sure it should be able to do this without the EDID hack because the code that enforces it for P5 appears to be in CoreELEC/xbmc AMLCodec.cpp:2114 (won’t let me post a link, sorry). Is there a reason that it is done like this? A toggle that allows kodi to treat non dv compatible displays the same as it does for profile 5 would be very useful. I am new to CoreELEC so apologies if I’m missing something obvious here.