I think ffms2 and Lwlibav convert the chroma location from Type2 to the old MPEG-2 version, so from:
(where the Chroma sample sits right on top of the top left Luma sample)
to
(where X is Luma and "c" is Chroma)
therefore, specifying --chromaloc 2 is wrong if your input is an Avisynth Script.
Ever since I began encoding with x265 years ago, I used FFmpeg to open the AVS Script, convert the chroma location back to Type 2 and then pipe to x265 to encode the video like so:
Code:
ffmpeg.exe -i "AVS Script.avs" -vf scale=out_color_matrix=bt2020nc:out_h_chr_pos=0:out_v_chr_pos=0 -pix_fmt yuv420p16le -strict -1 -an -f yuv4mpegpipe - | x265.exe --y4m -
Still, I'd love to see Avisynth and its plugin be able to support the "new" chroma location, just like it happened with the MPEG-1 variant and the MPEG-2 variant.
If you think about this, though, so far plugins generally assumed that the chroma location is MPEG-2 and you have to manually specify if it's MPEG-1 as they don't get it automatically, wouldn't it be better to somehow make the indexer pass this information through so that plugins will be aware of this? I know that someone has to be aware of his own source, but still, prevention is better than cure (TL;DR sometimes it's better to babysit the users a bit).