Yuva420p export presets convert RGB to YUV using bt601

Under the “alpha” export category, the WebM VP8/9 with alpha channel presets use

mlt_image_format=rgb24a
pix_fmt=yuva420p

But the RGB > YUV conversion uses bt601

how to reproduce:
eg. import shotcut logo into a project, export using one of the above presets. Import the exported file and the colors will be shifted. (You can check with other programs, or apply 601>709 conversion to fix it)
https://shotcut.org/media/

  1. I suggest the default should use bt709

  2. Is there an additional switch on the “other” tab where user can control the RGB>YUV conversion ? eg. Through swscale (out_color_matrix=) or zscale (matrix=) ?

https://mltframework.org/plugins/ConsumerAvformat/
https://mltframework.org/plugins/ConsumerAvformat/#colorspace
adding -colorspace does not appear to affect actual conversion, just metatdata flags. (I tried colorspace=1, colorspace=bt709, colorspace=709)

What is the colorspace set to in your video mode?
image

BT.709

I double checked the .mlt and it said 709 too

The 709/601 mismatch is quite easy to see on HD colorbars

I may be looking in the wrong place, but the convert_image() function seems to call a helper that always uses BT.601 for RGB[A] conversion rather than select color space according to the video mode. The helper function is shown below:

filter_imageconvert.c

That filter is only used when MLT is built without libswscale, and yeah it is limited but does not apply to Shotcut.
I reproduced this and fixed it for the next version 20.09.

Impressive investigative work, @Austin

Glad you found a fix.

I always found these lines to be suspicious. But maybe they are unrelated:

This topic was automatically closed after 90 days. New replies are no longer allowed.