What to do about bit depth?

Hopefully I can get the screen shots to upload losslessly on here.
My goal is to output any video I have to FHD to be able to stream to my TV with Plex through a new Roku player. All DVDs get upscaled, and some Blu-rays get denoised. I finally found the right CRF value for libx265 to keep all the details I care about, but if I use TVAI at all, I’m getting something I don’t want.
This is a sample of what I have been saving all my videos in: yuv420p.
yuv420p
I keep noticing the fairly well defined lines in the color gradients. I suspect this is from the colorspace conversion that has to happen to get from rgb48le to yuv420p. I output TVAI to tiff to keep a pure output, then I use ffmpeg zscale to convert it to yuv420p with -vf "zscale=pin=bt709:min=gbr:tin=bt709:rin=pc:d=3:p=709:t=709:m=709:r=tv:c=input,format=yuv420p. This displays the colors correctly on my setup, but in dark parts, it’s got those gradient lines.

Now, if I change the pixel format to a higher bit depth, the gradient lines go away, but getting the files to play on my setup is spotty.
yuv422p10le
I got this result with the commad -vf "zscale=pin=bt709:min=gbr:tin=bt709:rin=pc:d=3:p=709:t=709:m=709:r=tv:c=input,format=yuv422p10le and I set the H.265 profile to main422-10 instead of main.

What am I missing? What can I do to not get the gradient lines, but still have the output in yuv420p?
Or, if that’s not possible, what can I do to get my Roku player to be able to play every main422-10 H.265 file?

1 Like

An option is to add in a small amount of noise or grain and that will help break up the banding you are seeing when trying to keep the bit depth down. Otherwise increasing the bit depth is the best way to prevent this.

So, yes. I have read this. And that’s what my scale filter is supposed to be doing, yet somehow it’s not making any difference.

What I have learned is that it’s the format filter that’s doing the bit depth reduction. That has given me some directions to try out.