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);
