Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
![]() |
#1 | Link |
Registered User
Join Date: Aug 2012
Posts: 199
|
Continuity Fixer for VapourSynth
I ported Continuity fixer to vapousynth about a month ago.
For those who don't know this avs filter, it help repairing damaged borders of video frames, often used for inverse kernel downscaling when you have some dead pixel at the borders. I moved the code to github just because, you'll find all the information there. https://github.com/MonoS/VS-ContinuityFixer Thanks Mirkosp, JEEB, HolyWu, jackoneill and Myrsloik Last edited by MonoS; 24th February 2015 at 15:15. Reason: V4 released |
![]() |
![]() |
![]() |
#2 | Link |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
You ported your first plugin! Congratulations!
Here are some things I noticed: * The double negative (!!) will turn your filter's parameters into either 0 or 1. The Avisynth filter doesn't behave that way. * The parameters "left", "top", "right", and "bottom" are not optional. VapourSynth will throw an error if any of them is not passed. In that case, continuityCreate is not executed, therefore "err" is always 0: Code:
d.bottom = !!vsapi->propGetInt(in, "bottom", 0, &err); if (err) { vsapi->setError(out, "ContinuityFixer: no bottom parameter"); vsapi->freeNode(d.node); return; } Code:
registerFunc("ContinuityFixer", "clip:clip;" "left:int;" "top:int;" "right:int;" "bottom:int;" "radius:int:opt;" , continuityCreate, 0, plugin); * The default value for "radius" is 0 in the Avisynth filter. I wonder why you chose Code:
d.radius = !!vsapi->propGetInt(in, "radius", 0, &err); if (err) { d.radius = d.vi->height < d.vi->width ? d.vi->height : d.vi->width; } * For 16 bit input, you need larger data types in "least_squares", to prevent overflow. Maybe in other places, too. I didn't look too closely. * You have some unused variables.
__________________
Buy me a "coffee" and/or hire me to write code! |
![]() |
![]() |
![]() |
#3 | Link | |||||||
Registered User
Join Date: Aug 2012
Posts: 199
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Thanks you a lot for the tips, i'll try to address all of those ASAP [probably tomorrow] ![]() |
|||||||
![]() |
![]() |
![]() |
#8 | Link | |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
Quote:
__________________
Buy me a "coffee" and/or hire me to write code! |
|
![]() |
![]() |
![]() |
#13 | Link |
契約者
Join Date: Jun 2008
Posts: 1,576
|
Hey guys. I'm trying to use latest github release of this plugin with VS R32. First of all, it doesn't work at all unless I'll put "libgcc_s_dw2-1.dll" near it. This doesn't look correct to me.
And then while it does work, it barely makes any difference, unlike its avisynth version (with equivalent settings). Is there anything that can be done about it? |
![]() |
![]() |
![]() |
#14 | Link | |
Registered User
Join Date: Aug 2012
Posts: 199
|
Quote:
This version was never properly tested because i don't have an x86 vapoursynth installation. Can you try this script? Code:
down = core.fmtc.bitdepth(src, bits=8).fmtc.bitdepth(bits=16) fixed = core.edgefixer.ContinuityFixer(down, [10,10,10], [10,10,10], [10,10,10], [10,10,10], [10,10,10]) stacked = core.fmtc.nativetostack16(fixed) I can assure you the 64bit version is working fine, i've used it right now for making the screen i sent you, maybe it's behaving differently than the avisynth version, in this case this is a bug and i should further study this problem (remember that the 16bit version supposedly should work as the original continuity fixer, but i can't be sure). Thanks for reporting this problem ![]() |
|
![]() |
![]() |
![]() |
Thread Tools | Search this Thread |
Display Modes | |
|
|