Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package vapoursynth for openSUSE:Factory 
checked in at 2021-04-29 22:46:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vapoursynth (Old)
 and      /work/SRC/openSUSE:Factory/.vapoursynth.new.1947 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "vapoursynth"

Thu Apr 29 22:46:24 2021 rev:15 rq:889195 version:53

Changes:
--------
--- /work/SRC/openSUSE:Factory/vapoursynth/vapoursynth.changes  2020-08-25 
09:41:26.728285249 +0200
+++ /work/SRC/openSUSE:Factory/.vapoursynth.new.1947/vapoursynth.changes        
2021-04-29 22:52:59.326004456 +0200
@@ -1,0 +2,6 @@
+Thu Apr 29 07:25:25 UTC 2021 - Martin Pluskal <[email protected]>
+
+- Update to version 53:
+  * Bugfix release
+
+-------------------------------------------------------------------

Old:
----
  vapoursynth-R52.tar.gz

New:
----
  vapoursynth-R53.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ vapoursynth.spec ++++++
--- /var/tmp/diff_new_pack.A27055/_old  2021-04-29 22:52:59.782002425 +0200
+++ /var/tmp/diff_new_pack.A27055/_new  2021-04-29 22:52:59.786002408 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package vapoursynth
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           vapoursynth
-Version:        52
+Version:        53
 Release:        0
 Summary:        A video processing framework
 License:        LGPL-2.1-only

++++++ vapoursynth-R52.tar.gz -> vapoursynth-R53.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/.github/workflows/linux.yml 
new/vapoursynth-R53/.github/workflows/linux.yml
--- old/vapoursynth-R52/.github/workflows/linux.yml     2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/.github/workflows/linux.yml     2021-04-10 
15:45:19.000000000 +0200
@@ -15,7 +15,7 @@
 
     - name: Install zimg
       run: |
-        git clone https://github.com/sekrit-twc/zimg --branch v2.9 --depth 1 
./zimg
+        git clone https://github.com/sekrit-twc/zimg --branch v3.0 --depth 1 
./zimg
         pushd ./zimg
         ./autogen.sh
         ./configure --prefix=/usr/
@@ -28,7 +28,7 @@
       uses: actions/setup-python@v2
       with:
         # Version range or exact version of a Python version to use, using 
SemVer's version range syntax.
-        python-version: 3.8
+        python-version: 3.9
 
     - name: Install cython
       run: |
@@ -38,9 +38,9 @@
     - name: Set neccessary environment variables
       run: |
         PYTHON_BASE_PATH=$(command -v python | xargs dirname)/..
-        echo "::set-env 
name=LD_LIBRARY_PATH::$LD_LIBRARY_PATH:$PYTHON_BASE_PATH/lib"
-        echo "::set-env name=LIBRARY_PATH::$LIBRARY_PATH:$PYTHON_BASE_PATH/lib"
-        echo "::set-env name=PKG_CONFIG_PATH::$PYTHON_BASE_PATH/lib/pkgconfig"
+        echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PYTHON_BASE_PATH/lib" >> 
$GITHUB_ENV
+        echo "LIBRARY_PATH=$LIBRARY_PATH:$PYTHON_BASE_PATH/lib" >> $GITHUB_ENV
+        echo "PKG_CONFIG_PATH=$PYTHON_BASE_PATH/lib/pkgconfig" >> $GITHUB_ENV
 
     - name: configure
       run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/.github/workflows/macos.yml 
new/vapoursynth-R53/.github/workflows/macos.yml
--- old/vapoursynth-R52/.github/workflows/macos.yml     2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/.github/workflows/macos.yml     2021-04-10 
15:45:19.000000000 +0200
@@ -24,7 +24,7 @@
 
     - name: Install zimg
       run: |
-        git clone https://github.com/sekrit-twc/zimg --branch v2.9 --depth 1 
./zimg
+        git clone https://github.com/sekrit-twc/zimg --branch v3.0 --depth 1 
./zimg
         pushd ./zimg
         ./autogen.sh
         ./configure
@@ -37,7 +37,7 @@
       uses: actions/setup-python@v2
       with:
         # Version range or exact version of a Python version to use, using 
SemVer's version range syntax.
-        python-version: 3.8
+        python-version: 3.9
 
     - name: Install cython
       run: |
@@ -47,9 +47,9 @@
     - name: Set neccessary environment variables
       run: |
         PYTHON_BASE_PATH=$(command -v python | xargs dirname)/..
-        echo "::set-env 
name=LD_LIBRARY_PATH::$LD_LIBRARY_PATH:$PYTHON_BASE_PATH/lib"
-        echo "::set-env name=LIBRARY_PATH::$LIBRARY_PATH:$PYTHON_BASE_PATH/lib"
-        echo "::set-env name=PKG_CONFIG_PATH::$PYTHON_BASE_PATH/lib/pkgconfig"
+        echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PYTHON_BASE_PATH/lib" >> 
$GITHUB_ENV
+        echo "LIBRARY_PATH=$LIBRARY_PATH:$PYTHON_BASE_PATH/lib" >> $GITHUB_ENV
+        echo "PKG_CONFIG_PATH=$PYTHON_BASE_PATH/lib/pkgconfig" >> $GITHUB_ENV
 
     - name: configure
       run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/.github/workflows/windows.yml 
new/vapoursynth-R53/.github/workflows/windows.yml
--- old/vapoursynth-R52/.github/workflows/windows.yml   2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/.github/workflows/windows.yml   2021-04-10 
15:45:19.000000000 +0200
@@ -23,19 +23,19 @@
     - uses: actions/checkout@v2
 
     - name: Add msbuild to PATH
-      uses: microsoft/[email protected]
+      uses: microsoft/setup-msbuild@v1
   
     - name: Clone Dependencies
       run: |
         git clone https://github.com/vapoursynth/vsrepo --depth 1
-        git clone https://github.com/sekrit-twc/zimg --branch v2.9 --depth 1
+        git clone https://github.com/sekrit-twc/zimg --branch v3.0 --depth 1
         git clone https://github.com/AviSynth/AviSynthPlus.git --depth 1
 
     - name: Setup Python
       uses: actions/setup-python@v2
       with:
         # Version range or exact version of a Python version to use, using 
SemVer's version range syntax.
-        python-version: 3.8
+        python-version: 3.9
         # The target architecture (x86, x64) of the Python interpreter.
         architecture: ${{ matrix.arch }}
 
@@ -48,10 +48,10 @@
       run: |
         $py_include_path = ((Split-Path -Path (Get-Command python.exe).Path) + 
"\include" )
         $py_binary_path = ((Split-Path -Path (Get-Command python.exe).Path) + 
"\libs" )
-        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files %28x86%29\\Python38-32\\libs",$py_binary_path | 
Set-Content "msvc_project\VSScript\VSScript.vcxproj"
-        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files %28x86%29\\Python38-32\\include",$py_include_path | 
Set-Content "msvc_project\VSScript\VSScript.vcxproj"
-        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files\\Python38\\libs",$py_binary_path | Set-Content 
"msvc_project\VSScript\VSScript.vcxproj"
-        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files\\Python38\\include",$py_include_path | Set-Content 
"msvc_project\VSScript\VSScript.vcxproj"
+        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files %28x86%29\\Python39-32\\libs",$py_binary_path | 
Set-Content "msvc_project\VSScript\VSScript.vcxproj"
+        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files %28x86%29\\Python39-32\\include",$py_include_path | 
Set-Content "msvc_project\VSScript\VSScript.vcxproj"
+        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files\\Python39\\libs",$py_binary_path | Set-Content 
"msvc_project\VSScript\VSScript.vcxproj"
+        (Get-Content -Path "msvc_project\VSScript\VSScript.vcxproj" -Raw) 
-replace "C:\\Program Files\\Python39\\include",$py_include_path | Set-Content 
"msvc_project\VSScript\VSScript.vcxproj"
 
     - name: Compile
       run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/ChangeLog 
new/vapoursynth-R53/ChangeLog
--- old/vapoursynth-R52/ChangeLog       2020-08-20 19:48:22.000000000 +0200
+++ new/vapoursynth-R53/ChangeLog       2021-04-10 15:45:19.000000000 +0200
@@ -1,3 +1,12 @@
+r53:
+updated visual studio 2019 runtime version
+updated to python 3.9 for windows
+added scale argument to text filters (AkarinVS)
+fixed length calculation in y4m header (djatom)
+added long path support to vspipe (stax76)
+fixed crash in text filter with small resolution clips (jackoneill)
+fixed calling wrapped functions through python (IFeelBloated)
+
 r52:
 updated visual studio 2019 runtime version
 updated zimg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/vapoursynth-R52/build instructions windows.md" 
"new/vapoursynth-R53/build instructions windows.md"
--- "old/vapoursynth-R52/build instructions windows.md" 2020-08-20 
19:48:22.000000000 +0200
+++ "new/vapoursynth-R53/build instructions windows.md" 2021-04-10 
15:45:19.000000000 +0200
@@ -5,7 +5,7 @@
 ## Required languages and applications
 
 * Needs [Visual Studio 2019](https://visualstudio.microsoft.com/de/vs/)
-* It also needs both [32bit](https://www.python.org/) and 
[64bit](https://www.python.org/) Python 3.8 series (the msvc project assumes 
that you installed python for all users.)
+* It also needs both [32bit](https://www.python.org/) and 
[64bit](https://www.python.org/) Python 3.9 series (the msvc project assumes 
that you installed python for all users.)
 * [InnoSetup 6.x](http://www.jrsoftware.org/isdl.php) is needed to create the 
installer (default installation path assumed)
 * [7-zip](https://www.7-zip.org/) is needed to compress the portable version 
(default installation path assumed)
 
@@ -13,14 +13,14 @@
 
 * Clone VapourSynth
 * Clone VSRepo into the VapourSynth dir (`git clone 
https://github.com/vapoursynth/vsrepo`)
-* Clone zimg into the VapourSynth dir (`git clone 
https://github.com/sekrit-twc/zimg --branch v2.9`)
+* Clone zimg into the VapourSynth dir (`git clone 
https://github.com/sekrit-twc/zimg --branch v3.0`)
 * Clone avs+ into the VapourSynth dir (`git clone 
https://github.com/AviSynth/AviSynthPlus.git`)
 * Compile 32 and 64 bit releases using the VapourSynth solution
 
 ## 3. Preparing the Python Project
 
-* Run `py -3.8 -m pip install -r python-requirements.txt` for 64bit.
-* Run `py -3.8-32 -m pip install -r python-requirements.txt` for 32bit.
+* Run `py -3.9 -m pip install -r python-requirements.txt` for 64bit.
+* Run `py -3.9-32 -m pip install -r python-requirements.txt` for 32bit.
 * Run `cython_build.bat` to compile the Python modules
 * Run `docs_build.bat` to compile the documentation
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/configure.ac 
new/vapoursynth-R53/configure.ac
--- old/vapoursynth-R52/configure.ac    2020-08-20 19:48:22.000000000 +0200
+++ new/vapoursynth-R53/configure.ac    2021-04-10 15:45:19.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([vapoursynth], [52], 
[https://github.com/vapoursynth/vapoursynth/issues], [vapoursynth], 
[http://www.vapoursynth.com/])
+AC_INIT([vapoursynth], [53], 
[https://github.com/vapoursynth/vapoursynth/issues], [vapoursynth], 
[http://www.vapoursynth.com/])
 
 : ${CFLAGS=""}
 : ${CXXFLAGS=""}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/cython_build.bat 
new/vapoursynth-R53/cython_build.bat
--- old/vapoursynth-R52/cython_build.bat        2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/cython_build.bat        2021-04-10 15:45:19.000000000 
+0200
@@ -1,8 +1,8 @@
 rmdir /s /q build
 del vapoursynth.*.pyd
 del /q dist\*.whl
-py.exe -3.8-32 setup.py build_ext --inplace
-py.exe -3.8-32 setup.py bdist_wheel
-py.exe -3.8 setup.py build_ext --inplace
-py.exe -3.8 setup.py bdist_wheel
+py.exe -3.9-32 setup.py build_ext --inplace
+py.exe -3.9-32 setup.py bdist_wheel
+py.exe -3.9 setup.py build_ext --inplace
+py.exe -3.9 setup.py bdist_wheel
 pause
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/conf.py 
new/vapoursynth-R53/doc/conf.py
--- old/vapoursynth-R52/doc/conf.py     2020-08-20 19:48:22.000000000 +0200
+++ new/vapoursynth-R53/doc/conf.py     2021-04-10 15:45:19.000000000 +0200
@@ -42,14 +42,14 @@
 
 # General information about the project.
 project = 'VapourSynth'
-copyright = '2012-2020, Fredrik Mellbin'
+copyright = '2012-2021, Fredrik Mellbin'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = 'R52'
+version = 'R53'
 # The full version, including alpha/beta/rc tags.
 release = version
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/functions/clipinfo.rst 
new/vapoursynth-R53/doc/functions/clipinfo.rst
--- old/vapoursynth-R52/doc/functions/clipinfo.rst      2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/doc/functions/clipinfo.rst      2021-04-10 
15:45:19.000000000 +0200
@@ -1,7 +1,7 @@
 ClipInfo (Text)
 ===============
 
-.. function:: ClipInfo(clip clip[, int alignment=7])
+.. function:: ClipInfo(clip clip[, int alignment=7, int scale=1])
    :module: text
 
    Prints information about the *clip*, such as the format and framerate.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/functions/coreinfo.rst 
new/vapoursynth-R53/doc/functions/coreinfo.rst
--- old/vapoursynth-R52/doc/functions/coreinfo.rst      2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/doc/functions/coreinfo.rst      2021-04-10 
15:45:19.000000000 +0200
@@ -1,7 +1,7 @@
 CoreInfo (Text)
 ===============
 
-.. function:: CoreInfo([clip clip=std.BlankClip(), int alignment=7])
+.. function:: CoreInfo([clip clip=std.BlankClip(), int alignment=7, int 
scale=1])
    :module: text
 
    Prints information about the VapourSynth core, such as version and memory
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/functions/frameeval.rst 
new/vapoursynth-R53/doc/functions/frameeval.rst
--- old/vapoursynth-R52/doc/functions/frameeval.rst     2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/doc/functions/frameeval.rst     2021-04-10 
15:45:19.000000000 +0200
@@ -26,7 +26,7 @@
       import vapoursynth as vs
       import functools
 
-      core = vs.get_core()
+      core = vs.core
       base_clip = core.std.BlankClip(format=vs.YUV420P8, length=1000, 
color=[255, 128, 128])
 
       def animator(n, clip):
@@ -61,7 +61,7 @@
          return core.std.Expr(clip, expr=['x ' + repr(r_gain) + ' *', 'x ' + 
repr(g_gain) + ' *', 'x ' + repr(b_gain) + ' *'])
 
       def GrayWorld1(clip, matrix_s=None):
-         core = vs.get_core()
+         core = vs.core
          rgb_clip = core.resize.Bilinear(clip, format=vs.RGB24)
          r_avg = core.std.PlaneStats(rgb_clip, plane=0)
          g_avg = core.std.PlaneStats(rgb_clip, plane=1)
@@ -69,7 +69,7 @@
          adjusted_clip = core.std.FrameEval(rgb_clip, 
functools.partial(GrayWorld1Adjust, clip=rgb_clip, core=core), prop_src=[r_avg, 
g_avg, b_avg])
          return core.resize.Bilinear(adjusted_clip, format=clip.format.id, 
matrix_s=matrix_s)
 
-      core = vs.get_core()
+      core = vs.core
       core.std.LoadPlugin(path='ffms2.dll')
       main = core.ffms2.Source(source='...')
       main = GrayWorld1(main)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/functions/framenum.rst 
new/vapoursynth-R53/doc/functions/framenum.rst
--- old/vapoursynth-R52/doc/functions/framenum.rst      2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/doc/functions/framenum.rst      2021-04-10 
15:45:19.000000000 +0200
@@ -1,7 +1,7 @@
 FrameNum (Text)
 ===============
 
-.. function:: FrameNum(clip clip[, int alignment=7])
+.. function:: FrameNum(clip clip[, int alignment=7, int scale=1])
    :module: text
 
    Prints the current frame number.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/functions/frameprops.rst 
new/vapoursynth-R53/doc/functions/frameprops.rst
--- old/vapoursynth-R52/doc/functions/frameprops.rst    2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/doc/functions/frameprops.rst    2021-04-10 
15:45:19.000000000 +0200
@@ -1,7 +1,7 @@
 FrameProps (Text)
 =================
 
-.. function:: FrameProps(clip clip[, string props=[], int alignment=7])
+.. function:: FrameProps(clip clip[, string props=[], int alignment=7, int 
scale=1])
    :module: text
 
    Prints all properties attached to the frames, or if the *props* array is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/functions/resize.rst 
new/vapoursynth-R53/doc/functions/resize.rst
--- old/vapoursynth-R52/doc/functions/resize.rst        2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/doc/functions/resize.rst        2021-04-10 
15:45:19.000000000 +0200
@@ -32,6 +32,15 @@
    The function will return an error if the subsampling restrictions aren't
    followed.  
 
+   If you get an error like::
+
+      Resize error 3074: no path between colorspaces (2/2/2 => 1/1/1).
+      May need to specify additional colorspace parameters.
+
+   It usually means the matrix/transfer/primaries are unknown and you have to
+   specify the input colorspace paramaters yourself. Note: 2 means 
"unspecified"
+   according to the ITU-T recommendation.
+
    *clip*:
    
       Accepts all kinds of input.
@@ -127,118 +136,120 @@
       Bicubic(clip=clip, width=1920, height=1080, format=vs.RGB24, 
matrix_in_s="709")
 
    The following tables list values of selected colorspace enumerations and
-   their abbreviated names. For all possible values, see ITU-T H.265.
+   their abbreviated names. (Numerical value in parentheses.) For all possible 
values,
+   see ITU-T H.265.
    
       Matrix coefficients (ITU-T H.265 Table E.5)::
         
-        rgb         Identity
-                    The identity matrix.
-                    Typically used for GBR (often referred to as RGB);
-                    however, may also be used for YZX (often referred to as
-                    XYZ);
-        709         KR = 0.2126; KB = 0.0722
-                    ITU-R Rec. BT.709-5
-        unspec      Unspecified
-                    Image characteristics are unknown or are determined by the
-                    application.
-        470bg       KR = 0.299; KB = 0.114
-                    ITU-R Rec. BT.470-6 System B, G (historical)
-                    (functionally the same as the value 6 (170m))
-        170m        KR = 0.299; KB = 0.114
-                    SMPTE 170M (2004)
-                    (functionally the same as the value 5 (470bg))
-        240m        SMPTE 240M
-        fcc
-        ycgco       YCgCo
-        2020ncl     KR = 0.2627; KB = 0.0593
-                    Rec. ITU-R BT.2020 non-constant luminance system
-        2020cl      KR = 0.2627; KB = 0.0593
-                    Rec. ITU-R BT.2020 constant luminance system
-        chromacl    Chromaticity derived constant luminance system
-        chromancl   Chromaticity derived non-constant luminance system
-        ictcp       ICtCp
+        rgb (0)        Identity
+                       The identity matrix.
+                       Typically used for GBR (often referred to as RGB);
+                       however, may also be used for YZX (often referred to as
+                       XYZ);
+        709 (1)        KR = 0.2126; KB = 0.0722
+                       ITU-R Rec. BT.709-5
+        unspec (2)     Unspecified
+                       Image characteristics are unknown or are determined by 
the
+                       application.
+        fcc (4)
+        470bg (5)      KR = 0.299; KB = 0.114
+                       ITU-R Rec. BT.470-6 System B, G (historical)
+                       (functionally the same as the value 6 (170m))
+        170m (6)       KR = 0.299; KB = 0.114
+                       SMPTE 170M (2004)
+                       (functionally the same as the value 5 (470bg))
+        240m (7)       SMPTE 240M
+        ycgco (8)      YCgCo
+        2020ncl (9)    KR = 0.2627; KB = 0.0593
+                       Rec. ITU-R BT.2020 non-constant luminance system
+        2020cl (10)    KR = 0.2627; KB = 0.0593
+                       Rec. ITU-R BT.2020 constant luminance system
+        chromancl (12) Chromaticity derived non-constant luminance system
+        chromacl (13)  Chromaticity derived constant luminance system
+        ictcp (14)     ICtCp
 
       Transfer characteristics (ITU-T H.265 Table E.4)::
         
-        709         V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
-                    V = 4.500 * Lc for b > Lc >= 0
-                    Rec. ITU-R BT.709-5
-                    (functionally the same as the values 6 (601),
-                    14 (2020_10) and 15 (2020_12))
-        unspec      Unspecified
-                    Image characteristics are unknown or are determined by the
-                    application.
-        601         V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
-                    V = 4.500 * Lc for b > Lc >= 0
-                    Rec. ITU-R BT.601-6 525 or 625
-                    (functionally the same as the values 1 (709),
-                    14 (2020_10) and 15 (2020_12))
-        linear      V = Lc for all values of Lc
-                    Linear transfer characteristics
-        2020_10     V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
-                    V = 4.500 * Lc for b > Lc >= 0
-                    Rec. ITU-R BT.2020
-                    (functionally the same as the values 1 (709),
-                    6 (601) and 15 (2020_12))
-        2020_12     V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
-                    V = 4.500 * Lc for b > Lc >= 0
-                    Rec. ITU-R BT.2020
-                    (functionally the same as the values 1 (709),
-                    6 (601) and 14 (2020_10))
-        240m        SMPTE 240M       
-        470m        ITU-R Rec. BT.470-6 System M       
-        470bg       ITU-R Rec. BT.470-6 System B, G (historical)
-        log100      Log 1:100 contrast
-        log316      Log 1:316 contrast
-        st2084      SMPTE ST 2084
-        std-b67     ARIB std-b67
-        srgb        IEC 61966-2-1
-        xvycc       IEC 61966-2-4
+        709 (1)        V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
+                       V = 4.500 * Lc for b > Lc >= 0
+                       Rec. ITU-R BT.709-5
+                       (functionally the same as the values 6 (601),
+                       14 (2020_10) and 15 (2020_12))
+        unspec (2)     Unspecified
+                       Image characteristics are unknown or are determined by 
the
+                       application.
+        470m (4)       ITU-R Rec. BT.470-6 System M       
+        470bg (5)      ITU-R Rec. BT.470-6 System B, G (historical)
+        601 (6)        V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
+                       V = 4.500 * Lc for b > Lc >= 0
+                       Rec. ITU-R BT.601-6 525 or 625
+                       (functionally the same as the values 1 (709),
+                       14 (2020_10) and 15 (2020_12))
+        240m (7)       SMPTE 240M       
+        linear (8)     V = Lc for all values of Lc
+                       Linear transfer characteristics
+        log100 (9)     Log 1:100 contrast
+        log316 (10)    Log 1:316 contrast
+        xvycc (11)     IEC 61966-2-4
+        srgb (13)      IEC 61966-2-1
+        2020_10 (14)   V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
+                       V = 4.500 * Lc for b > Lc >= 0
+                       Rec. ITU-R BT.2020
+                       (functionally the same as the values 1 (709),
+                       6 (601) and 15 (2020_12))
+        2020_12 (15)   V = a * Lc0.45 - ( a - 1 ) for 1 >= Lc >= b
+                       V = 4.500 * Lc for b > Lc >= 0
+                       Rec. ITU-R BT.2020
+                       (functionally the same as the values 1 (709),
+                       6 (601) and 14 (2020_10))
+        st2084 (16)    SMPTE ST 2084
+        std-b67 (18)   ARIB std-b67
 
       Color primaries (ITU-T H.265 Table E.3)::
       
-        709         primary x y
-                    green 0.300 0.600
-                    blue 0.150 0.060
-                    red 0.640 0.330
-                    white D65 0.3127 0.3290
-                    Rec. ITU-R BT.709-5
-        unspec      Unspecified
-                    Image characteristics are unknown or are determined by the
-                    application.
-        170m        primary x y
-                    green 0.310 0.595
-                    blue 0.155 0.070
-                    red 0.630 0.340
-                    white D65 0.3127 0.3290
-                    SMPTE 170M (2004)
-                    (functionally the same as the value 7 (240m))
-        240m        primary x y
-                    green 0.310 0.595
-                    blue 0.155 0.070
-                    red 0.630 0.340
-                    white D65 0.3127 0.3290
-                    SMPTE 240M (1999)
-                    (functionally the same as the value 6 (170m))
-        470m        ITU-R Rec. BT.470-6 System M   
-        470bg       ITU-R Rec. BT.470-6 System B, G (historical)
-        film
-        2020        primary x y
-                    green 0.170 0.797
-                    blue 0.131 0.046
-                    red 0.708 0.292
-                    white D65 0.3127 0.3290
-                    Rec. ITU-R BT.2020
-        st428       Commonly known as xyz
-        xyz
-        st431-2     DCI-P3 with traditional white point
-        st432-1     DCI-P3
-        jedec-p22   E.B.U. STANDARD FOR CHROMATICITY TOLERANCES FOR STUDIO 
MONITORS (3213-E)
-                    Also known as JEDEC P22
+        709 (1)        primary x y
+                       green 0.300 0.600
+                       blue 0.150 0.060
+                       red 0.640 0.330
+                       white D65 0.3127 0.3290
+                       Rec. ITU-R BT.709-5
+        unspec (2)     Unspecified
+                       Image characteristics are unknown or are determined by 
the
+                       application.
+        470m (4)       ITU-R Rec. BT.470-6 System M
+        470bg (5)      ITU-R Rec. BT.470-6 System B, G (historical)
+        170m (6)       primary x y
+                       green 0.310 0.595
+                       blue 0.155 0.070
+                       red 0.630 0.340
+                       white D65 0.3127 0.3290
+                       SMPTE 170M (2004)
+                       (functionally the same as the value 7 (240m))
+        240m (7)       primary x y
+                       green 0.310 0.595
+                       blue 0.155 0.070
+                       red 0.630 0.340
+                       white D65 0.3127 0.3290
+                       SMPTE 240M (1999)
+                       (functionally the same as the value 6 (170m))
+        film (8)
+        2020 (9)       primary x y
+                       green 0.170 0.797
+                       blue 0.131 0.046
+                       red 0.708 0.292
+                       white D65 0.3127 0.3290
+                       Rec. ITU-R BT.2020
+        st428 (10)     Commonly known as xyz
+        xyz (10)       Alias for st428
+        st431-2 (11)   DCI-P3 with traditional white point
+        st432-1 (12)   DCI-P3
+        jedec-p22 (22) E.B.U. STANDARD FOR CHROMATICITY TOLERANCES FOR STUDIO 
MONITORS (3213-E)
+                       Also known as JEDEC P22
 
       Pixel range (ITU-T H.265 Eq E-4 to E-15)::
       
-        limited     Y = Clip1Y( Round( ( 1 << ( BitDepthY - 8 ) ) *
+        limited (0) Studio (TV) legal range, 16-235 in 8 bits.
+                    Y = Clip1Y( Round( ( 1 << ( BitDepthY - 8 ) ) *
                                               ( 219 * E'Y + 16 ) ) )
                     Cb = Clip1C( Round( ( 1 << ( BitDepthC - 8 ) ) *
                                                ( 224 * E'PB + 128 ) ) )
@@ -251,7 +262,8 @@
                                        ( 219 * E'G + 16 ) )
                     B = Clip1Y( ( 1 << ( BitDepthY - 8 ) ) *
                                        ( 219 * E'B + 16 ) )
-        full        Y = Clip1Y( Round( ( ( 1 << BitDepthY ) - 1 ) * E'Y ) )
+        full (1)    Full (PC) dynamic range, 0-255 in 8 bits.
+                    Y = Clip1Y( Round( ( ( 1 << BitDepthY ) - 1 ) * E'Y ) )
                     Cb = Clip1C( Round( ( ( 1 << BitDepthC ) - 1 ) * E'PB +
                                           ( 1 << ( BitDepthC - 1 ) ) ) )
                     Cr = Clip1C( Round( ( ( 1 << BitDepthC ) - 1 ) * E'PR +
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/functions/text.rst 
new/vapoursynth-R53/doc/functions/text.rst
--- old/vapoursynth-R52/doc/functions/text.rst  2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/doc/functions/text.rst  2021-04-10 15:45:19.000000000 
+0200
@@ -1,7 +1,7 @@
 Text
 ====
 
-.. function:: Text(clip clip, string text[, int alignment=7])
+.. function:: Text(clip clip, string text[, int alignment=7, int scale=1])
    :module: text
 
    Text is a simple text printing filter. It doesn't use any external libraries
@@ -17,5 +17,7 @@
    The *alignment* parameter takes a number from 1 to 9, corresponding to the
    positions of the keys on a numpad.
 
+   The *scale* parameter sets an integer scaling factor for the bitmap font.
+
    *ClipInfo*, *CoreInfo*, *FrameNum*, and *FrameProps* are convenience 
functions
    based on *Text*.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/installation.rst 
new/vapoursynth-R53/doc/installation.rst
--- old/vapoursynth-R52/doc/installation.rst    2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/doc/installation.rst    2021-04-10 15:45:19.000000000 
+0200
@@ -8,7 +8,7 @@
 *************
 
 First download and install the prerequisites:
-   * `Python 3.8.x <http://www.python.org/>`_  -- 32 or 64 bit version 
depending on which version of VapourSynth you want to install
+   * `Python 3.9.x <http://www.python.org/>`_  -- 32 or 64 bit version 
depending on which version of VapourSynth you want to install
    
 Note that VapourSynth and Python have to be matched so both are either 
installed
 for all users or for only for the current user.
@@ -37,7 +37,7 @@
 #############################
 
 First download and decompress the prerequisites:
-   * `Python 3.8.x <http://www.python.org/>`_  -- 32 or 64 bit embeddable 
version
+   * `Python 3.9.x <http://www.python.org/>`_  -- 32 or 64 bit embeddable 
version
    
 Simply decompress the `portable VapourSynth archive 
<https://github.com/vapoursynth/vapoursynth/releases>`_
 into the Python dir and overwrite all existing files. Done.
@@ -85,7 +85,7 @@
 
    * GCC 4.8 or newer, or Clang
 
-   * `zimg v2.9 branch <https://github.com/sekrit-twc/zimg/releases>`_
+   * `zimg v3.0 branch <https://github.com/sekrit-twc/zimg/releases>`_
 
    * Python 3
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/plugins/vivtc.rst 
new/vapoursynth-R53/doc/plugins/vivtc.rst
--- old/vapoursynth-R52/doc/plugins/vivtc.rst   2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/doc/plugins/vivtc.rst   2021-04-10 15:45:19.000000000 
+0200
@@ -20,7 +20,7 @@
       import vapoursynth as vs
       import functools
 
-      core = vs.get_core()
+      core = vs.core
       input_clip = core.std.BlankClip(format=vs.YUV420P8, length=1000, 
color=[255, 128, 128])
 
       def postprocess(n, f, clip, deinterlaced):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/doc/pythonreference.rst 
new/vapoursynth-R53/doc/pythonreference.rst
--- old/vapoursynth-R52/doc/pythonreference.rst 2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/doc/pythonreference.rst 2021-04-10 15:45:19.000000000 
+0200
@@ -147,11 +147,17 @@
 ########################
 
 The VideoFrame class simply contains one picture and all the metadata
-associated with it. It is possible to access the raw data using ctypes and
-some persistence. The three relevant functions are *get_read_ptr(plane)*,
+associated with it. It is possible to access the raw data using either
+*get_write_array(plane)* or *get_write_ptr* with ctypes.
+
+The relevant functions are *get_read_array(plane)*, *get_read_ptr(plane)*,
 *get_write_ptr(plane)*, and *get_stride(plane)*, all of which take the plane
-to access as an argument. Accessing the data is a bit trickier as
-*get_read_ptr()* and *get_write_ptr()* only return a pointer.
+to access as an argument. The recommended way is to use *get_read_array(plane)*
+(*get_write_array(plane)*) to get a read-only (writable) memory view that
+can be accessed directly via *view[row,col]* or *view[row][col]*. The returned
+view is valid as long as its VideoFrame exists.
+The raw access functions are a bit trickier as *get_read_ptr()* and 
*get_write_ptr()*
+only return a pointer.
 
 To get a frame simply call *get_frame(n)* on a clip. Should you desire to get
 all frames in a clip, use this code::
@@ -401,7 +407,11 @@
 
    .. py:attribute:: props
 
-      This attribute holds all the frame's properties as a dict. They are also 
mapped as sub-attributes for compatibility with older scripts.
+      This attribute holds all the frame's properties as a dict. They are also 
mapped as sub-attributes for
+      compatibility with older scripts. For more information, see:
+      `API Reference <apireference.html#reserved-frame-properties>`_
+      Note: This includes the data for matrix, transfer and primaries. 
(_Matrix,
+      _Transfer, _Primaries) See `Resize <functions/resize.html>`_ for more 
information.
 
    .. py:method:: copy()
 
@@ -487,7 +497,7 @@
 
    Plugin is a class that represents a loaded plugin and its namespace.
    
-   .. py:attribute:: name
+   .. py:attribute:: namespace
 
       The namespace of the plugin.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/include/VapourSynth.h 
new/vapoursynth-R53/include/VapourSynth.h
--- old/vapoursynth-R52/include/VapourSynth.h   2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/include/VapourSynth.h   2021-04-10 15:45:19.000000000 
+0200
@@ -35,9 +35,15 @@
 #    else
 #        define VS_NOEXCEPT
 #    endif
+#    if __cplusplus >= 201402L || (defined(_MSC_VER) && _MSC_VER >= 1900)
+#        define VS_DEPRECATE(REASON) [[deprecated(REASON)]]
+#    else
+#        define VS_DEPRECATE(REASON)
+#    endif
 #else
 #    define VS_EXTERN_C
 #    define VS_NOEXCEPT
+#    define VS_DEPRECATE(REASON)
 #endif
 
 #if defined(_WIN32) && !defined(_WIN64)
@@ -243,7 +249,9 @@
 struct VSAPI {
     VSCore *(VS_CC *createCore)(int threads) VS_NOEXCEPT;
     void (VS_CC *freeCore)(VSCore *core) VS_NOEXCEPT;
-    const VSCoreInfo *(VS_CC *getCoreInfo)(VSCore *core) VS_NOEXCEPT; /* 
deprecated as of api 3.6, use getCoreInfo2 instead */
+
+    VS_DEPRECATE("getCoreInfo has been deprecated as of api 3.6, use 
getCoreInfo2 instead")
+    const VSCoreInfo *(VS_CC *getCoreInfo)(VSCore *core) VS_NOEXCEPT;
 
     const VSFrameRef *(VS_CC *cloneFrameRef)(const VSFrameRef *f) VS_NOEXCEPT;
     VSNodeRef *(VS_CC *cloneNodeRef)(VSNodeRef *node) VS_NOEXCEPT;
@@ -322,7 +330,10 @@
     int64_t (VS_CC *setMaxCacheSize)(int64_t bytes, VSCore *core) VS_NOEXCEPT;
     int (VS_CC *getOutputIndex)(VSFrameContext *frameCtx) VS_NOEXCEPT;
     VSFrameRef *(VS_CC *newVideoFrame2)(const VSFormat *format, int width, int 
height, const VSFrameRef **planeSrc, const int *planes, const VSFrameRef 
*propSrc, VSCore *core) VS_NOEXCEPT;
-    void (VS_CC *setMessageHandler)(VSMessageHandler handler, void *userData) 
VS_NOEXCEPT; /* deprecated as of api 3.6, use addMessageHandler and 
removeMessageHandler instead */
+    
+    VS_DEPRECATE("setMessageHandler has been deprecated as of api 3.6, use 
addMessageHandler and removeMessageHandler instead")
+    void (VS_CC *setMessageHandler)(VSMessageHandler handler, void *userData) 
VS_NOEXCEPT;
+    
     int (VS_CC *setThreadCount)(int threads, VSCore *core) VS_NOEXCEPT;
 
     const char *(VS_CC *getPluginPath)(const VSPlugin *plugin) VS_NOEXCEPT;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/vapoursynth-R52/installer/make portable.bat" 
"new/vapoursynth-R53/installer/make portable.bat"
--- "old/vapoursynth-R52/installer/make portable.bat"   2020-08-20 
19:48:22.000000000 +0200
+++ "new/vapoursynth-R53/installer/make portable.bat"   2021-04-10 
15:45:19.000000000 +0200
@@ -14,7 +14,7 @@
 copy ..\vsrepo\vsrepo.py buildp64
 copy 7z.exe buildp64
 copy 7z.dll buildp64
-copy ..\vapoursynth.cp38-win_amd64.pyd buildp64
+copy ..\vapoursynth.cp39-win_amd64.pyd buildp64
 copy ..\msvc_project\x64\Release\VapourSynth.dll buildp64
 copy ..\msvc_project\x64\Release\vsscript.dll buildp64
 copy ..\msvc_project\x64\Release\avfs.exe buildp64
@@ -38,7 +38,7 @@
 copy ..\sdk\filter_skeleton.c buildp64\sdk\examples
 copy ..\sdk\invert_example.c buildp64\sdk\examples
 copy ..\sdk\vsscript_example.c buildp64\sdk\examples
-copy "C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Redist\MSVC\14.26.28720\x64\Microsoft.VC142.CRT\*" 
buildp64
+copy "C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Redist\MSVC\14.28.29910\x64\Microsoft.VC142.CRT\*" 
buildp64
 copy pfm-192-vapoursynth-win.exe buildp64
 copy .\setup.py buildp64
 copy .\MANIFEST.in buildp64
@@ -64,7 +64,7 @@
 copy ..\vsrepo\vsrepo.py buildp32
 copy 7z.exe buildp32
 copy 7z.dll buildp32
-copy ..\vapoursynth.cp38-win32.pyd buildp32
+copy ..\vapoursynth.cp39-win32.pyd buildp32
 copy ..\msvc_project\Release\VapourSynth.dll buildp32
 copy ..\msvc_project\Release\vsscript.dll buildp32
 copy ..\msvc_project\Release\avfs.exe buildp32
@@ -88,7 +88,7 @@
 copy ..\sdk\filter_skeleton.c buildp32\sdk\examples
 copy ..\sdk\invert_example.c buildp32\sdk\examples
 copy ..\sdk\vsscript_example.c buildp32\sdk\examples
-copy "C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Redist\MSVC\14.26.28720\x86\Microsoft.VC142.CRT\*" 
buildp32
+copy "C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Redist\MSVC\14.28.29910\x86\Microsoft.VC142.CRT\*" 
buildp32
 copy pfm-192-vapoursynth-win.exe buildp32
 copy .\setup.py buildp32
 copy .\MANIFEST.in buildp32
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vapoursynth-R52/installer/scripts/products/vcredist2017.iss 
new/vapoursynth-R53/installer/scripts/products/vcredist2017.iss
--- old/vapoursynth-R52/installer/scripts/products/vcredist2017.iss     
2020-08-20 19:48:22.000000000 +0200
+++ new/vapoursynth-R53/installer/scripts/products/vcredist2017.iss     
2021-04-10 15:45:19.000000000 +0200
@@ -5,13 +5,13 @@
 vcredist2017_title=Visual C++ 2015-2019 Redistributable
 vcredist2017_title_x64=Visual C++ 2015-2019 64-Bit Redistributable
 
-vcredist2017_size=13.7 MB
-vcredist2017_size_x64=14.3 MB
+vcredist2017_size=13.6 MB
+vcredist2017_size_x64=14.1 MB
 
 [Code]
 const
-       vcredist2017_url = 
'http://download.visualstudio.microsoft.com/download/pr/9fe82b83-f3a1-43f5-8f25-ebe24529854c/B4D433E2F66B30B478C0D080CCD5217CA2A963C16E90CAF10B1E0592B7D8D519/VC_redist.x86.exe';
-       vcredist2017_url_x64 = 
'http://download.visualstudio.microsoft.com/download/pr/fd5d2eea-32b8-4814-b55e-28c83dd72d9c/952A0C6CB4A3DD14C3666EF05BB1982C5FF7F87B7103C2BA896354F00651E358/VC_redist.x64.exe';
+       vcredist2017_url = 
'http://download.visualstudio.microsoft.com/download/pr/366c0fb9-fe05-4b58-949a-5bc36e50e370/E830C313AA99656748F9D2ED582C28101EAAF75F5377E3FB104C761BF3F808B2/VC_redist.x86.exe';
+       vcredist2017_url_x64 = 
'http://download.visualstudio.microsoft.com/download/pr/366c0fb9-fe05-4b58-949a-5bc36e50e370/015EDD4E5D36E053B23A01ADB77A2B12444D3FB6ECCEFE23E3A8CD6388616A16/VC_redist.x64.exe';
 
        vcredist2017_upgradecode = '{65E5BD06-6392-3027-8C26-853107D3CF1A}';
        vcredist2017_upgradecode_x64 = '{36F68A90-239C-34DF-B58C-64B30153CE35}';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/installer/setup.py 
new/vapoursynth-R53/installer/setup.py
--- old/vapoursynth-R52/installer/setup.py      2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/installer/setup.py      2021-04-10 15:45:19.000000000 
+0200
@@ -1,4 +1,4 @@
-CURRENT_RELEASE = "52"
+CURRENT_RELEASE = "53"
 
 # Always prefer setuptools over distutils
 from setuptools import setup, find_packages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/installer/vsinstaller.iss 
new/vapoursynth-R53/installer/vsinstaller.iss
--- old/vapoursynth-R52/installer/vsinstaller.iss       2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/installer/vsinstaller.iss       2021-04-10 
15:45:19.000000000 +0200
@@ -1,7 +1,7 @@
-#define Version '52'
+#define Version '53'
 #define VersionExtra ''
-#define PythonVersion '3.8'
-#define PythonCompactVersion '38'
+#define PythonVersion '3.9'
+#define PythonCompactVersion '39'
 
 #ifndef InstallerBits
   #define InstallerBits '64'
@@ -189,7 +189,7 @@
 
 [Code]
 
-const VSRuntimeVersion = '14.27.29016';
+const VSRuntimeVersion = '14.28.29913';
 
 type
   TPythonPath = record
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/msvc_project/VSPipe/VSPipe.vcxproj 
new/vapoursynth-R53/msvc_project/VSPipe/VSPipe.vcxproj
--- old/vapoursynth-R52/msvc_project/VSPipe/VSPipe.vcxproj      2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/msvc_project/VSPipe/VSPipe.vcxproj      2021-04-10 
15:45:19.000000000 +0200
@@ -164,6 +164,9 @@
     <ClInclude Include="..\..\include\VSScript.h" />
     <ClInclude Include="..\..\src\common\vsutf16.h" />
   </ItemGroup>
+  <ItemGroup>
+    <Manifest Include="..\..\src\vspipe\vspipe.manifest" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vapoursynth-R52/msvc_project/VSPipe/VSPipe.vcxproj.filters 
new/vapoursynth-R53/msvc_project/VSPipe/VSPipe.vcxproj.filters
--- old/vapoursynth-R52/msvc_project/VSPipe/VSPipe.vcxproj.filters      
2020-08-20 19:48:22.000000000 +0200
+++ new/vapoursynth-R53/msvc_project/VSPipe/VSPipe.vcxproj.filters      
2021-04-10 15:45:19.000000000 +0200
@@ -33,4 +33,7 @@
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>
+  <ItemGroup>
+    <Manifest Include="..\..\src\vspipe\vspipe.manifest" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vapoursynth-R52/msvc_project/VSScript/VSScript.vcxproj 
new/vapoursynth-R53/msvc_project/VSScript/VSScript.vcxproj
--- old/vapoursynth-R52/msvc_project/VSScript/VSScript.vcxproj  2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/msvc_project/VSScript/VSScript.vcxproj  2021-04-10 
15:45:19.000000000 +0200
@@ -67,20 +67,20 @@
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IncludePath>../../include;C:\Program Files 
%28x86%29\Python38-32\include;$(IncludePath)</IncludePath>
-    <LibraryPath>C:\Program Files 
%28x86%29\Python38-32\libs;$(LibraryPath)</LibraryPath>
+    <IncludePath>../../include;C:\Program Files 
%28x86%29\Python39-32\include;$(IncludePath)</IncludePath>
+    <LibraryPath>C:\Program Files 
%28x86%29\Python39-32\libs;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <IncludePath>../../include;C:\Program 
Files\Python38\include;$(IncludePath)</IncludePath>
-    <LibraryPath>C:\Program Files\Python38\libs;$(LibraryPath)</LibraryPath>
+    <IncludePath>../../include;C:\Program 
Files\Python39\include;$(IncludePath)</IncludePath>
+    <LibraryPath>C:\Program Files\Python39\libs;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <IncludePath>../../include;C:\Program Files 
%28x86%29\Python38-32\include;$(IncludePath)</IncludePath>
-    <LibraryPath>C:\Program Files 
%28x86%29\Python38-32\libs;$(LibraryPath)</LibraryPath>
+    <IncludePath>../../include;C:\Program Files 
%28x86%29\Python39-32\include;$(IncludePath)</IncludePath>
+    <LibraryPath>C:\Program Files 
%28x86%29\Python39-32\libs;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <IncludePath>../../include;C:\Program 
Files\Python38\include;$(IncludePath)</IncludePath>
-    <LibraryPath>C:\Program Files\Python38\libs;$(LibraryPath)</LibraryPath>
+    <IncludePath>../../include;C:\Program 
Files\Python39\include;$(IncludePath)</IncludePath>
+    <LibraryPath>C:\Program Files\Python39\libs;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <ItemDefinitionGroup 
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -96,7 +96,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Windows</SubSystem>
-      <DelayLoadDLLs>python38.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <DelayLoadDLLs>Python39.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -113,7 +113,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Windows</SubSystem>
-      <DelayLoadDLLs>python38.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <DelayLoadDLLs>Python39.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup 
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -133,7 +133,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <SubSystem>Windows</SubSystem>
-      <DelayLoadDLLs>python38.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <DelayLoadDLLs>Python39.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup 
Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -151,7 +151,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
-      <DelayLoadDLLs>python38.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <DelayLoadDLLs>Python39.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/setup.py new/vapoursynth-R53/setup.py
--- old/vapoursynth-R52/setup.py        2020-08-20 19:48:22.000000000 +0200
+++ new/vapoursynth-R53/setup.py        2021-04-10 15:45:19.000000000 +0200
@@ -85,7 +85,7 @@
     author = "Fredrik Mellbin",
     author_email = "[email protected]",
     license = "LGPL 2.1 or later",
-    version = "52",
+    version = "53",
     long_description = "A portable replacement for Avisynth",
     platforms = "All",
     ext_modules = [Extension("vapoursynth", [join("src", "cython", 
"vapoursynth.pyx")],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/avisynth/avisynth_compat.cpp 
new/vapoursynth-R53/src/avisynth/avisynth_compat.cpp
--- old/vapoursynth-R52/src/avisynth/avisynth_compat.cpp        2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/src/avisynth/avisynth_compat.cpp        2021-04-10 
15:45:19.000000000 +0200
@@ -466,6 +466,26 @@
     PREFETCHR0(aWarpSharp)
     PREFETCHR0(aWarpSharp2)
 
+    // CullResize
+    PREFETCHR0(CullBilinearResize)
+    PREFETCHR0(CullBicubicResize)
+    PREFETCHR0(CullLanczosResize)
+    PREFETCHR0(CullLanczos4Resize)
+    PREFETCHR0(CullBlackmanResize)
+    PREFETCHR0(CullSpline16Resize)
+    PREFETCHR0(CullSpline36Resize)
+    PREFETCHR0(CullSpline64Resize)
+    PREFETCHR0(CullGaussResize)
+
+    // Spline resize
+    PREFETCHR0(Spline100Resize)
+    PREFETCHR0(Spline144Resize)
+
+    // PVBob
+    temp = int64ToIntS(vsapi->propGetInt(in, "mode", 0, &err));
+    PREFETCH(DGBob, (temp > 0) ? 2 : 1, 1, -2, 2)
+    PREFETCH(PVBob, (temp > 0) ? 2 : 1, 1, -2, 2)
+
     // Avisynth internal
     PREFETCH(Bob, 2, 1, 0, 0)
     PREFETCH(TemporalSoften, 1, 1, -5, 5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/core/textfilter.cpp 
new/vapoursynth-R53/src/core/textfilter.cpp
--- old/vapoursynth-R52/src/core/textfilter.cpp 2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/src/core/textfilter.cpp 2021-04-10 15:45:19.000000000 
+0200
@@ -31,20 +31,23 @@
 #include "ter-116n.h"
 #include "internalfilters.h"
 
+const int margin_h = 16;
+const int margin_v = 16;
+
 namespace {
 std::string operator""_s(const char *str, size_t len) { return{ str, len }; }
 
 typedef std::vector<std::string> stringlist;
 } // namespace
 
-static void scrawl_character_int(unsigned char c, uint8_t *image, int stride, 
int dest_x, int dest_y, int bitsPerSample) {
+static void scrawl_character_int(unsigned char c, uint8_t *image, int stride, 
int dest_x, int dest_y, int bitsPerSample, int scale) {
     int black = 16 << (bitsPerSample - 8);
     int white = 235 << (bitsPerSample - 8);
     int x, y;
     if (bitsPerSample == 8) {
-        for (y = 0; y < character_height; y++) {
-            for (x = 0; x < character_width; x++) {
-                if (__font_bitmap__[c * character_height + y] & (1 << (7 - 
x))) {
+        for (y = 0; y < character_height * scale; y++) {
+            for (x = 0; x < character_width * scale; x++) {
+                if (__font_bitmap__[c * character_height + y/scale] & (1 << (7 
- x/scale))) {
                     image[dest_y*stride + dest_x + x] = white;
                 } else {
                     image[dest_y*stride + dest_x + x] = black;
@@ -54,9 +57,9 @@
             dest_y++;
         }
     } else {
-        for (y = 0; y < character_height; y++) {
-            for (x = 0; x < character_width; x++) {
-                if (__font_bitmap__[c * character_height + y] & (1 << (7 - 
x))) {
+        for (y = 0; y < character_height * scale; y++) {
+            for (x = 0; x < character_width * scale; x++) {
+                if (__font_bitmap__[c * character_height + y/scale] & (1 << (7 
- x/scale))) {
                     reinterpret_cast<uint16_t *>(image)[dest_y*stride/2 + 
dest_x + x] = white;
                 } else {
                     reinterpret_cast<uint16_t *>(image)[dest_y*stride/2 + 
dest_x + x] = black;
@@ -69,14 +72,14 @@
 }
 
 
-static void scrawl_character_float(unsigned char c, uint8_t *image, int 
stride, int dest_x, int dest_y) {
+static void scrawl_character_float(unsigned char c, uint8_t *image, int 
stride, int dest_x, int dest_y, int scale) {
     float white = 1.0f;
     float black = 0.0f;
     int x, y;
 
-    for (y = 0; y < character_height; y++) {
-        for (x = 0; x < character_width; x++) {
-            if (__font_bitmap__[c * character_height + y] & (1 << (7 - x))) {
+    for (y = 0; y < character_height * scale; y++) {
+        for (x = 0; x < character_width * scale; x++) {
+            if (__font_bitmap__[c * character_height + y/scale] & (1 << (7 - 
x/scale))) {
                 reinterpret_cast<float *>(image)[dest_y*stride/4 + dest_x + x] 
= white;
             } else {
                 reinterpret_cast<float *>(image)[dest_y*stride/4 + dest_x + x] 
= black;
@@ -126,7 +129,7 @@
 }
 
 
-static stringlist split_text(const std::string& txt, int width, int height) {
+static stringlist split_text(const std::string& txt, int width, int height, 
int scale) {
     stringlist lines;
 
     // First split by \n
@@ -142,7 +145,7 @@
     lines.push_back(txt.substr(prev_pos + 1));
 
     // Then split any lines that don't fit
-    size_t horizontal_capacity = width / character_width;
+    size_t horizontal_capacity = width / character_width / scale;
     for (stringlist::iterator iter = lines.begin(); iter != lines.end(); 
iter++) {
         if (iter->size() > horizontal_capacity) {
             iter = std::prev(lines.insert(std::next(iter), 
iter->substr(horizontal_capacity)));
@@ -151,7 +154,7 @@
     }
 
     // Also drop lines that would go over the frame's bottom edge
-    size_t vertical_capacity = height / character_height;
+    size_t vertical_capacity = height / character_height / scale;
     if (lines.size() > vertical_capacity) {
         lines.resize(vertical_capacity);
     }
@@ -160,17 +163,14 @@
 }
 
 
-static void scrawl_text(std::string txt, int alignment, VSFrameRef *frame, 
const VSAPI *vsapi) {
+static void scrawl_text(std::string txt, int alignment, int scale, VSFrameRef 
*frame, const VSAPI *vsapi) {
     const VSFormat *frame_format = vsapi->getFrameFormat(frame);
     int width = vsapi->getFrameWidth(frame, 0);
     int height = vsapi->getFrameHeight(frame, 0);
 
-    const int margin_h = 16;
-    const int margin_v = 16;
-
     sanitise_text(txt);
 
-    stringlist lines = split_text(txt, width - margin_h*2, height - 
margin_v*2);
+    stringlist lines = split_text(txt, width - margin_h*2, height - 
margin_v*2, scale);
 
     int start_x = 0;
     int start_y = 0;
@@ -184,12 +184,12 @@
     case 4:
     case 5:
     case 6:
-        start_y = (height - static_cast<int>(lines.size())*character_height) / 
2;
+        start_y = (height - 
static_cast<int>(lines.size())*character_height*scale) / 2;
         break;
     case 1:
     case 2:
     case 3:
-        start_y = height - static_cast<int>(lines.size())*character_height - 
margin_v;
+        start_y = height - 
static_cast<int>(lines.size())*character_height*scale - margin_v;
         break;
     }
 
@@ -203,17 +203,17 @@
         case 2:
         case 5:
         case 8:
-            start_x = (width - static_cast<int>(iter.size())*character_width) 
/ 2;
+            start_x = (width - 
static_cast<int>(iter.size())*character_width*scale) / 2;
             break;
         case 3:
         case 6:
         case 9:
-            start_x = width - static_cast<int>(iter.size())*character_width - 
margin_h;
+            start_x = width - 
static_cast<int>(iter.size())*character_width*scale - margin_h;
             break;
         }
 
         for (size_t i = 0; i < iter.size(); i++) {
-            int dest_x = start_x + static_cast<int>(i)*character_width;
+            int dest_x = start_x + static_cast<int>(i)*character_width*scale;
             int dest_y = start_y;
 
             if (frame_format->colorFamily == cmRGB) {
@@ -222,9 +222,9 @@
                     int stride = vsapi->getStride(frame, plane);
 
                     if (frame_format->sampleType == stInteger) {
-                        scrawl_character_int(iter[i], image, stride, dest_x, 
dest_y, frame_format->bitsPerSample);
+                        scrawl_character_int(iter[i], image, stride, dest_x, 
dest_y, frame_format->bitsPerSample, scale);
                     } else {
-                        scrawl_character_float(iter[i], image, stride, dest_x, 
dest_y);
+                        scrawl_character_float(iter[i], image, stride, dest_x, 
dest_y, scale);
                     }
                 }
             } else {
@@ -234,13 +234,13 @@
 
                     if (plane == 0) {
                         if (frame_format->sampleType == stInteger) {
-                            scrawl_character_int(iter[i], image, stride, 
dest_x, dest_y, frame_format->bitsPerSample);
+                            scrawl_character_int(iter[i], image, stride, 
dest_x, dest_y, frame_format->bitsPerSample, scale);
                         } else {
-                            scrawl_character_float(iter[i], image, stride, 
dest_x, dest_y);
+                            scrawl_character_float(iter[i], image, stride, 
dest_x, dest_y, scale);
                         }
                     } else {
-                        int sub_w = character_width  >> 
frame_format->subSamplingW;
-                        int sub_h = character_height >> 
frame_format->subSamplingH;
+                        int sub_w = scale * character_width  >> 
frame_format->subSamplingW;
+                        int sub_h = scale * character_height >> 
frame_format->subSamplingH;
                         int sub_dest_x = dest_x >> frame_format->subSamplingW;
                         int sub_dest_y = dest_y >> frame_format->subSamplingH;
                         int y;
@@ -262,7 +262,7 @@
                 } // for plane in planes
             } // if colorFamily
         } // for i in line
-        start_y += character_height;
+        start_y += character_height * scale;
     } // for iter in lines
 }
 
@@ -284,6 +284,7 @@
 
     std::string text;
     int alignment;
+    int scale;
     intptr_t filter;
     stringlist props;
     std::string instanceName;
@@ -503,10 +504,22 @@
                 return nullptr;
         }
 
+        int width = vsapi->getFrameWidth(src, 0);
+        int height = vsapi->getFrameHeight(src, 0);
+
+        int minimum_width = 2 * margin_h + character_width * d->scale;
+        int minimum_height = 2 * margin_v + character_height * d->scale;
+
+        if (width < minimum_width || height < minimum_height) {
+            vsapi->freeFrame(src);
+            vsapi->setFilterError((d->instanceName + ": frame size must be at 
least " + std::to_string(minimum_width) + "x" + std::to_string(minimum_height) 
+ " pixels.").c_str(), frameCtx);
+            return nullptr;
+        }
+
         VSFrameRef *dst = vsapi->copyFrame(src, core);
 
         if (d->filter == FILTER_FRAMENUM) {
-            scrawl_text(std::to_string(n), d->alignment, dst, vsapi);
+            scrawl_text(std::to_string(n), d->alignment, d->scale, dst, vsapi);
         } else if (d->filter == FILTER_FRAMEPROPS) {
             const VSMap *props = vsapi->getFramePropsRO(dst);
             int numKeys = vsapi->propNumKeys(props);
@@ -524,7 +537,7 @@
                 }
             }
 
-            scrawl_text(text, d->alignment, dst, vsapi);
+            scrawl_text(text, d->alignment, d->scale, dst, vsapi);
         } else if (d->filter == FILTER_COREINFO) {
             VSCoreInfo ci;
             vsapi->getCoreInfo2(core, &ci);
@@ -535,7 +548,7 @@
             text.append("Maximum framebuffer cache size: 
").append(std::to_string(ci.maxFramebufferSize)).append(" bytes\n");
             text.append("Used framebuffer cache size: 
").append(std::to_string(ci.usedFramebufferSize)).append(" bytes");
 
-            scrawl_text(text, d->alignment, dst, vsapi);
+            scrawl_text(text, d->alignment, d->scale, dst, vsapi);
         } else if (d->filter == FILTER_CLIPINFO) {
             const VSMap *props = vsapi->getFramePropsRO(src);
             std::string text = "Clip info:\n";
@@ -610,9 +623,9 @@
                 text += "Frame duration: " + std::to_string(fn) + "/" + 
std::to_string(fd) + " (" + std::to_string(static_cast<double>(fn) / fd) + 
")\n";
             }
 
-            scrawl_text(text, d->alignment, dst, vsapi);
+            scrawl_text(text, d->alignment, d->scale, dst, vsapi);
         } else {
-            scrawl_text(d->text, d->alignment, dst, vsapi);
+            scrawl_text(d->text, d->alignment, d->scale, dst, vsapi);
         }
 
         vsapi->freeFrame(src);
@@ -679,6 +692,11 @@
         return;
     }
 
+    d.scale = int64ToIntS(vsapi->propGetInt(in, "scale", 0, &err));
+    if (err) {
+        d.scale = 1;
+    }
+
     d.filter = reinterpret_cast<intptr_t>(userData);
 
     switch (d.filter) {
@@ -719,23 +737,28 @@
     registerFunc("Text",
         "clip:clip;"
         "text:data;"
-        "alignment:int:opt;",
+        "alignment:int:opt;"
+        "scale:int:opt;",
         textCreate, reinterpret_cast<void *>(FILTER_TEXT), plugin);
     registerFunc("ClipInfo",
         "clip:clip;"
-        "alignment:int:opt;",
+        "alignment:int:opt;"
+        "scale:int:opt;",
         textCreate, reinterpret_cast<void *>(FILTER_CLIPINFO), plugin);
     registerFunc("CoreInfo",
         "clip:clip:opt;"
-        "alignment:int:opt;",
+        "alignment:int:opt;"
+        "scale:int:opt;",
         textCreate, reinterpret_cast<void *>(FILTER_COREINFO), plugin);
     registerFunc("FrameNum",
         "clip:clip;"
-        "alignment:int:opt;",
+        "alignment:int:opt;"
+        "scale:int:opt;",
         textCreate, reinterpret_cast<void *>(FILTER_FRAMENUM), plugin);
     registerFunc("FrameProps",
         "clip:clip;"
         "props:data[]:opt;"
-        "alignment:int:opt;",
+        "alignment:int:opt;"
+        "scale:int:opt;",
         textCreate, reinterpret_cast<void *>(FILTER_FRAMEPROPS), plugin);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/core/version.h 
new/vapoursynth-R53/src/core/version.h
--- old/vapoursynth-R52/src/core/version.h      2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/src/core/version.h      2021-04-10 15:45:19.000000000 
+0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2012-2020 Fredrik Mellbin
+* Copyright (c) 2012-2021 Fredrik Mellbin
 *
 * This file is part of VapourSynth.
 *
@@ -34,7 +34,7 @@
 
 #define XSTR(x) STR(x)
 #define STR(x) #x
-#define VAPOURSYNTH_CORE_VERSION 52
+#define VAPOURSYNTH_CORE_VERSION 53
 #if defined(VS_FRAME_GUARD) && !defined(NDEBUG)
 #define VS_OPTIONS_TEXT "Options: Frame Guard + Extra Assertions\n"
 #elif defined(VS_FRAME_GUARD)
@@ -45,7 +45,7 @@
 #define VS_OPTIONS_TEXT "Options: -\n"
 #endif
 #define VAPOURSYNTH_VERSION_STRING "VapourSynth Video Processing Library\n" \
-    "Copyright (c) 2012-2020 Fredrik Mellbin\n" \
+    "Copyright (c) 2012-2021 Fredrik Mellbin\n" \
     "Core R" XSTR(VAPOURSYNTH_CORE_VERSION) "\n" \
     "API R" XSTR(VAPOURSYNTH_API_MAJOR) "." XSTR(VAPOURSYNTH_API_MINOR) "\n" \
     VS_OPTIONS_TEXT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/core/vsresize.cpp 
new/vapoursynth-R53/src/core/vsresize.cpp
--- old/vapoursynth-R52/src/core/vsresize.cpp   2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/src/core/vsresize.cpp   2021-04-10 15:45:19.000000000 
+0200
@@ -285,7 +285,7 @@
 }
 
 
-bool import_frame_props(const VSMap *props, zimg_image_format *format, const 
VSAPI *vsapi) {
+void import_frame_props(const VSMap *props, zimg_image_format *format, bool 
*interlaced, const VSAPI *vsapi) {
     propGetIfValid<int>(props, "_ChromaLocation", &format->chroma_location, 
[](int x) { return x >= 0; }, vsapi);
 
     if (vsapi->propNumElements(props, "_ColorRange") > 0) {
@@ -328,7 +328,7 @@
         format->active_region.height /= 2;
     }
 
-    return is_interlaced;
+    *interlaced = is_interlaced;
 }
 
 void export_frame_props(const zimg_image_format &format, VSMap *props, const 
VSAPI *vsapi) {
@@ -618,7 +618,7 @@
 
     VSNodeRef *m_node;
     VSVideoInfo m_vi;
-    bool m_prefer_props;
+    bool m_prefer_props; // If true, frame properties have precedence over 
filter arguments.
     double m_src_left, m_src_top, m_src_width, m_src_height;
     vszimgxx::zfilter_graph_builder_params m_params;
 
@@ -827,17 +827,24 @@
             translate_vsformat(src_vsformat, &src_format);
             translate_vsformat(dst_vsformat, &dst_format);
 
-            if (m_prefer_props)
+            bool interlaced = false;
+
+            if (m_prefer_props) {
                 set_src_colorspace(&src_format);
-            bool interlaced = import_frame_props(src_props, &src_format, 
vsapi);
-            if (!m_prefer_props)
+                import_frame_props(src_props, &src_format, &interlaced, vsapi);
+            } else {
+                import_frame_props(src_props, &src_format, &interlaced, vsapi);
                 set_src_colorspace(&src_format);
+            }
 
             set_dst_colorspace(src_format, &dst_format);
 
             // Need to also check VSFormat::id in case transformation to/from 
COMPAT is required.
-            if (src_format == dst_format && src_vsformat->id == 
dst_vsformat->id && !is_shifted(src_format))
-                return vsapi->cloneFrameRef(src_frame);
+            if (src_format == dst_format && src_vsformat->id == 
dst_vsformat->id && !is_shifted(src_format)) {
+                VSFrameRef *clone = vsapi->copyFrame(src_frame, core);
+                export_frame_props(dst_format, vsapi->getFramePropsRW(clone), 
vsapi);
+                return clone;
+            }
 
             dst_frame = vsapi->newVideoFrame(dst_vsformat, dst_format.width, 
dst_format.height, src_frame, core);
 
@@ -965,7 +972,7 @@
 }
 
 void VS_CC vszimg_free(void *instanceData, VSCore *core, const VSAPI *vsapi) {
-    auto x = static_cast<vszimg *>(instanceData);
+    vszimg *x = static_cast<vszimg *>(instanceData);
     x->free(core, vsapi);
     delete x;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/cython/vapoursynth.pyx 
new/vapoursynth-R53/src/cython/vapoursynth.pyx
--- old/vapoursynth-R52/src/cython/vapoursynth.pyx      2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/src/cython/vapoursynth.pyx      2021-04-10 
15:45:19.000000000 +0200
@@ -1,4 +1,4 @@
-#  Copyright (c) 2012-2020 Fredrik Mellbin
+#  Copyright (c) 2012-2021 Fredrik Mellbin
 #
 #  This file is part of VapourSynth.
 #
@@ -70,7 +70,7 @@
   'core', 
 ]
     
-__version__ = namedtuple("VapourSynthVersion", "release_major 
release_minor")(52, 0)
+__version__ = namedtuple("VapourSynthVersion", "release_major 
release_minor")(53, 0)
 __api_version__ = namedtuple("VapourSynthAPIVersion", "api_major 
api_minor")(VAPOURSYNTH_API_MAJOR, VAPOURSYNTH_API_MINOR)
 
 @final
@@ -540,9 +540,7 @@
             error = self.funcs.getError(outm)
             if error:
                 raise Error(error.decode('utf-8'))
-            ret = mapToDict(outm, False, False, NULL, vsapi)
-            if not isinstance(ret, dict):
-                ret = {'val':ret}
+            return mapToDict(outm, True, False, NULL, vsapi)
         finally:
             vsapi.freeMap(outm)
             vsapi.freeMap(inm)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/filters/imwri/imwri.cpp 
new/vapoursynth-R53/src/filters/imwri/imwri.cpp
--- old/vapoursynth-R52/src/filters/imwri/imwri.cpp     2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/src/filters/imwri/imwri.cpp     2021-04-10 
15:45:19.000000000 +0200
@@ -367,6 +367,8 @@
                 writeImageHelper<uint8_t>(frame, alphaFrame, isGray, image, 
width, height, fi->bitsPerSample, vsapi);
             }
 
+            image.strip();
+
             image.write(filename);
 
             vsapi->freeFrame(alphaFrame);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/vspipe/vspipe.cpp 
new/vapoursynth-R53/src/vspipe/vspipe.cpp
--- old/vapoursynth-R52/src/vspipe/vspipe.cpp   2020-08-20 19:48:22.000000000 
+0200
+++ new/vapoursynth-R53/src/vspipe/vspipe.cpp   2021-04-10 15:45:19.000000000 
+0200
@@ -344,7 +344,7 @@
         + " H" + std::to_string(vi->height)
         + " F" + std::to_string(vi->fpsNum) + ":" + std::to_string(vi->fpsDen)
         + " Ip A0:0"
-        + " XLENGTH=" + std::to_string(vi->numFrames) + "\n";
+        + " XLENGTH=" + std::to_string(static_cast<int>(totalFrames - 
startFrame)) + "\n";
 
     if (y4m && outFile) {
         if (fwrite(header.c_str(), 1, header.size(), outFile) != 
header.size()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/vspipe/vspipe.manifest 
new/vapoursynth-R53/src/vspipe/vspipe.manifest
--- old/vapoursynth-R52/src/vspipe/vspipe.manifest      1970-01-01 
01:00:00.000000000 +0100
+++ new/vapoursynth-R53/src/vspipe/vspipe.manifest      2021-04-10 
15:45:19.000000000 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+    <assemblyIdentity type="win32" name="vspipe" version="1.0.0.0"/>
+    <application xmlns="urn:schemas-microsoft-com:asm.v3">
+        <windowsSettings>
+            <longPathAware 
xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings";>true</longPathAware>
+        </windowsSettings>
+    </application>
+</assembly>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vapoursynth-R52/src/vsscript/vsscript.cpp 
new/vapoursynth-R53/src/vsscript/vsscript.cpp
--- old/vapoursynth-R52/src/vsscript/vsscript.cpp       2020-08-20 
19:48:22.000000000 +0200
+++ new/vapoursynth-R53/src/vsscript/vsscript.cpp       2021-04-10 
15:45:19.000000000 +0200
@@ -46,13 +46,13 @@
 static void real_init(void) {
 #ifdef VS_TARGET_OS_WINDOWS
 #ifdef _WIN64
-    #define VS_INSTALL_REGKEY L"Software\\VapourSynth" 
+    #define VS_INSTALL_REGKEY L"Software\\VapourSynth"
 #else
     #define VS_INSTALL_REGKEY L"Software\\VapourSynth-32"
 #endif
 
     // portable
-    const std::wstring pythonDllName = L"python38.dll";
+    const std::wstring pythonDllName = L"python39.dll";
     HMODULE module;
     GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, 
(LPCWSTR)&real_init, &module);
     std::vector<wchar_t> pathBuf(65536);

Reply via email to