This page may be outdated, but the releases page on Github should always be up-to-date.
lvsfunc now requires Python 3.10 and VapourSynth 58!
setup.py updates, should now show extra info on pypi
Lots of docstrings updated to include additional information and warnings
Add shields to README
Create unittests for most lvsfunc functions
Move around certain functions (mainly to types and util)
denoise renamed to noise. Temporary alias still exists.
Returns a TransferCharacteristics based on a given matrix.
A wrapper around the graining plugin, chickendream, a plug-in that implements a realistic film grain generator.
Separated functionality from check_variable into their own functions. check_variable still checks both.
New custom exceptions. Please check [the documentation for a full list](https://lvsfunc.encode.moe/en/latest/submodules/exceptions.html).
All masking functions now automatically limit their output (This means no weird masking shenanigans because of out-of-range values)
get_matrix: New option to return types.Matrix instead of an int. This will at some point become the default behaviour.
tivtc_vfr: Should now properly allow users to do an analysis pass without erroring (See: #90. Thanks @Setsugennoao and @RivenSkaye!)
tivtc_vfr: mode=4 during the analysis pass can now be overridden
ssim_downsample: Automatically determine curve if None is passed
taa: Fix the wrong width being passed
overlay_sign: Fix float clip range issues
Remove the following aliases: misc.get_matrix, misc.replace_ranges, misc.scale_thresh, recon.ChromaReconstruct, recon.crecon, recon.demangle.
A lot of other minor changes and fixes
- Move the following functions to util:
- Move the following types to types:
Fix docs building
Remove decorators in favour of a simple function. This makes the docs build again, and will be a bit easier to maintain myself.
Add some missing functions to the docs
Set all the outputs per submodule (__all__). This means that if you were relying on lvsfunc to import your vsutil functions, stop it. Just import vsutil.
Changed some ALLCAPS function names to camel case. These will remain for the time being, but be deprecated before 0.5.0.
@Setsugennoao’s implementation of vinverse
- kernels (#91)
Add a lot of new kernels. See the documentation for a full list.
- get_kernel and get_all_kernels
This should allow for developers using the lvsfunc kernel setup to allow its users to fall back on strings.
Checks whether the clip has a variable format or resolution, and returns an error if so. Replaces the decorators.
WIP scaling function that mimics some of the ideas of insaneAA while trying to limit the amount of damage caused by its default options. This should also be easier to modify to your needs.
Ported over the module floating around to use lvsfunc functions and style. Has the added ref parameter as well.
Use lambdas or None for params where necessary
decomb: Use lvsfunc.deinterlace.vinverse instead of havsfunc.vinverse
stack_planes: Fix split call referencing comparison.split
upscaled_sraa: Generalize supersampler param (#89)
vsdpir: Fix error on non mod8 clips (#88)
unsharpen: Add GRAY support
TIVTC_VFR: Add main file name to output filenames
Multiple functions: Add string support for calling kernels
masked_dha: Add ref param
replace_ranges: Call Remap plugin if possible
Other minor updates I forgot about
SIVTC, TIVTC_VFR: both use camel case now. The FULLCAPS calls will be support for the time being, but support will be dropped before 0.5.0.
Other miscellaneous fixes and speed-ups
Docstring and typing updates
Remaining ports to APIv4.0
Simple descaling wrapper for interwoven upscaled fields.
muvsfunc.ssim_downsample rewrite taken from a Vardë gist. Unlike muvsfunc’s implementation, this function also works in float and does not use nnedi3_resample.
A filter that gives a mathematically perfect solution to fades made after telecining (which made perfect IVTC impossible). This is an improved version of the Fix-Telecined-Fades plugin that deals with overshoot/undershoot by adding a check.
Wrapper to overlay a logo or sign onto another clip. Rewrite of fvsfunc.InsertSign.
Easy wrapper to descale to SharpBicubic and an additional kernel, compare them, and then pick one or the other.
Companion function to go with comparative_descale to reupscale the clip for descale detail masking.
A new detail mask aimed at preserving as much detail as possible within darker areas, even if it winds up being mostly noise.
Purely visual tool to view telecining cycles.
Very simple bobbing function. Shouldn’t be used for regular filtering, but as a very cheap bobber for other functions.
Deinterlacing function for interlaced credits (60i/30p) on top of telecined video (24p). This is a combination of havsfunc’s dec_txt60mc, ivtc_txt30mc, and ivtc_txt60mc functions. The credits are interpolated and decimated to match the output clip.
Diff’d unsharpening function. Performs one-dimensional sharpening as such: “Original + (Original - blurred) * Strength”. It then merges back noise and detail that was prefiltered away,
kernels.lanczos: Set taps to use the default zimg amount
all named kernels: Default values added to docstring, allowing for easy checking what values are passed
all kernels: Add resample and shift methods
based_aa: Fix sclip, new lmask, tff param, set ssim_downsample as default downscaler
vsdpir: Now uses vs-mlrt instead of vs-dpir internally, allowing users to force tensorrt usage
Update required packages
Other miscellaneous fixes and speed-ups
Docstring and typing updates
APIv4.0 fixes (turns out I had a few things to change…)
As the name implies, this is a based anti-aliaser. Thank you, based Zastin. This relies on FSRCNNX being very sharp, and as such it very much acts like the main “AA” here.
Forcibly clamps the given value x to a max and/or min value.
- fun submodule for dumb stuff
These additions will be excluded from future changelogs.
Kernel inspired by a Didée post. See: https://forum.doom9.org/showthread.php?p=1748922#post1748922.
vsdpir: Fix matrix=None behaviour, add a check for clip format, add a vsdpir version check, kwargs, etc.
masked_dha: Fix darkstr range
diff: Overloading, add exclusion_ranges and return_ranges
aa functions: Change shifting kernel from Spline36 to Catrom
tivtc_vfr: Add decimation parameters (see docstrings for further info), allow overriding of hybrid and vfrDec for tdec,
deblend: Add start option, decimation options
decomb: Remove sharpen arg, individual kwargs for specific operations, replace vinverse plugin with havsfunc’s Vinverse
source: Add mp4 handling
Other changes and fixes I probably forgot about.
Notices I forgot to leave a warning for it in this version, but dir_deshimmer and dir_unsharp will no longer be support in the next version. If you’re using them, first of all why, and second, you’ll want to update your scripts.
Woke up to not needing to update anything for APIv4! o/
Minor typo fixes
- Deprecation warnings added to certain functions. The following functions are deprecated and will be removed for v0.4.0:
- Future warnings added to certain functions. The following functions will likely receive an extensive rewrite in a future commit:
detail_mask ([see branch](https://github.com/Irrational-Encoding-Wizardry/lvsfunc/tree/detail_mask_rewrite))
A simple vs-dpir wrapper for convenience. Converts to RGB -> runs vs-dpir -> converts back to original format.
A combination of the best of DeHalo_alpha and BlindDeHalo3, plus a few minor tweaks to the masking. Adopted from G41Fun.
New padding utility function. Pads out the pixels on the side by the given amount of pixels.
Force output to fit a specific MOD. Minimum returned value will always be mod².
Full-range scale function that scales a value from [0, 255] to [0, peak]
Remove unnecessary chroma params
Add float 32bit step
- Revert vsdpir as hard-dependency.
This dependency was removed from the requirements.txt due to it forcing you to install the pytorch library, which is positively massive. If you want to use autodb_dpir, you should pip install vsdpir yourself.
Minor typehinting updates
Minor internal call changes
A rewrite of fvsfunc.AutoDeblock that uses vspdir instead of dfttest to deblock.
Thanks @Ichunjo, @louis3939, @Setsugennoao for helping out!
A function that attempts to deemphasize ringing common to SD video signals resulting from a playback device in the transfer chain poorly compensating for pre-emphasis baked into the source signal.
New IntEnum Matrix class to represent matrix coefficients following ITU-T H.265 Table E.5
Add render export (#61)
Remove duplicate progress callback
Remove Kirsch as a dependency, replace with Prewitt
Free filter, should no longer require a forced preview refresh
Add pattern frameprop
Wrapper for performing TFM and TDecimate on a clip that is supposed to be VFR, including generating a metrics/matches/timecodes txt file.
Generate a mask using an ass script, such as for dehardubbing AoD with CR DE.
- Functions with progress bars
Update progress method, running them will probably be faster now
Add progress param: String to use for render progress display.
Fix a bug where it tried to read timecode information from clips that didn’t have any
Updated various error messages to use the correct function names
Couple README updates, disclaimer about unstable API included
Typing fixes in util
Minor docstring corrections
Rewrite. It now uses a mask.BoundingBox instead of kagefunc.squaremask and you can no longer wipe two separate rows/columns at once anymore.
Moved to util (still accessible through misc and lvsfunc.rfs, but the former will be deprecated at some point in the future)
Allow for negative and nonetype inputs (for a more apt description, check the docstring)
Moved to util (still accessible through misc, but that will be deprecated at some point in the future)
Fix bug where strength would not be used properly
Import dehalo submodule in __init__ (oops)
Add sigmaS_final and sigmaR_final parameters. By default sigmaS_final will be 1/3rd of sigmaS, and sigmaR_final will be the same as sigmaR. For more information, consult the docstrings
Add named Bicubic kernels (BSpline, Hermite, Mitchell, Catrom, BicubicSharp, RobidouxSoft, Robidoux, RobidouxSharp)
- Add a keyframe generator (render.find_scene_changes)
Outputs a list of scenechanges determined by wwxd, scxvid, frames only found by both, or frames found by either
Updates to functions:
- Update dehalo.bidehalo
Remove masking, this is now up to the user to handle
Fix bug where float clips would error because bilateral can’t handle them
Fix a bug where the improper Matrix params would be passed (int to str param instead of int param which would break clips if you used ref)
This is the bottom of the changelogs. lvsfunc was undocumented before this version.