Skip to main content

A CPU-optimized version of nnedi3 for VapourSynth

Project description

Description

znedi3 is a CPU-optimized version of nnedi.

nnedi3 is an intra-field only deinterlacer. It takes a frame, throws away one field, and then interpolates the missing pixels using only information from the remaining field. It is also good for enlarging images by powers of two.

This plugin no longer provides the nnedi3_rpow2 filter. A replacement can be found here: http://forum.doom9.org/showthread.php?t=172652

This is a port of tritical’s nnedi3 filter.

Usage

The file nnedi3_weights.bin is required. It must be in the same directory as nnedi3.

nnedi3.nnedi3(clip clip, int field[, bint dh=False, int[] planes=[0, 1, 2], int nsize=6, int nns=1, int qual=1, int etype=0, int pscrn=2, bint opt=True, bint int16_prescreener=True, bint int16_predictor=True, int exp=0, bint show_mask=False])
Parameters:
clip

Clip to process. It must have constant format and dimensions, and integer samples with 8..16 bits or float samples with 32 bits.

field

Selects the mode of operation. Possible values:

  • 0: Same rate, keep bottom field.

  • 1: Same rate, keep top field.

  • 2: Double rate, start with bottom field.

  • 3: Double rate, start with top field.

If dh is True, the _Field frame property is used to determine each frame’s field dominance. The field parameter is only a fallback for frames that don’t have the _Field property.

If dh is False, the _FieldBased frame property is used to determine each frame’s field dominance. The field parameter is only a fallback for frames that don’t have the _FieldBased property, or where said property indicates that the frame is progressive.

dh

Doubles the height, keeping both fields. If field is 0, the input is copied to the odd lines of the output (the bottom field). If field is 1, the input is copied to the even lines of the output (the top field).

If dh is True, field must be 0 or 1.

Default: False.

planes

Planes to process. Planes that are not processed will contain uninitialised memory.

Default: all.

nsize

Size of the local neighbourhood around each pixel used by the predictor neural network. Possible settings:

  • 0: 8x6

  • 1: 16x6

  • 2: 32x6

  • 3: 48x6

  • 4: 8x4

  • 5: 16x4

  • 6: 32x4

For image enlargement it is recommended to use 0 or 4. A taller neighbourhood will result in sharper output.

For deinterlacing a wider neighbourhood will allow connecting lines of smaller slope. However, the setting to use depends on the amount of aliasing (lost information) in the source. If the source was heavily low-pass filtered before interlacing then aliasing will be low and a wide neighbourhood won’t be needed, and vice-versa.

Default: 6.

nns

Number of neurons in the predictor neural network. Possible values:

  • 0: 16

  • 1: 32

  • 2: 64

  • 3: 128

  • 4: 256

Higher values are slower, but provide better quality. However, quality differences are usually small. The difference in speed will become larger if qual is increased.

Default: 1.

qual

The number of different neural network predictions that are blended together to compute the final output value. Each neural network was trained on a different set of training data. Blending the results of these different networks improves generalisation to unseen data. Possible values are 1 and 2.

A value of 2 is recommended for image enlargement.

Default: 1.

etype

The set of weights used in the predictor neural network. Possible values:

  • 0: Weights trained to minimise absolute error.

  • 1: Weights trained to minimise squared error.

Default: 0.

pscrn

The prescreener used to decide which pixels should be processed by the predictor neural network, and which can be handled by simple cubic interpolation. Since most pixels can be handled by cubic interpolation, using the prescreener generally results in much faster processing. Possible values:

  • 0: No prescreening. No pixels will be processed with cubic interpolation. This is really slow.

  • 1: Old prescreener.

  • 2: New prescreener level 0.

  • 3: New prescreener level 1.

  • 4: New prescreener level 2.

The new prescreener works faster than the old one, and it also causes more pixels to be processed with cubic interpolation. The higher levels cause a bit more pixels to be processed with the predictor neural network, therefore they are slower than the lowest level.

The new prescreener is not available with float input.

Default: 2 for integer input, 1 for float input.

opt

If True, the best optimised functions supported by the CPU will be used. If False, only scalar functions will be used.

Default: True.

int16_prescreener

If True, the prescreener will perform the dot product calculations using 16 bit integers. Otherwise, it will use single precision floats.

This parameter is ignored when the input has float samples.

Default: True.

int16_predictor

If True, the predictor will perform the dot product calculations using 16 bit integers. Otherwise, it will use single precision floats.

This parameter is ignored when the input has more than 15 bits per sample.

Default: True.

exp

The exp function approximation to use in the predictor. 0 is the fastest and least accurate. 2 is the slowest and most accurate.

Default: 0.

show_mask

If True, the pixels that would be processed with the predictor neural network are instead set to white.

Default: False.

Compilation (Linux)

Clone the repository (using the --recursive argument to also dowload the required vsxx library as a submodule):

git clone --recursive https://github.com/sekrit-twc/znedi3

Compile the library:

cd znedi3
make X86=1

To install, copy vsznedi3.so and nnedi3_weights.bin to the vapoursynth plugin folder (usually /usr/lib/x86_64-linux-gnu/vapoursynth/):

sudo cp nnedi3_weights.bin vsznedi3.so /usr/lib/x86_64-linux-gnu/vapoursynth/

There is also a test application which can be built to check the efficiency of the plugin kernels optimized for different SIMD instructions:

make X86=1 testapp/testapp

License

GPLv2.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vapoursynth_znedi3-2.2.tar.gz (13.8 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

vapoursynth_znedi3-2.2-py3-none-win_amd64.whl (13.0 MB view details)

Uploaded Python 3Windows x86-64

vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_x86_64.whl (13.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_aarch64.whl (13.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.9 MB view details)

Uploaded Python 3manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (12.9 MB view details)

Uploaded Python 3manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

vapoursynth_znedi3-2.2-py3-none-macosx_15_0_x86_64.whl (12.8 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

vapoursynth_znedi3-2.2-py3-none-macosx_15_0_arm64.whl (12.7 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

File details

Details for the file vapoursynth_znedi3-2.2.tar.gz.

File metadata

  • Download URL: vapoursynth_znedi3-2.2.tar.gz
  • Upload date:
  • Size: 13.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vapoursynth_znedi3-2.2.tar.gz
Algorithm Hash digest
SHA256 22a3efd7549a7f1e840657ca88fa0d9f1725b9c40e5bc5a957b1b36454b06dbc
MD5 135afdf91bb8076cee0305bd84d12d89
BLAKE2b-256 91c83353353fd5dcda5c1029f0b0f87e6582cee19e8d2f779e9c22bf9b6ba790

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2.tar.gz:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_znedi3-2.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-2.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4dbde8320c1f1d9a8c2a21f87ea4b64ef690f36540086ba6c16aa5a47cc663db
MD5 7e74a6260780217600846fbcc4902300
BLAKE2b-256 5d67c7e950c1374b383b3ba369a9d31e7b5e0a5d1e69d005e2f33a829c00f90d

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2-py3-none-win_amd64.whl:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4c10596cedb7265b1903092857d915a37a056e40ba918048abcf766482968328
MD5 c0cc0c8096c35a9d9af19a75e2d09529
BLAKE2b-256 739346ba76e1b3072924589af0e65cf41a8f4bee4d5f690888e4cdb481fe5486

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_x86_64.whl:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 34d29c4294fd3b6252810a8e26f45f79d71c17593d7091148d8b4dacaff2b2bd
MD5 64707f5435c2e12f578b41844c4ec0fb
BLAKE2b-256 28332f8f688dd0a29ff711a150d568b8c73a607fd309087b5b11e211c4718230

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2-py3-none-musllinux_1_2_aarch64.whl:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6f99d67208dda8497efbd5a9c89b0f793e35b94abb3ec1622d70901e60dfc292
MD5 5984dd3849fe9b24909b81d8635dc484
BLAKE2b-256 f1f2dd42d4cf7db72b4a62d255046525a049bae36e36a46e3b25da1ab24295f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4d9a54de8418347baed5fdb8f76196af31394e463b49484b0e52762430c8a32f
MD5 3683783bdbe6d4c866a06482b7fec825
BLAKE2b-256 51f1395c0222ac446d63747dbf1efc1b2d22d942c9b3b409e0090faff96e6e2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_znedi3-2.2-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-2.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 e2c8a63e36d722de0dba268973f1b40cfd7472bba8021f4c35d0396d2f2088cf
MD5 05609431d7b0b26b61d7eed134a00e72
BLAKE2b-256 9399dd0f83a2dfc00c2b47b887ffe1c7edfeab011e5c9b5bfe96ffc099d19ede

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2-py3-none-macosx_15_0_x86_64.whl:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_znedi3-2.2-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-2.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 75e7703405611fc84e7460836917290c8d5d75972081588927c7e46ac92f07b7
MD5 8ae5394b8b2836089076d07f3729e0c6
BLAKE2b-256 30229915afea8fc630f2ea790074bf289abb0029820c43ca9ea8ea41e70f9043

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-2.2-py3-none-macosx_15_0_arm64.whl:

Publisher: build.yml on vapoursynth/znedi3-pypi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page