When the source is not BT.709 (for example, all SD content) and you set the color space under Project Settings → Color Space (e.g., BT.470BG), Topaz upscale does correctly conversion to BT.709 which is SDR Standard for HD content. Problem: The Topaz output could be incorrectly taged as BT.470, while the upscaled stream is BT.709.
When you play this file in VLC, it appears correct because VLC looks deeper into the stream and takes it as BT.709. However, in other players or workflows, it may be interpreted as BT.470 even though it is actually BT.709, resulting in super worse color shifts.
Solution: Topaz should fix this outputs gets correctly taged as BT.709 color space. Until this is fixed, a workaround is to re-tag color shifted Topaz outputs as BT.709.
ffmpeg -i "INPUT.mkv" -c:v ffv1 -level 3 -g 1 -slicecrc 1 \
-color_primaries bt709 -color_trc bt709 -colorspace bt709 \
-c:a copy "OUTPUT.mkv"
OR
convert your SD source to BT.709, so this is not a common colorspace for lowres SD but Topaz can take it directly as bt.709 for upscaling.
ffmpeg -i "INPUT.mkv" -vf "zscale=tin=bt470bg:pin=bt470m:t=bt709:m=bt709:r=tv,format=yuv420p10le" -c:v ffv1 -level 3 -g 1 -slicecrc 1 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -c:a copy "OUTPUT.mkv"
using “zscale”, you need the master(full) ffmpeg build because zscale is not included in the essential build.