{"id":20797538,"url":"https://github.com/rlaphoenix/pvsfunc","last_synced_at":"2025-10-24T00:50:19.006Z","repository":{"id":62578386,"uuid":"231387162","full_name":"rlaphoenix/pvsfunc","owner":"rlaphoenix","description":"PHOENiX's compilation of VapourSynth Script's and Functions","archived":false,"fork":false,"pushed_at":"2023-03-30T14:22:04.000Z","size":255,"stargazers_count":27,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T09:04:57.957Z","etag":null,"topics":["vapoursynth","vapoursynth-functions"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rlaphoenix.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-02T13:26:04.000Z","updated_at":"2025-01-03T13:01:05.000Z","dependencies_parsed_at":"2024-11-17T16:36:55.633Z","dependency_job_id":"9a8d0bac-e193-448b-9467-86e81a9b839c","html_url":"https://github.com/rlaphoenix/pvsfunc","commit_stats":{"total_commits":334,"total_committers":4,"mean_commits":83.5,"dds":0.3532934131736527,"last_synced_commit":"f44039e68c62e26522fd3151046872ad3d96f6e3"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlaphoenix%2Fpvsfunc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlaphoenix%2Fpvsfunc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlaphoenix%2Fpvsfunc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlaphoenix%2Fpvsfunc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rlaphoenix","download_url":"https://codeload.github.com/rlaphoenix/pvsfunc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252746922,"owners_count":21798049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["vapoursynth","vapoursynth-functions"],"created_at":"2024-11-17T16:34:21.721Z","updated_at":"2025-10-24T00:50:13.966Z","avatar_url":"https://github.com/rlaphoenix.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pvsfunc\n\npvsfunc (PHOENiX's VapourSynth Functions) is my compilation of VapourSynth Scripts, Functions, and Helpers.\n\n[![Build Tests](https://github.com/rlaphoenix/pvsfunc/actions/workflows/ci.yml/badge.svg)](https://github.com/rlaphoenix/pvsfunc/actions/workflows/ci.yml)\n[![License](https://img.shields.io/github/license/rlaphoenix/pvsfunc?style=flat)](https://github.com/rlaphoenix/pvsfunc/blob/master/LICENSE)\n[![DeepSource](https://deepsource.io/gh/rlaphoenix/pvsfunc.svg)](https://deepsource.io/gh/rlaphoenix/pvsfunc)\n[![Issues](https://img.shields.io/github/issues/rlaphoenix/pvsfunc?style=flat)](https://github.com/rlaphoenix/pvsfunc/issues)\n[![PR's Accepted](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat)](https://makeapullrequest.com)\n\n## Installation\n\nInstall [VapourSynth] first! (this is different to the pypi/pip `vapoursynth` python wrapper!)\n\n    pip install --user pvsfunc\n\nDone! However, there are further dependencies listed below that you may need to install depending on the classes you\nintend to use, and your use-case. Don't forget to install them if needed!\n\n  [VapourSynth]: \u003chttps://www.vapoursynth.com/doc/installation.html\u003e\n\n## Building\n\nBuilding from source requires [Poetry](https://python-poetry.org).  \nSimply run `poetry install` or `poetry build` for distribution wheel and source packages.\n\n## PD2V\n\nPD2V has been moved to its own repository and renamed MPGG, \u003chttps://github.com/rlaphoenix/mpgg\u003e.\n\n## PLS\n\nConvenience class for working with L-SMASH-WORKS LWI project files. Includes source loading and deinterlacing.\nMore features are to be implemented in the future once a Python-based LWI project parser is available.\n\nRefer to PD2Vs example usage as it's very similar to how PLS is used.\n\n### Dependencies\n\n- [lsmash] (core.lsmas) VapourSynth plugin\n- [mkvmerge] Only required if input file has a container-set frame rate that differs to the encoded frame rate\n\nTo install [lsmash] it's as simple as `vsrepo install lsmas` on Windows. Other Operating System user's know the drill,\ngo check your package repository's or compile it yourself.\n\nMake sure [mkvmerge] is available on your environment path and has execution permissions. Note Linux Users: Add to\nsystem profile path, not terminal/rc path.\n\n  [mkvmerge]: https://mkvtoolnix.download\n  [lsmash]: https://github.com/VFR-maniac/L-SMASH-Works\n\n## PDebox\n\nLightweight class to apply de-boxing based on an output aspect-ratio. Similar scripts would annoyingly want you to\njust crop in yourself which is incredibly annoying.\n\n## PDecimate\n\nDecimate (delete) frames in a specified pattern using cycle and offsets. This is typically used for Inverse-Telecine\npurposes.\n\nDecimation may often be done for IVTC purposes to remove constant pattern pulldown frames.\n\n## PKernel\n\nKernel storage class for any custom Deinterlacing kernels I'm working on or tinkering with that you may want to use.\nJust know that they are most likely not the type of deinterlacing you may expect, as it's generally a playground for\nlooking into strange tactics of deinterlacing.\n\n### VoidWeave\n\nVoidWeave is a deinterlacing method involving in-painting with machine-learning.\n\nIt takes footage and separates the weaved fields so that each field is full-height with the missing data of the field\nbeing 255 RGB green instead of empty/black. The in-painting machine-learning system would then in-paint the missing\ndata wherever it finds the 255 RGB Green pixels. It works quite well as YUV 4:2:0 DVD data doesn't seem to ever reach\n255 green though it does get close, but never quite 255.\n\nI tested it on a Live Action DVD and the results were honestly outstanding! The time it took to run the in-painting\nwas about the same as QTGMC on Very Slow, with similar results! I think where this method may really shine is with\nCartoon/Animated sources as QTGMC does not do them well.\n\nIt all still requires a lot more testing, but it looks like it could be a really nice method! Especially now that I've\nlearned Disney has also been working on it around the same tim, back in 2020 :P\n\n## License\n\n© 2020-2023 rlaphoenix — [GNU General Public License, Version 3.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlaphoenix%2Fpvsfunc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frlaphoenix%2Fpvsfunc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlaphoenix%2Fpvsfunc/lists"}