[FFmpeg-trac] #9167(undetermined:closed): Color changed when an image converting to video
FFmpeg
trac at avcodec.org
Tue Mar 30 23:55:00 EEST 2021
#9167: Color changed when an image converting to video
-------------------------------------+-------------------------------------
Reporter: kvsico | Owner:
Type: defect | Status: closed
Priority: normal | Component:
| undetermined
Version: unspecified | Resolution: invalid
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Comment (by pdr0):
Replying to [comment:9 Balling]:
>
> The only one player that supports those very non-standard for video sRGB
is mpv.
>
Right, so why make a non standard video that only plays correctly in a
small% of players ? The numbers are slightly off anyways
> I do not know what version of mpv you use, but here on Windows (Windows
has much better pow function, just for example, LOL) mpv does give 238,
77, 44. Just saying, I will attach a sample.
>
I'm using windows mpv-x86_64-20210316-git-5824d9f , and the color varies
in each channel if you move a color picker. Either way, it's always going
to be off +/-3 when you check colors for 8bit YUV. It's mathematically not
possible to have exact perfect colors for 8bit YUV. You always expect +/-3
errors in each channel
It's just that more players assume "709" for "HD" resolutions, so you're
going to have similar colors +/-3 more often in more players (instead of
way off like +/-30). Some players do not even read flags at all. So it's
smarter to do the actual conversion with 709 matrix and flag it 709.
>
> No. We in Chrome use sRGB EOTF for BT.709 OETF.
Is that hardcoded, or can video metadata VUI flags influence that ?
> >lossy differences
>
> There are no lossy differences on '''one''' color. At least in x264.
4:2:0 also preserves all colors, on one color that is.
>
Yes - that's what I'm saying; for the purposes of this math/conversion
discussion , we're not using like crf 40 or something on a typical content
(ie not single color), where you'd
contaminate the observations with lossy enocoding errors. You're not using
subsampling, where the kernal used for resampling the U,V planes can and
WILL generate YUV values that produce negative RGB values (out of gamut)
> >All out of gamut values have already been eliminated by definition
>
> I would not be so sure about that, use --gamut-warning in mpv. You will
be surprised. On default setting x264 does produce out-of-gamut (unless
there is another bug in --gamut-warning). Oopsie. Use this bmp sample for
example: https://video.stackexchange.com/questions/19944/ffmpeg-bmp-to-
yuv-x264-color-shift It gives superblack.
I only see a PNG there, no BMP. Do you have the BMP, or should I convert
PNG to BMP? Or just use those depicted RGB values?
Note when you use -pix_fmt yuv420p such as in that link, you're using
bicubic resampling for the chroma planes by default, so you would expect
out of gamut values. Negative lobe and "sharper" kernals will generate
more out of gamut values.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9167#comment:10>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list