[FFmpeg-trac] #11235(swscale:closed): P010 unscaled converter from yuv420p is broken
FFmpeg
trac at avcodec.org
Tue Dec 24 20:49:34 EET 2024
#11235: P010 unscaled converter from yuv420p is broken
------------------------------------+-----------------------------------
Reporter: Balling | Owner: Timo R.
Type: defect | Status: closed
Priority: important | Component: swscale
Version: git-master | Resolution: fixed
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 1 |
------------------------------------+-----------------------------------
Description changed by Balling:
Old description:
> Summary of the bug: that was obvious in
> e3fd1857fb9e230de089820f77367ec320188c9c when it was added by Timo since
> FATE changed (patch from Intel brings back FATE changes) and those
> changes are in gray, making gray no longer gray, YCbCr 420 to 444 and its
> chroma siting cannot affect gray colors, as it is encoded by Y component
> only.
>
> Patch is here from Intel, but since p010 supported by Nvidia hevc_nvenc
> if you force that, Nvidia is also affected. https://github.com/jellyfin
> /jellyfin-ffmpeg/pull/45
>
> How to reproduce:
> {{{
> ffmpeg -f lavfi -i color=c=gray:s=1920x1080 \
> -vf format=yuv420p,format=p010le -vframes 1 -y /tmp/yuv420p_p010.yuv \
> -vf format=yuv422p,format=p010le -vframes 1 -y /tmp/yuv422p_p010.yuv \
> -vf format=yuv444p,format=p010le -vframes 1 -y /tmp/yuv444p_p010.yuv \
> -vf format=nv12,format=p010le -vframes 1 -y /tmp/nv12_p010.yuv \
> -vf format=nv16,format=p010le -vframes 1 -y /tmp/nv16_p010.yuv \
> -vf format=nv24,format=p010le -vframes 1 -y /tmp/nv24_p010.yuv
>
> sha256sum /tmp/*_p010.yuv
> 8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
> /tmp/nv12_p010.yuv
> 8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
> /tmp/nv16_p010.yuv
> 8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
> /tmp/nv24_p010.yuv
> c4d2b32028354545ff5bd212e12def79085b9808b9623a6bc96aa72ae25604ec
> /tmp/yuv420p_p010.yuv
> 8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
> /tmp/yuv422p_p010.yuv
> 8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
> /tmp/yuv444p_p010.yuv
> }}}
New description:
Summary of the bug: that was obvious in
e3fd1857fb9e230de089820f77367ec320188c9c when it was added by Timo since
FATE changed (patch from Intel brings back FATE changes) and those changes
are in gray, making gray no longer gray, YCbCr 420 to 444 and its chroma
siting cannot affect gray colors, as it is encoded by Y component only.
Patch is here from Intel, but since p010 supported by Nvidia hevc_nvenc if
you force that, Nvidia is also affected. https://github.com/jellyfin
/jellyfin-ffmpeg/pull/453
How to reproduce:
{{{
ffmpeg -f lavfi -i color=c=gray:s=1920x1080 \
-vf format=yuv420p,format=p010le -vframes 1 -y /tmp/yuv420p_p010.yuv \
-vf format=yuv422p,format=p010le -vframes 1 -y /tmp/yuv422p_p010.yuv \
-vf format=yuv444p,format=p010le -vframes 1 -y /tmp/yuv444p_p010.yuv \
-vf format=nv12,format=p010le -vframes 1 -y /tmp/nv12_p010.yuv \
-vf format=nv16,format=p010le -vframes 1 -y /tmp/nv16_p010.yuv \
-vf format=nv24,format=p010le -vframes 1 -y /tmp/nv24_p010.yuv
sha256sum /tmp/*_p010.yuv
8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
/tmp/nv12_p010.yuv
8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
/tmp/nv16_p010.yuv
8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
/tmp/nv24_p010.yuv
c4d2b32028354545ff5bd212e12def79085b9808b9623a6bc96aa72ae25604ec
/tmp/yuv420p_p010.yuv
8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
/tmp/yuv422p_p010.yuv
8836c7ea7086f1d3c0f193c5a47ec203a57fb48d838c9d1180e252ced388f7f6
/tmp/yuv444p_p010.yuv
}}}
--
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11235#comment:3>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list