![]() |
|
My video - Printable Version +- Selur's Little Message Board (https://forum.selur.net) +-- Forum: Hybrid - Support (https://forum.selur.net/forum-1.html) +--- Forum: Problems & Questions (https://forum.selur.net/forum-3.html) +--- Thread: My video (/thread-4482.html) |
RE: My video - Vhs-Digital-Buddy - 15.09.2026 That is much better. Thank you. Will give it a try. RE: My video - Selur - 15.09.2026 Side note: the initial processing of the script will take quite a while, but the processing should be okay. I'll also look into using SVP or rife instead of mv for the interpolation. (probably tomorrow) RE: My video - Selur - 16.09.2026 using: # Separate branch used only to calculate properties.
stats = core.std.PlaneStats(clip, plane=0)
def set_interp_flag(n, f):
f = f.copy()
use = False
if 0 < n < clip.num_frames - 1:
cur = f.props["PlaneStatsAverage"]
prev = stats.get_frame(n - 1).props["PlaneStatsAverage"]
nxt = stats.get_frame(n + 1).props["PlaneStatsAverage"]
use = cur > prev and cur > nxt
f.props["_UseInterp"] = int(use)
return f
# Input = original frames, prop source = stats
flagged = core.std.ModifyFrame(clip, stats, set_interp_flag)
org = flagged
import filldrops
core.std.LoadPlugin(path="%FILTERPATH%/FrameFilter/RIFE/librife.dll")
clip = filldrops.ReplaceFlagged(flagged, method="rife")Just noticed I forgot to upload the updated filldrops.py I used. => uploaded a new dev which includes it. Cu Selur RE: My video - Vhs-Digital-Buddy - 17.09.2026 Thanks Selur. Been a hectic week. Will have a look over the weekend. RE: My video - Selur - 17.09.2026 Uploaded a new dev with a reworked "filldrops.ReplaceFlagged" which should be a lot faster. ![]() so using: # Separate branch used only to calculate properties.
stats = core.std.PlaneStats(clip, plane=0)
# Calculate which frames need replacing
# A frame is marked for replacement if its average luma is higher than the previous and below the next.
# This way one frame flashes should get detected.
def set_interp_flag(n, f):
f = f.copy()
use = False
if 0 < n < clip.num_frames - 1:
cur = f.props["PlaneStatsAverage"]
prev = stats.get_frame(n - 1).props["PlaneStatsAverage"]
nxt = stats.get_frame(n + 1).props["PlaneStatsAverage"]
use = cur > prev and cur > nxt
f.props["_UseInterp"] = int(use)
return f
# Input = original frames, prop source = stats
flagged = core.std.ModifyFrame(clip, stats, set_interp_flag)
# do the actual replacement of the flagged frames
import filldrops
clip = filldrops.ReplaceFlagged(flagged, method="mv")![]() Remember to also add Denoiser->QTGMC. (Maybe I'll add some ui elements for this into the Hybrid next week.) Cu Selur RE: My video - Vhs-Digital-Buddy - 17.09.2026 That would be great. I've always preferred UI instead of coding. That would help a lot. |