Vero 4K H265 movies (8-bit encoded only?) - blacks show as grey, colours washed out (reduced colourspace)

The only problem I see here is incorrect scaling in one of the YCbCr to RGB or RGB to YCbCr steps when the source content has full range flag. It passes super black (0-15) and super white (236-255) for source contents that have limited range flag, but acutally have super black and white (eg. a test pattern). The problem is when it detects a full range flag. if you can have that ignored, I think the output will be fine.

Hi Sam,

Enjoy your well-deserved holiday.

Iā€™m going into hospital on Friday, and will be in for a few days at least - colourspace issues can certainly wait!

Take care,
RR

Hi wesko5,

If the vero 4k can output the 8-bit full colourspace files in the same manner as the Pi, in terms of visuals (rather than how itā€™s achieved technically), thatā€™d be fine.

The compressed low and high-end colourspace isnā€™t noticeable (although even an overclocked original Pi 3, with decent cooling, struggles in terms of framerate on busy 1080p files with decent bitrates)

Regards,
RR

All the best for that! :+1:t2:

Thank you Wuschel_Wuschel, thatā€™s very much appreciated

All the best of luck indeed.

Thank you Sam, thatā€™s most kind.

Okay. I need to work out in the chain this issue occurs then.
I probably asked this before (apologies); does disabling HW acceleration resolve the issue? I know it may not play back smoothly but this would be useful to know.

Sam

Itā€™s the same with HW acceleration disabled. LE 9.0 nightly on S912 shows similar issue. Xiaomi Mi Box (Android Oreo) is the only Amlogic box that shows correct levels (with 16-235 clipping). If you disable HW acceleration on the Mi Box, the output is same as seen on other Amlogic devices.

Hi Sam, Wesk05,

Iā€™m finally back out of hospital. Nightmare.

Have you had any chance to further investigate the colourspace issue with 8-bit hevc files?

Many thanks in advance

1 Like

Hopefully you are back on the mend.
I am back from holiday on 13th July, which realistically means Iā€™ll be getting back to things on the 14th (Saturday).

Sam

Hope you had a terrific holiday Sam.

I did thanks.

Sam

Thatā€™s good to hear

Hi,

Unfortunately after more than two months Iā€™ve still not found a way to play back the majority of my 8-bit h265 encoded files.

Does anybody think this colourspace problem is fixable on the Vero 4K? I really hope so, as itā€™s a tremendous device, this issue aside.

Thanks

Hi,

I am working on (first reproducing, then fixing) as we speak.

Sam

1 Like

Whilst this is welcome news, working this late on a Sunday? I wouldnā€™t ask that of anybody Sam. Please enjoy the remainder of the weekend.

Hi,

Iā€™ve had a chance to look at this. AMLogic (SoC vendor) state that full range HDMI TX output shouldnā€™t need to be toggled manually as it should be set automatically to match the colour range of the video being played. Iā€™m still investigating why that isnā€™t happening, but in the interim I have produced a new kernel which should always send full range video output. I would appreciate it if you could test this and confirm if weā€™re moving in the right direction.

You can run these commands via SSH:

wget "https://collab.osmc.tv/s/G6cUokkBI4WajGd/download" -O test.deb
sudo dpkg -i test.deb
reboot

Cheers

Sam

1 Like

This worsens the problem. Now limited range video has black level 16 output as 30 and for full range 16 is output as 45 and 0 as 30. See post below.

1 Like

All I did:

diff --git a/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c b/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c
index 7bc1bc1..8a2864a 100755
--- a/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c
+++ b/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c
@@ -4589,7 +4589,7 @@ static void config_hdmi20_tx(enum hdmi_vic vic,
                hdev->HWOp.CntlConfig(hdev, CONF_AVI_BT2020, SET_AVI_BT2020);

        data32  = 0;
-       data32 |= (((0 == COLORRANGE_FUL) ? 1 : 0) << 2);
+       data32 |= 1 << 2;
        data32 |= (0 << 0);
        hdmitx_wr_reg(HDMITX_DWC_FC_AVICONF3,   data32);

This should always force full range I think.

1 Like