VideoHelp Forum




+ Reply to Thread
Page 8 of 8
FirstFirst ... 6 7 8
Results 211 to 214 of 214
  1. 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:
    1. To make videos load faster using AviSynthFilter, leave only one format selected under 'Input formats'.
    2. Your instructions on how to use FB at all are far too difficult to follow, for an average user...
    3. No matter how much I've tried, I can't seem to make it work via VapourSynthFilter :(
    Edit:
    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.

    How to use FrostyBorders in MPC-BE/MPC-HC via AviSynth Filter, for dummies like me:
    1. Download and install AviSynth+ v3.7.3 (video playback never starts with FB on newer versions).
    2. Download and extract AviSynth Filters to a permanent location and run 'install.cmd' as administrator.
    3. Download AddGrainC (and/or neo_f3kdb) and FastBlur and extract them.
    4. Download FrostyBorders and extract it.
    5. Place AddGrainC.dll (and/or neo_f3kdb.dll), FastBlur.dll and FrostyBorders.avsi in C:\Program Files (x86)\AviSynth+\plugins64+.
    6. Create a new file at a permanent location, name it something like "FrostyBorders.avs", for example.
    7. 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)
    8. Replace X and Y in the above script with your display resolution's width and height, respectively; for example "(1920,1080)".
    9. Launch MPC-BE/MPC-HC, go to Options -> External Filters -> 'Add Filter...', select AviSynth Filter and press OK.
    10. Select the newly added AviSynth Filter and tick Prefer to the right of the list
    11. Double-click the AviSynth Filter in the list -> Browse -> navigate to the script you created above -> Open.
    12. Under Input Formats, leave only YV12 or P010 selected, and click OK, then OK again to close Options.
    If you've followed this guide correctly, FrostyBorders should now work in your player!
    Now, is there any chance you could make a guide in a similar format, but for VapourSynth Filter?
    Pretty please! ♥
    Last edited by DwarfRose; 12th Aug 2025 at 12:11. Reason: Added another solution to slow video loading.
    Quote Quote  
  2. 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 Vapoursynth filter should work much the same way, only the script you use to run FrostyBorders must have a vpy extension.
    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"
    and plugins in
    Code:
    "C:\Users\YourUserName\AppData\Roaming\VapourSynth\plugins64"
    The required plugins are listed in the help file.

    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
    For me, the Vapoursynth filter wouldn't run unless I edited the registry to increase the frame buffer. I think TemporalSoften was the culprit there. Increasing it didn't help with the Avisynth filter opening slowly though.
    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
    I've typed everything above without actually testing it as I'm a bit short on time today, but it should be fine. Let me know if that helps.
    Quote Quote  
  3. Thank you so much for the reply!
    I'll try 'making friends' with VapourSynthFilter again using your guide and script :)

    Originally Posted by hello_hello View Post
    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.
    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)
    Are any of the other checks that I use here also included in FrostyBorders?

    Again, thank you so much for creating FrostyBorders and being active! ♥
    Quote Quote  
  4. 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) }
    In the FrostyBorders script, I think FB_IsEqual is only used to check whether the result of a calculation is close enough to an integer to use the integer. Something like:

    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.
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!