Welcome to the documentation for rvsfunc!


A collection of VapourSynth stuff I wrote or mangled to make life easier.

Most of these were because I’m too lazy for my own good, some out of desperation and edgecases. That said, most of them were written with reusability and flexibility in mind. The main goal is to make the functions as flexible as possible, while still trying to keep sane defaults so minimum use should produce nice results. Good luck figuring out which functions you need, docs arrived!

If you spot any issues, you can find me on Discord as @Riven Skaye#0042. You’re also more than welcome to create an issue on GitHub, or make a PR!

rvsfunc.batchindex(paths, source_filter, show_list=False, **src_args)

Index sources in batch, provide a list of files to index.

Simple lazy function. Takes a path or a list of paths, indexes them and then frees the memory before returning on success. If you happen to get any errors or exceptions, this will just raise the same thing again.

  • paths (Union[List[str], str]) – A single path as a string or a List of paths.

  • source_filter (Callable[..., VideoNode]) – The source filter or indexer method to call. If it doesn’t write, make sure to get the list of indexes using show_list.

  • show_list (bool) – If this is set to True, this function returns the results of source_filter(path) for every path in paths. Might be useful for batches as well as it would just return every vs.VideoNode returned by the calls to source_filter.

  • src_args (Dict[str, Any]) – Any additional keyword args will be forwarded to to the source filter as provided.

Return type



alias of NNEDI3


alias of NNEDI3CL


alias of ZNEDI3

Documentation for individual modules can be found to the left.


rvsfunc requires a couple other things to work properly:

Each of these dependencies may have their own dependencies, it is not my responsibility to maintain an exhaustive list. Typically any dependencies will be available on free platforms like GitHub or GitLab, or they can be found on the doom9 forums.


An effort will be made to keep minor updates compatible, though internals and defaults may change without warning. There are no guarantees being made with regards to the exposed (sub)modules, functions, names and aliases. In the case of major and/or breaking changes, the affected versions will be listed on the relevant PyPI page and in the README.md available on Github One should expect any non-patch upgrade to come with the risk of breakage.