Intel YCbCr BT.709 decoder is broken (VideoProcessorBlt, DX11), Nvidia's is good
YCbCr 160, 160, 160 must decode as 225, 144, 235 using BT.709 matrix (and is decoded as such by OpenGL for windows in VLC and by mpv) but Directx 11 VideoProcessorBlt is broken if you are using Intel (decodes as 225, 143, 235), that YOU do, see #16193. But with Nvidia's VideoProcessorBlt it is working correctly, i.e. it decodes as 225, 144, 235.
Reported upstream in Chromium (same issue 225, 143, 235 for Intel vs good for Nvidia, the issue is broader though) https://bugs.chromium.org/p/chromium/issues/detail?id=1174638#c12 and TODO: report to intel media-driver people.
Do not forget that ffmpeg requires -vf scale parameters as the default is BT.601 matrix and tag it as BT.709 with -colorspace (both are needed, second will not affect the first):
ffmpeg -y -t 4 -loop 1 1.png -vf scale=out_color_matrix=bt709 -color_range 1 -color_primaries bt709 -color_trc iec61966_2_1 -colorspace bt709 7.mp4
Where 1.png has color 225, 144, 235. YCbCr is indeed 160, 160, 160, checked with -vf extractplanes=y
Turning Intel off in BIOS does not fix the issue.
The simplest fix for many people would be to somehow prioritise Nvidia.