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
What changes to VIVTC were made, if you don’t mind my asking?
VFM: the _Combed property is now always properly set and the _FieldBased property is always set to progressive in the output
VDecimate: fixed a crash introduced in recent versions, I think it happened with unknown framerate things only so few people noticed