#11646: Full range RGB to YUV conversion using swscale has a slight green tint. ---------------------------------+-------------------------------------- Reporter: Jorn | Type: defect Status: new | Priority: normal Component: swscale | Version: git-master Keywords: | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | ---------------------------------+-------------------------------------- Summary of the bug: Converting full range RGB to YUV using swscale causes the output to have a slight green tint.
How to reproduce: {{{ % ffmpeg -loop 1 -t 10 -i gradient.png -sws_flags spline+accurate_rnd+full_chroma_int+full_chroma_inp+bitexact -vf "setparams=colorspace=bt709:range=pc,scale,format=yuv444p" -crf 0 output.mp4 ffmpeg version N-120037-g36c8eef42c-20250625 Copyright (c) 2000-2025 the FFmpeg developers built with gcc 15.1.0 (crosstool-NG 1.27.0.42_35c1e72) configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable- fontconfig --enable-libharfbuzz --enable-libfreetype --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable- avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable- ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable- libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable- liboapv --enable-libopencore-amrnb --enable-libopencore-amrwb --enable- libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libvvenc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra- ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20250625 libavutil 60. 3.100 / 60. 3.100 libavcodec 62. 4.100 / 62. 4.100 libavformat 62. 1.100 / 62. 1.100 libavdevice 62. 0.100 / 62. 0.100 libavfilter 11. 0.100 / 11. 0.100 libswscale 9. 0.100 / 9. 0.100 libswresample 6. 0.100 / 6. 0.100 Input #0, png_pipe, from 'gradient.png': Duration: N/A, bitrate: N/A Stream #0:0: Video: png, rgb24(pc, gbr/unknown/unknown), 1024x256 [SAR 1:1 DAR 4:1], 25 fps, 25 tbr, 25 tbn Stream mapping: Stream #0:0 -> #0:0 (png (native) -> h264 (libx264)) Press [q] to stop, [?] for help [libx264 @ 0000016e93513600] using SAR=1/1 [libx264 @ 0000016e93513600] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [libx264 @ 0000016e93513600] profile High 4:4:4 Predictive, level 3.0, 4:4:4, 8-bit [libx264 @ 0000016e93513600] 64 - core 165 - H.264/MPEG-4 AVC codec - Copyleft 2003-2025 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=0 mixed_ref=1 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=0 chroma_qp_offset=0 threads=8 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc=cqp mbtree=0 qp=0 Output #0, mp4, to 'output.mp4': Metadata: encoder : Lavf62.1.100 Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv444p(pc, bt709/unknown/unknown, progressive), 1024x256 [SAR 1:1 DAR 4:1], q=2-31, 25 fps, 12800 tbn Metadata: encoder : Lavc62.4.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A [out#0/mp4 @ 0000016e934c7f80] video:38KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 4.803696% frame= 250 fps=0.0 q=-1.0 Lsize= 40KiB time=00:00:10.00 bitrate= 32.5kbits/s speed= 25x elapsed=0:00:00.40 [libx264 @ 0000016e93513600] frame I:1 Avg QP: 0.00 size: 31759 [libx264 @ 0000016e93513600] frame P:249 Avg QP: 0.00 size: 26 [libx264 @ 0000016e93513600] mb I I16..4: 79.7% 20.2% 0.1% [libx264 @ 0000016e93513600] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.0% 0.0% 0.0% 0.0% 0.0% skip:100.0% [libx264 @ 0000016e93513600] 8x8 transform intra:20.2% [libx264 @ 0000016e93513600] coded y,u,v intra: 99.0% 0.0% 0.0% inter: 0.0% 0.0% 0.0% [libx264 @ 0000016e93513600] i16 v,h,dc,p: 26% 0% 10% 64% [libx264 @ 0000016e93513600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 11% 37% 0% 1% 14% 0% 0% 0% [libx264 @ 0000016e93513600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 0% 0% 100% 0% 0% 0% 0% 0% 0% [libx264 @ 0000016e93513600] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 0000016e93513600] kb/s:30.58 }}} This produces a slightly greenish gradient in the output when using `ffmpeg version N-120037-g36c8eef42c-20250625`, using `ffmpeg version n7.1.1-54-g6400860b9d-20250625` produces the correct gradient matching `gradient.png`, as does using `zscale` instead of `scale`. Seems to have broken between `ffmpeg version N-117967-g4de67e8746-20241130` and `ffmpeg version N-118197-gbb85423142-20241231`. -- Ticket URL: <https://trac.ffmpeg.org/ticket/11646> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
_______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org https://ffmpeg.org/mailman/listinfo/ffmpeg-trac To unsubscribe, visit link above, or email ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".