Today is a great day. SWScale is no longer the default resizing library included with the core. Instead the much more accurate zimg library is now the default. This means a few new resize algorithms are available and there are many new options. The change has been made to break as few scripts as possible but there is one important difference, since YUV has so many different variants, the matrix to use always has to be specified when converting to YUV and it also sometimes has to be specified when converting from YUV.

Will always work:
c = core.resize.Bilinear(c, format=vs.YUV420P8, matrix_s="709")

Will now only work if c is a YUV clip:
c = core.resize.Bilinear(c, format=vs.YUV420P8)

Likewise this will always work for YUV input:
c = core.resize.Bilinear(c, format=vs.RGB24, matrix_in_s="709")

But this will only work with YUV input if the proper matrix is set as a frame property:
c = core.resize.Bilinear(c, format=vs.RGB24)

There are also many other fixes and changes such as:

  • More consistent performance with many threads
  • Various VIVTC fixes
  • R28 would sometimes misdetect Python paths and fail
  • More specific error messages in most core filters