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-3.0.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-3.0-py3-none-win_amd64.whl (13.2 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

vapoursynth_znedi3-3.0-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-3.0-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-3.0-py3-none-macosx_15_0_x86_64.whl (12.8 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

vapoursynth_znedi3-3.0-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-3.0.tar.gz.

File metadata

  • Download URL: vapoursynth_znedi3-3.0.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-3.0.tar.gz
Algorithm Hash digest
SHA256 ba02fdd1e3b7ea958f9af6cddec7b3a3b7370b98974f44a2fcccfa440c71d3a6
MD5 67e0258d56cbce9a36de9f0dacecde60
BLAKE2b-256 65eda85a386e0c809da8f1a614fe58fa99eaab4ddc6d0df7601ec6a077c84ebd

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0.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-3.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 30276b42139f9db705151e67a0138f2df155602033ea08f80caebb8254ebab99
MD5 e38ca6ba2de2b2fafcf2e5d60abaf07a
BLAKE2b-256 61a82658830b9eca91938dbeafe87ec7a799e9e1f14079357654951606bb73a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0-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-3.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-3.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73eb0bc00f72080354bd47d9d2849eff3685f75c196f791d26e204c818a87572
MD5 bb2f18b86a49cc2e34cea792846f11b6
BLAKE2b-256 01464b35c8d119c82cd2dcb2c0bf7c01487a93ceb06bfc0291cca5c6604a43da

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0-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-3.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-3.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6a8566b698673277e44866cc38f46dc6f57ed72ee711c20391e4f7b1e647c345
MD5 e000323be5156119e398c2ff81903fef
BLAKE2b-256 2e24ee731728bbe32b9dcc353b9bfc9ea0998d427a84f487cc730af646593a4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0-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-3.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-3.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7349cefec1b279643d84e1c1958e0ecda1993cc450299928c4858ec3ed0d412e
MD5 e9597bf486ddb36042f0b7cf13d9bd12
BLAKE2b-256 db74ed47347ff12332c449f8586ef04fc50b0ede64153a07a4afa29c72b8aee1

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0-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-3.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-3.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2a4fcf062b8b7f873f73f2437058f9e13d4d101ae633c393f5670849483eab4b
MD5 26c24e4a8b9410fa4f91c0f3a8c3ffa9
BLAKE2b-256 26e1d7bbc007dd7c7b9ef598a292cc48e44a4bfec2933c7260aff0bea92c8b14

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0-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-3.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-3.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1d363bb1fdc8d87e25605129a30078339cf7bd7fea82dac984976366f013b573
MD5 685b2e940ba104b59bd9b5faab6acc15
BLAKE2b-256 7a4d62f4666bb023b4fcb3aa5ea10535eeaea3ce117618bb18e9278e7c2cbdc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0-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-3.0-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for vapoursynth_znedi3-3.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9302ad3f75892ecf9b04c1c0e3ab828868c64a0e1c2e24d17415c69051e95fda
MD5 b21d9f1e016386c48aba752b1e97efd8
BLAKE2b-256 2ebb85e34b98943ab50f68fd561dd8bdc281ca7365e0294b5ba678e8468fbb12

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_znedi3-3.0-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