First of all, I wish to thank you very very much for creating FrostyBorders, it's been a literal lifesaver for my ultrawide OLED display when watching non-ultrawide content! I think it looks (and works) far better than SVP4's "Black Bars Outer Lighting" option, personally. The only thing I know of that can compete with FrostyBorders, is the "Ambient light for YouTube" browser plugin.
Having said that, I have a few remarks:Edit:
- To make videos load faster using AviSynthFilter, leave only one format selected under 'Input formats'.
- Your instructions on how to use FB at all are far too difficult to follow, for an average user...
- No matter how much I've tried, I can't seem to make it work via VapourSynthFilter :(
To make videos load even faster:
- Use 'GPlugin=0' (none) - the fastest.
- Use 'GPlugin=1' (AddGrainC) - slightly slower.
- Use the oldest version of 'neo_f3kdb' ('GPlugin=2') that works; recent versions seem to increase video loading time.
After literal weeks of figuring out how to make FB even work at all in the first place - I've compiled a small guide, which would hopefully help others like myself in the future. Some of this is not explained in the FrostyBorders Help file or this thread, so I had to figure it out on my own.
Now, is there any chance you could make a guide in a similar format, but for VapourSynth Filter?How to use FrostyBorders in MPC-BE/MPC-HC via AviSynth Filter, for dummies like me:If you've followed this guide correctly, FrostyBorders should now work in your player!
- Download and install AviSynth+ v3.7.3 (video playback never starts with FB on newer versions).
- Download and extract AviSynth Filters to a permanent location and run 'install.cmd' as administrator.
- Download AddGrainC (and/or neo_f3kdb) and FastBlur and extract them.
- Download FrostyBorders and extract it.
- Place AddGrainC.dll (and/or neo_f3kdb.dll), FastBlur.dll and FrostyBorders.avsi in C:\Program Files (x86)\AviSynth+\plugins64+.
- Create a new file at a permanent location, name it something like "FrostyBorders.avs", for example.
- Paste the following, most basic script into it, just to make it work for now; you can add more functionality to it later:
Code:AvsFilterSource() FrostyBorders(X,Y)- Replace X and Y in the above script with your display resolution's width and height, respectively; for example "(1920,1080)".
- Launch MPC-BE/MPC-HC, go to Options -> External Filters -> 'Add Filter...', select AviSynth Filter and press OK.
- Select the newly added AviSynth Filter and tick Prefer to the right of the list
- Double-click the AviSynth Filter in the list -> Browse -> navigate to the script you created above -> Open.
- Under Input Formats, leave only YV12 or P010 selected, and click OK, then OK again to close Options.
Pretty please! ♥
+ Reply to Thread
Results 211 to 214 of 214
-
Last edited by DwarfRose; 12th Aug 2025 at 12:11. Reason: Added another solution to slow video loading.
-
DwarfRose,
I haven't run the Vapoursynth version of FrostyBorders in MPC-HC for quite a while as I'm on Linux so I'm running it via SMPlayer/MPV instead, so this is from memory.....
For the Avisynth version, I think it'd be a good idea to use this script instead of the one you posted, as if borders don't need to be added it'll bypass Avisynth entirely. The FB_IsEqual function is included in FrostyBorders. Substitute your monitor's resolution in pixels for X and Y.
Code:AvsFilterSource() clip = last W = width(clip) H = height(clip) IsAspectEqual = FB_IsEqual(float(W)/float(H), float(X)/float(Y)) if (!IsAspectEqual) { FrostyBorders(clip, X,Y) } else { AvsFilterDisconnect() }
The FrostyBorders function itself should be in whatever location it needs to be so it can be automatically imported. On Windows (not a portable install of VapourSynth) I've been putting functions in
Code:"C:\Users\YourUserName\AppData\Roaming\Python\Python313\site-packages"
Code:"C:\Users\YourUserName\AppData\Roaming\VapourSynth\plugins64"
Code:import vapoursynth as vs core = vs.core import FrostyBorders as fb clip = VpsFilterSource W = clip.width H = clip.height IsAspectEqual = fb.FB_IsEqual(W/H, X/Y) if not IsAspectEqual: fb.FrostyBorders(clip, X,Y).set_output() else: VpsFilterDisconnect = True
Adding the "InitialSrcBuffer" registry entry with a value of 6 seemed to do the trick.
https://github.com/CrendKing/avisynth_filter/wiki/Configuration
You should be able to save this as a reg file and import it into the registry if it's easier.
Code:Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\AviSynthFilter\VapourSynth Filter] "InitialSrcBuffer"=dword:00000006
Avisynth functions Resize8 Mod - Audio Speed/Meter/Wave - FixBlend.zip - Position.zip
Avisynth/VapourSynth functions CropResize - FrostyBorders - CPreview (Cropping Preview) -
Thank you so much for the reply!
I'll try 'making friends' with VapourSynthFilter again using your guide and script :)
Oh! I didn't realize that FB could already check for that, thank you!
I only shared that script as part of the guide as it's the most basic stuff that's required for FB to even run at all, which wasn't obvious to me, so I assumed it wouldn't be obvious to others using AviSynthFilter for the first time.
Otherwise, I'm already doing the same thing you suggested, but differently, in the script that I personally use.
I also check for other stuff, such as whether the video is vertical or smaller than the lowest reasonable resolution:
Code:AvsFilterSource() srcW = Width() srcH = Height() # Determine the video's aspect ratio ar = Float(srcW) / Float(srcH) # Check if the video already has an aspect ratio of 2.39:1 tolerance = 0.01 isCinematic = Abs(ar - 2.39) < tolerance # Check if the video is vertical isVertical = srcH >= srcW # Check if the video is too small isSmall = srcH < 480 # If either, do '?', else do ':' ( isCinematic || isSmall || isVertical) \ ? AvsFilterDisconnect() \ : FrostyBorders(3440, 1440, Feather=32, StaticT=false, GPlugin=2)
Again, thank you so much for creating FrostyBorders and being active! ♥ -
The IsEqual function is used in a few places in the FrostyBorders and CropResize scripts to prevent them cropping unnecessarily due to floating point math often only being accurate to about 4 decimal places. It can be an issue when resizing anamorphic sources to non-anamorphic dimensions.
Not a real world example, but it's possible that after any cropping, the width could be calculated to be resized to something like 703.999997453 pixels instead of exactly 704, causing the function to apply additional cropping so it can be resized to 700 instead. That sort of thing....
The IsEqual function isn't as tolerant as the calculation in your script though, so you might prefer to leave it as you're currently doing it.
Code:function FB_IsEqual(Val1, Val2) { return (abs(Val1 - Val2) < 0.00005) }
X = float(Y) / float(Z)
X = FB_IsEqual(round(X), X) ? round(X) : X
I can't think of anything else you might need. If you still can't get the Vapoursynth filter to work post back and I'll help if I can.Avisynth functions Resize8 Mod - Audio Speed/Meter/Wave - FixBlend.zip - Position.zip
Avisynth/VapourSynth functions CropResize - FrostyBorders - CPreview (Cropping Preview)
Similar Threads
-
AudioSpeed & AudioMeter/AudioWave scripts
By hello_hello in forum AudioReplies: 21Last Post: 25th Sep 2022, 01:35 -
ffmpeg script
By loa909 in forum Newbie / General discussionsReplies: 2Last Post: 2nd Nov 2018, 11:15 -
Need a particular 3D avisynth script
By mazinz in forum Video ConversionReplies: 8Last Post: 25th Feb 2018, 04:55 -
SW Script
By suadnovic in forum SubtitleReplies: 2Last Post: 30th Nov 2016, 10:13 -
Best possible AviSynth Script
By Suwadith in forum Video ConversionReplies: 31Last Post: 10th Sep 2015, 06:43