JincResize

From Avisynth wiki
Revision as of 22:45, 13 January 2022 by Asd (Talk | contribs)

Jump to: navigation, search
Abstract
Author innocenat, Kiyamou, Asd-g
Version v2.1.0
Download JincResize
Category Resize
License MIT
Discussion Doom9 Thread

Contents

Description

Jinc (EWA Lanczos) resampling plugin for AviSynth 2.6/AviSynth+.
JincResize v1.0.0 and greater is a port of the VapourSynth JincResize filter with SSE / AVX Intrinsics taken from the original JincFilter by innocenat.


JincResize includes 5 functions:

  • JincResize is the main filter.
  • Jinc36Resize is an alias for JincResize(tap=3).
  • Jinc64Resize is an alias for JincResize(tap=4).
  • Jinc144Resize is an alias for JincResize(tap=6).
  • Jinc256Resize is an alias for JincResize(tap=8).


Requirements


Syntax and Parameters

JincResize (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height", int "quant_x", int "quant_y", int "tap", float "blur", string "cplace", int "threads", int "opt")
Jinc36Resize (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height", int "quant_x", int "quant_y", string "cplace", int "threads")
Jinc64Resize (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height", int "quant_x", int "quant_y", string "cplace", int "threads")
Jinc144Resize (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height", int "quant_x", int "quant_y", string "cplace", int "threads")
Jinc256Resize (clip, int target_width, int target_height, float "src_left", float "src_top", float "src_width", float "src_height", int "quant_x", int "quant_y", string "cplace", int "threads")


clip   =
A clip to process. All planar formats are supported.


int   =
target_width: the width of the output.


int   =
target_height: the heightof the output.


float  src_left = 0.0
Cropping of the left edge.


float  src_top = 0.0
Cropping of the top edge.


float  src_width = Source width
If > 0.0 it sets the width of the clip before resizing.
If <= 0.0 it sets the cropping of the right edges before resizing.


float  src_height = Source height
If > 0.0 it sets the height of the clip before resizing.
If <= 0.0 it sets the cropping of the bottom edges before resizing


int  quant_x = 256
int  quant_y = 256
Controls sub-pixel quantization.
Must be between 1 and 256.


int  tap = 3
Corresponding to different zero points of Jinc function.
Must be between 1 and 16.
This parameter is for JincResize() only.


float  blur = 0.0
Blur processing, it can reduce side effects.
To achieve blur, the value should more than 0.0.
Must be between 0.0 and 10.0. Default: 0.0.
This parameter is for JincResize() only.


string  cplace =
The location of the chroma samples.
MPEG1 : Chroma samples are located on the center of each group of 4 pixels.
MPEG2 : Chroma samples are located on the left pixel column of the group.
topleft : Chroma samples are located on the left pixel column and the first row of the group.
Default : If frame properties are supported and frame property "_ChromaLocation" exists - "_ChromaLocation" value of the first frame is used. If frame properties aren't supported or there is no property "_ChromaLocation" - "MPEG2".


int  threads = 0
How many logical processors are used.
  • 0 : Maximum logical processors are used.
Default: 0.


int  opt = -1
Controls the used CPU optimizations.
  • -1 : Auto-detect without AVX-512.
  • 0 : Use C++ code.
  • 1 : Use SSE4.1 code.
  • 2 : Use AVX2 code.
  • 3 : Use AVX-512 code.
Default: -1.
This parameter is for JincResize() only.


Examples

Upscale to 1920x1080:

AviSource("Blah.avi")
Jinc36Resize(1920, 1080)  # same as JincResize(1920, 1080, tap=3) or JincResize(1920, 1080)
Jinc64Resize(1920, 1080)  # same as JincResize(1920, 1080, tap=4)
Jinc144Resize(1920, 1080) # same as JincResize(1920, 1080, tap=6)
Jinc256Resize(1920, 1080) # same as JincResize(1920, 1080, tap=8)


Changelog

Version      Date            Changes
v2.1.0 2021/08/29 - Added parameter cplace. - Changed omp parallel execution to C++17 parallel execution (better speed).
v2.0.2 2021/03/28 - Fixed output for SIMD and threads > 1.
v2.0.1 2020/12/24 - Used MSVC instead Intel C++ for faster binaries.
v2.0.0 2020/12/23 - Added OpenMP support to main processing loops. (DTL2020) - Added parameter 'threads'.
v1.2.0 2020/12/13 - AVX-512 code is not used as default when AVX-512 CPU instructions are available. - Fixed AVX-512 output. - Prevent 'nan' values for the float input (SIMD). - Fixed JincXXXResize parameters 'quant_x' and 'quant_y' when called by name.
v1.1.0 2020/07/02 - Added AVX-512 code.
v1.0.1 2020/06/11 - Fixed the 8..16-bit output for C++ routine.
v1.0.0 2020/06/10 - Initial release - Port of the VapourSynth JincResize
r44 2014/09/20 - Latest revision r44 (@0cd502a) - More correct calculation on quantized pixel - Fixing some memory leak - Implement basic downscaling support. - Better memory performance - Cleanup + const qualify more variable - x64 binary - Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++
v0.2 2014/07/27 - Core rewritten to use quantized lookup table for coefficient. - Support SSE2, SSE3, AVX2 and FMA3. - Basically, MUCH faster. - Add Jinc144Resize which is 6-tap filter. - Add quant_x, quant_y, and version parameters.
v0.1.1 2013/11/26 - Binary is now compile with ICC14 - More optimized code, should run much faster. Thanks to tp7 and others for optimization tips.
v0.1 2013/11/26 - Initial release


Archived Downloads

Version Download Source code
r44 jincresize_r44.zip
Mirror
jinc-resize-master.zip
v0.2 JincResize.dll jinc-resize-0.2.zip
v0.1.1 JincResize.dll jinc-resize-0.1.1.zip
v0.1 JincResize.dll jinc-resize-0.1.zip


External Links

  • GitHub - Source code repository (original).
  • GitHub - Source code repository (update).
  • GitHub - Source code repository (VapourSynth version).




Back to External Filters

Personal tools