![]() |
|
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 - Selur - 14.09.2026 Will look at it when I'm back home. Cu Selur RE: My video - Vhs-Digital-Buddy - 14.09.2026 Really appreciate all your help. RE: My video - Vhs-Digital-Buddy - 14.09.2026 (14.09.2026, 04:11)Selur Wrote: What happens if you tell Hybrid, that your source is tff instead of progressive? The figures still look ghostly, and it added some extra flashes about in the middle to slight below middle of the screen, which were not there before. RE: My video - Selur - 14.09.2026 Okay, the source seems to be field-shifted not interlaced. (so a field matcher like tfm or vfm should be used) Also, this probably needs some custom scripting. ![]() I'm looking at it to see whether I can come up with something, but no promisses. Cu Selur RE: My video - Selur - 14.09.2026 Try the following:
(the full script I used: https://pastebin.com/qtGMck0Z ; you can compare it to your Vapoursynth Script View) Here's the clip I got as output for segment3. It probably should also take scene changes into account, but I really like the result. Cu Selur RE: My video - Vhs-Digital-Buddy - 14.09.2026 Hi Cu Selur, I just had a look at the clip. First 24 seconds looks really good, but then at 25 seconds onwards it stutters here and there and it flashes. RE: My video - Selur - 14.09.2026 Yeah, not perfect; the scene changes are the problematic part. Will look at it some more tomorrow, and think about on how scene changes need to be considered. ![]() (got 13hr work days atm., so not much time to tinker with it) Cu Selur RE: My video - Vhs-Digital-Buddy - 14.09.2026 Really appreciate your efforts. Thanks so far. RE: My video - Selur - 15.09.2026 try: clip = core.std.PlaneStats(clip, plane=0)
def set_interp_flag(n, f):
f = f.copy()
mics = f.props.get("TFMMics")
use = (
mics is not None
and len(mics) >= 4
and (mics[4] < 256 or f.props.get("PlaneStatsMax") > 250)
and (mics[0] == 256 or mics[1] == 256 or (mics[3] == 256)
and (f.props.get("PlaneStatsMax") > 236))
)
f.props["_UseInterp"] = 1 if use else 0
return f
flagged = core.std.ModifyFrame(clip, clip, set_interp_flag)
clip = flagged
import filldrops
clip = filldrops.ReplaceFlagged(flagged,method="mv")Cu Selur RE: My video - Selur - 15.09.2026 Just looking at the average luma compared to the neighbors # 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
clip = filldrops.ReplaceFlagged(flagged, method="mv")clip3 Cu Selur |