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. |
26th November 2018, 00:35 | #41 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Hi, give me a little time, I'm busy trying to set up x64 Avs, got gazillions of plugins to sort out.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? |
1st December 2018, 12:31 | #43 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
With this
Code:
LoadVirtualDubPlugin ("D:\ShakeRattleAndRoll\Deshaker.vdf", "deshaker", preroll=0) FN="D:\G.avi" AviSource(FN).ConvertToRGB32.Trim(10000,-500) ShakeRattleAndRoll(MotionSmoothnessHorizontalPanning=-1,MotionSmoothnessVerticalPanning=-1,MotionSmoothnessRotation=-1,MotionSmoothnessZoom=-1) return Last No idea to the cause. Probably not around till tomorrow (unless mobile). Current Avs+, and also current VD2. EDIT: I dont seem to be able to find any reference to VD2 in registry, and so am wondering how Deshaker plugin is supposed to find it. EDIT: Arg to deshaker = Code:
19|1|30|4|1|0|1|0|854|480|1|2|-1|-1|-1|-1|4|1|0|2|8|30|300|4|D:\\ShakeRattleAndRoll \\ShakeRattleAndRoll.Log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|15|15|5|15|0|0|30|30|0|0|0|0|1| 0|0|10|1000|1|88|1|1|20|5000|100|20|1|0|ff00ff and VirtualDub64.Exe
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 1st December 2018 at 12:41. |
1st December 2018, 12:41 | #44 | Link |
Registered User
Join Date: Jan 2014
Posts: 2,314
|
To use a vd/vd2 plugin in AviSynth you don't need to have a real VirtualDub.
And as for the 'no filterdefinition structure' - it's LoadVirtualDubPlugin filter in vdubfilter.dll who is unable to load Deshaker.vdf for some reason and displays the message. |
1st December 2018, 13:23 | #45 | Link |
Registered User
Join Date: Jan 2014
Posts: 2,314
|
The plugin instances are reference counted. When the reference count becomes zero, the resource is freed up.
The script is killing the clip variable by an explicite Tmp=0 which unloads the deshaker plugin: end of ShakeRattleAndRoll.avsi: Code:
Tmp=Deshaker(S) [...] Tmp = 0 #closure of tmp, allow reopen of log file for pass=2. For an instant solution I recommend that you 1.) make a copy of Deshaker.VFD to a different file name. 2.) Modify your script to load both plugins under different avisynth name e.g. Code:
LoadVirtualDubPlugin ("C:\virtualdub\plugins64\Deshaker_64.vdf", "Deshaker", preroll=0) LoadVirtualDubPlugin ("C:\virtualdub\plugins64\Deshaker_64_b.vdf", "Deshaker2", preroll=0) Code:
(Auto) ? Deshaker2(S) : NOP Return Last |
1st December 2018, 23:13 | #46 | Link | |
Registered User
Join Date: Feb 2012
Posts: 82
|
Quote:
That certainly works, but why did the previous script stop working? I have used it countless times with no problems. But probably have not done so on this new computer. or on an older computer for the last 12 months. Both have Windows 10 pro (current version). Very strange!!!!! |
|
1st December 2018, 23:50 | #47 | Link |
Registered User
Join Date: Feb 2012
Posts: 82
|
I must be going crazy Pinterf.
Your method work three times with no problems, after that it comes up with the same error as before. Even if I change pass1 in the deshaker script (after it has created a log file and then the error) to pass2, it now has the same error for pass2 using your suggestions. I haven't as yet rebooted the computer to see if it reverts back to working but I very much doubt it. |
2nd December 2018, 21:10 | #48 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Post 1 of 2.
Using current temp script, Code:
#return Version FN="D:\G.avi" AviSource(FN).ConvertToRGB32.Trim(0,-500) # 500 frames only #ShakeRattleAndRoll(MotionSmoothnessHorizontalPanning=-1,MotionSmoothnessVerticalPanning=-1,MotionSmoothnessRotation=-1,MotionSmoothnessZoom=-1) ShakeRattleAndRoll() return Last Function ShakeRattleAndRoll(clip c,Int "Pass",Int "BlockSize",Int "DifferentialSearchRange", \ Float "SourcePixelAspectValue",Int "SourcePixelAspectSelection", \ Float "DestinationPixelAspectValue",Int "DestinationPixelAspectSelection", \ Int "DestinationWidth",Int "DestinationHeight",Int "Scale",Int "UsePixels", \ Int "MotionSmoothnessHorizontalPanning",Int "MotionSmoothnessVerticalPanning",Int "MotionSmoothnessRotation", \ Int "MotionSmoothnessZoom",Float "DiscardMotionOfXBlocks",Int "VideoOutput",Int "EdgeCompensation",Int "Resampling", \ Float "SkipFrameIfLessThanXPercentOfBlocksOk",Int "InitialSearchRange", \ Float "DiscardMotionOfBlocksMatchingValueLessThanX",Float "DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX", \ String "LogFile",Bool "AppendToFile", \ Bool "IgnorePixelsOutside",Int "IgnorePixelsOutsideLeft",Int "IgnorePixelsOutsideRight",Int "IgnorePixelsOutsideTop", \ Int "IgnorePixelsOutsideBottom", \ Bool "IgnorePixelsInside",Int "IgnorePixelsInsideLeft",Int "IgnorePixelsInsideRight",Int "IgnorePixelsInsideTop", \ Int "IgnorePixelsInsideBottom",Bool "VideoTypeInterlaced",Bool "VideoTypeUpperFieldFirst", \ Float "ExtraZoomFactor",Float "MaxCorrectionLimitsHorizontalPanning",Float "MaxCorrectionLimitsVerticalPanning", \ Float "MaxCorrectionLimitsRotation",Float "MaxCorrectionLimitsZoom", \ Bool "UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled",Bool "UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled", \ Int "UsePreviousAndFutureFramesToFillInBordersPreviousFrames",Int "UsePreviousAndFutureFramesToFillInBordersFutureFrames", \ Bool "IgnorePixelsOutside_LetAreaFollowMotion",Int "DeepAnalysisIfLessThanXPercentOfVectorsAreOk", \ Bool "CamcorderHasARollingShutter",Bool "GenerateInterlacedProgressiveVideo",Bool "SameDestinationPropertiesAsSource", \ Bool "SoftBorders",Bool "ExtrapolateColorsIntoBorder",Int "SoftBorders_EdgeTransitionWidth", \ Float "DiscardMotionOfBlocksThatMoveMoreThanXPixels",Bool "RememberDiscardedAreasToNextFrame", \ Float "RollingShutterAmount",Bool "DetectRotation",Bool "DetectZoom",Float "DetectScenes_Threshold", \ Float "AdaptiveZoomSmoothness",Float "AdaptiveZoomAmount",Int "DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX", \ Bool "DetectScenes",Bool "UseColorMask",Int "MaskColorInHexRRGGBB", \ Bool "Auto", Bool "Debug", \ String "DeShakerPlugName",Int "PreRoll") { /* Can set Aspect Ratios directly using eg SourcePixelAspectValue=1.333 or by GUI index SourcePixelAspectSelection[0->7] */ Function f2ip(Float f) {return (int(f)==f) ? 0 : 6} myName="ShakeRattleAndRoll: " c Assert(IsRGB32,RT_string("%sClip Must be RGB32",myName)) # Client MUST convert to RGB32 using whatever matrix and also Interlacing. DSVersion = 19 # Fixed by DeShaker.vdf, Need modify if new version of dll Pass=Default(Pass,1) Assert(1<=Pass<=2, RT_String("%sPass 1 or 2 Only(%d)",myName,Pass)) BlockSize=Default(BlockSize,30) Assert(1<=BlockSize<=100, RT_String("%s1 <= BlockSize <= 100 Only(%d)",myName,BlockSize)) DifferentialSearchRange=Default(DifferentialSearchRange,4) Assert(1<=DifferentialSearchRange, RT_String("%s1 <= DifferentialSearchRange(%d)",myName,DifferentialSearchRange)) ### GUI ### SourcePixelAspectValue OverRides GUI selection if given as arg, Otherwise uses GUI SourcePixelAspectSelection[0->7] default 0=1:1. DefV=Defined(SourcePixelAspectValue) SourcePixelAspectSelection = (DefV) ? -1 : Max(Default(SourcePixelAspectSelection,0),0) Assert(-1<=SourcePixelAspectSelection<=7, RT_String("%s-1 <= SourcePixelAspectSelection <= 7(%d)", myName,SourcePixelAspectSelection)) SourcePixelAspectValue = (DefV) ? Float(SourcePixelAspectValue) \ : Select(SourcePixelAspectSelection,1.0,1.09259,0.909091,1.45679,1.21212,1.63889,1.36364,1.33333) Assert(0.0<SourcePixelAspectValue,RT_String("%s0.0 < SourcePixelAspectValue(%f)",myName,SourcePixelAspectValue)) ### Param 52, MUST Process out-of-param-sequence SameDestinationPropertiesAsSource=Default(SameDestinationPropertiesAsSource,true) ### GUI SameDestinationPropertiesAsSource OVERRIDES ALL, otherwise DestinationPixelAspectValue OverRides GUI selection if given as arg DefV=Defined(DestinationPixelAspectValue) DestinationPixelAspectSelection=(SameDestinationPropertiesAsSource)?SourcePixelAspectSelection:(DefV)?-1:Max(Default(DestinationPixelAspectSelection,0),0) Assert(-1<=DestinationPixelAspectSelection<=7, \ RT_String("%s-1 <= DestinationPixelAspectSelection <= 7(%d)",myName,DestinationPixelAspectSelection)) DestinationPixelAspectValue = (SameDestinationPropertiesAsSource) ? SourcePixelAspectValue : (DefV) ? Float(DestinationPixelAspectValue) \ : Select(DestinationPixelAspectSelection,1.0,1.09259,0.909091,1.45679,1.21212,1.63889,1.36364,1.33333) Assert(0.0<DestinationPixelAspectValue, RT_String("%s0.0 < DestinationPixelAspectValue(%f)",myName,DestinationPixelAspectValue)) ### DestinationWidth = (SameDestinationPropertiesAsSource) ? Width : Default(DestinationWidth, 640) DestinationHeight = (SameDestinationPropertiesAsSource) ? Height : Default(DestinationHeight,480) Assert(1<=DestinationWidth, RT_String("%s1 <= DestinationWidth(%d)",myName,DestinationWidth)) Assert(1<=DestinationHeight,RT_String("%s1 <= DestinationHeight(%d)",myName,DestinationHeight)) ### End of Source/Dest Same as stuff Scale=Default(Scale,1) Assert(0<=Scale<=2, RT_String("%s0 <= Scale <=2(%d)",myName,Scale)) UsePixels=Default(UsePixels,2) Assert(1<=UsePixels<=4, RT_String("%s1 <= UsePixels <= 4(%d)",myName,UsePixels)) MotionSmoothnessHorizontalPanning=Default(MotionSmoothnessHorizontalPanning,1000) Assert(-1<=MotionSmoothnessHorizontalPanning, RT_String("%s-1 <= MotionSmoothnessHorizontalPanning(%d)",myName,MotionSmoothnessHorizontalPanning)) MotionSmoothnessVerticalPanning=Default(MotionSmoothnessVerticalPanning,1000) Assert(-1<=MotionSmoothnessVerticalPanning, RT_String("%s-1 <= MotionSmoothnessVerticalPanning(%d)",myName,MotionSmoothnessVerticalPanning)) MotionSmoothnessRotation=Default(MotionSmoothnessRotation,1000) Assert(-1<=MotionSmoothnessRotation,RT_String("%s-1 <= MotionSmoothnessRotation(%d)",myName,MotionSmoothnessRotation)) MotionSmoothnessZoom=Default(MotionSmoothnessZoom,1000) Assert(-1<=MotionSmoothnessZoom, RT_String("%s-1 <= MotionSmoothnessZoom(%d)",myName,MotionSmoothnessZoom)) DiscardMotionOfXBlocks=Float(Default(DiscardMotionOfXBlocks,4.0)) Assert(0.0<DiscardMotionOfXBlocks,RT_String("%s0.0 < DiscardMotionOfXBlocks(%f)",myName,DiscardMotionOfXBlocks)) VideoOutput=Default(VideoOutput,1) Assert(0<=VideoOutput<=3, RT_String("%s0 <= VideoOutput <= 3(%d)",myName,VideoOutput)) EdgeCompensation=Default(EdgeCompensation,0) Assert(EdgeCompensation==0||EdgeCompensation==1||EdgeCompensation==3||EdgeCompensation==4||EdgeCompensation==6, \ RT_String("%sEdgeCompensation 0,1,3,4 or 6 only(%d)",myName,EdgeCompensation)) Resampling=Default(Resampling,2) Assert(0<=Resampling<=2,RT_String("%s0 <= Resampling <= 2(%d)",myName,Resampling)) SkipFrameIfLessThanXPercentOfBlocksOk=Float(Default(SkipFrameIfLessThanXPercentOfBlocksOk,8.0)) Assert(0.0<=SkipFrameIfLessThanXPercentOfBlocksOk<=100.0,RT_String("%s0.0 <= SkipFrameIfLessThanXPercentOfBlocksOk <= 100.0(%f)", \ myName,SkipFrameIfLessThanXPercentOfBlocksOk)) InitialSearchRange=Default(InitialSearchRange,30) Assert(1<=InitialSearchRange<=99, RT_String("%s1 <= InitialSearchRange <= 99(%d)",myName,InitialSearchRange)) DiscardMotionOfBlocksMatchingValueLessThanX=Float(Default(DiscardMotionOfBlocksMatchingValueLessThanX,300.0)) Assert(-1000.0<=DiscardMotionOfBlocksMatchingValueLessThanX<=1000.0, \ RT_String("%s-1000.0 <= DiscardMotionOfBlocksMatchingValueLessThanX <= 1000.0(%f)", \ myName,DiscardMotionOfBlocksMatchingValueLessThanX)) DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX=Float(Default(DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX,4.0)) Assert(0.0<=DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX, \ RT_String("%s0.0 <= DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX(%f)", \ myName,DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX)) LogFile=Default(LogFile,"ShakeRattleAndRoll.Log") Assert(LogFile!="",RT_String("%sLogfile Cannot be Empty string",myName)) LogFile=RT_GetFullPathName(LogFile) Assert(Pass==1||Exist(LogFile),RT_String("%sPass 2 Logfile Does NOT Exist(%s)",myName,LogFile)) LogFile=RT_StrReplace(LogFile,"\","\\") AppendToFile=Default(AppendToFile,False)
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? |
2nd December 2018, 21:11 | #49 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Post 2 of 2.
Code:
IgnorePixelsOutside=Default(IgnorePixelsOutside,False) IgnorePixelsOutsideLeft=Default(IgnorePixelsOutsideLeft,0) IgnorePixelsOutsideRight=Default(IgnorePixelsOutsideRight,0) IgnorePixelsOutsideTop=Default(IgnorePixelsOutsideTop,0) IgnorePixelsOutsideBottom=Default(IgnorePixelsOutsideBottom,0) IgnorePixelsInside=Default(IgnorePixelsInside,False) IgnorePixelsInsideLeft=Default(IgnorePixelsInsideLeft,0) IgnorePixelsInsideRight=Default(IgnorePixelsInsideRight,0) IgnorePixelsInsideTop=Default(IgnorePixelsInsideTop,0) IgnorePixelsInsideBottom=Default(IgnorePixelsInsideBottom,0) VideoTypeInterlaced=Default(VideoTypeInterlaced,False) VideoTypeUpperFieldFirst=Default(VideoTypeUpperFieldFirst,False) ExtraZoomFactor=Float(Default(ExtraZoomFactor,1.0)) Assert(0.0<ExtraZoomFactor,RT_String("%s0.0 < ExtraZoomFactor(%f)",myName,ExtraZoomFactor)) MaxCorrectionLimitsHorizontalPanning=Float(Default(MaxCorrectionLimitsHorizontalPanning,15.0)) Assert(1.0<=MaxCorrectionLimitsHorizontalPanning,RT_String("%s1.0 <= MaxCorrectionLimitsHorizontalPanning(%f)", \ myName,MaxCorrectionLimitsHorizontalPanning)) MaxCorrectionLimitsVerticalPanning=Float(Default(MaxCorrectionLimitsVerticalPanning,15.0)) Assert(1.0<=MaxCorrectionLimitsVerticalPanning,RT_String("%s1.0 <= MaxCorrectionLimitsVerticalPanning(%f)", \ myName,MaxCorrectionLimitsVerticalPanning)) MaxCorrectionLimitsRotation=Float(Default(MaxCorrectionLimitsRotation,5.0)) Assert(1.0<=MaxCorrectionLimitsRotation,RT_String("%s1.0 <= MaxCorrectionLimitsRotation(%f)",myName,MaxCorrectionLimitsRotation)) MaxCorrectionLimitsZoom=Float(Default(MaxCorrectionLimitsZoom,15.0)) Assert(1.0<=MaxCorrectionLimitsZoom,RT_String("%s1.0 <= MaxCorrectionLimitsZoom(%f)",myName,MaxCorrectionLimitsZoom)) UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled=Default(UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled,False) UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled=Default(UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled,False) UsePreviousAndFutureFramesToFillInBordersPreviousFrames=Default(UsePreviousAndFutureFramesToFillInBordersPreviousFrames,30) Assert(0<=UsePreviousAndFutureFramesToFillInBordersPreviousFrames, \ RT_String("%s0 <= UsePreviousAndFutureFramesToFillInBordersPreviousFrames(%d)", \ myName,UsePreviousAndFutureFramesToFillInBordersPreviousFrames)) UsePreviousAndFutureFramesToFillInBordersFutureFrames=Default(UsePreviousAndFutureFramesToFillInBordersFutureFrames,30) Assert(0<=UsePreviousAndFutureFramesToFillInBordersFutureFrames, \ RT_String("%s0 <= UsePreviousAndFutureFramesToFillInBordersFutureFrames(%d)", \ myName,UsePreviousAndFutureFramesToFillInBordersFutureFrames)) IgnorePixelsOutside_LetAreaFollowMotion=Default(IgnorePixelsOutside_LetAreaFollowMotion,False) DeepAnalysisIfLessThanXPercentOfVectorsAreOk=Default(DeepAnalysisIfLessThanXPercentOfVectorsAreOk,0) Assert(0<=DeepAnalysisIfLessThanXPercentOfVectorsAreOk<=100, \ RT_String("%s 0 <= DeepAnalysisIfLessThanXPercentOfVectorsAreOk <= 100(%d)",myName,DeepAnalysisIfLessThanXPercentOfVectorsAreOk)) CamcorderHasARollingShutter=Default(CamcorderHasARollingShutter,false) GenerateInterlacedProgressiveVideo=Default(GenerateInterlacedProgressiveVideo,false) SoftBorders=Default(SoftBorders,false) ExtrapolateColorsIntoBorder=Default(ExtrapolateColorsIntoBorder,false) SoftBorders_EdgeTransitionWidth=Default(SoftBorders_EdgeTransitionWidth,10) Assert(0<=SoftBorders_EdgeTransitionWidth,RT_String("%s0 <= SoftBorders_EdgeTransitionWidth(%d)",myName,SoftBorders_EdgeTransitionWidth)) DiscardMotionOfBlocksThatMoveMoreThanXPixels=Float(Default(DiscardMotionOfBlocksThatMoveMoreThanXPixels,1000.0)) Assert(0.0<DiscardMotionOfBlocksThatMoveMoreThanXPixels, RT_String("%s0.0 < DiscardMotionOfBlocksThatMoveMoreThanXPixels(%f)", \ myName,DiscardMotionOfBlocksThatMoveMoreThanXPixels)) RememberDiscardedAreasToNextFrame=Default(RememberDiscardedAreasToNextFrame,true) RollingShutterAmount=Float(Default(RollingShutterAmount,88.0)) ##### Any Value ??? DetectRotation=Default(DetectRotation,true) DetectZoom=Default(DetectZoom,true) DetectScenes_Threshold=Float(Default(DetectScenes_Threshold,20.0)) Assert(0.0<=DetectScenes_Threshold<=1000.0, RT_String("%s0.0 <= DetectScenes_Threshold <= 1000.0(%f)", \ myName,DetectScenes_Threshold)) AdaptiveZoomSmoothness=Float(Default(AdaptiveZoomSmoothness,5000.0)) Assert(0.0<AdaptiveZoomSmoothness,RT_String("%s0.0 < AdaptiveZoomSmoothness(%f)",myName,AdaptiveZoomSmoothness)) AdaptiveZoomAmount=Float(Default(AdaptiveZoomAmount,100.0)) ##### Any Value ??? DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX=Default(DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX,20) Assert(0<=DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX<=255, \ RT_String("%s0 <= DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX <= 255(%d)", \ myName,DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX)) DetectScenes=Default(DetectScenes,true) UseColorMask=Default(UseColorMask,false) MaskColorInHexRRGGBB=BitAnd(Default(MaskColorInHexRRGGBB,$FF00FF),$FFFFFF) ######### Auto=Default(Auto,Pass==1) # Default True if Pass==1 or False if Pass==2 Assert(Pass==1 || !Auto,RT_String("%sCannot use Auto=True if Pass==2",myName)) Debug=Default(Debug,True) DeShakerPlugName=Default(DeShakerPlugName,"Deshaker.vdf") Assert(DeshakerPlugName!="",RT_string("%sRequires DeShakerPlugName",myName)) DeShakerPlugName=RT_GetFullPathName(DeShakerPlugName) (Debug) ? RT_DebugF("DeShakerPlugName = '%s'",DeShakerPlugName,name=myName) : NOP PreRoll = Max(Default(PreRoll,0),0) ######### Fmt1="%d|%d" Fmt2="|%d|%d|%.*f|%d|%.*f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%.*f|%d|%d|%d|%.*f|%d|%.*f|%.*f|" + \ "%s|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%.*f|%.*f|%.*f|%.*f|%.*f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%.*f|%d|%.*f|%d|%d|%.*f|%.*f|%.*f|%d|%d|%d|%x" S1=RT_String(Fmt1,DSVersion,Pass) S2=RT_String(Fmt2, \ BlockSize,DifferentialSearchRange, \ f2ip(SourcePixelAspectValue),SourcePixelAspectValue,SourcePixelAspectSelection, \ f2ip(DestinationPixelAspectValue),DestinationPixelAspectValue,DestinationPixelAspectSelection, \ DestinationWidth,DestinationHeight,Scale,UsePixels, \ MotionSmoothnessHorizontalPanning,MotionSmoothnessVerticalPanning,MotionSmoothnessRotation,MotionSmoothnessZoom, \ f2ip(DiscardMotionOfXBlocks),DiscardMotionOfXBlocks,VideoOutput,EdgeCompensation,Resampling, \ f2ip(SkipFrameIfLessThanXPercentOfBlocksOk),SkipFrameIfLessThanXPercentOfBlocksOk,InitialSearchRange, \ f2ip(DiscardMotionOfBlocksMatchingValueLessThanX),DiscardMotionOfBlocksMatchingValueLessThanX, \ f2ip(DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX),DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX, \ LogFile,AppendToFile?1:0, \ IgnorePixelsOutside?1:0,IgnorePixelsOutsideLeft,IgnorePixelsOutsideRight,IgnorePixelsOutsideTop,IgnorePixelsOutsideBottom, \ IgnorePixelsInside?1:0,IgnorePixelsInsideLeft,IgnorePixelsInsideRight,IgnorePixelsInsideTop,IgnorePixelsInsideBottom, \ VideoTypeInterlaced?1:0,VideoTypeUpperFieldFirst?1:0, \ f2ip(ExtraZoomFactor),ExtraZoomFactor, \ f2ip(MaxCorrectionLimitsHorizontalPanning),MaxCorrectionLimitsHorizontalPanning, \ f2ip(MaxCorrectionLimitsVerticalPanning),MaxCorrectionLimitsVerticalPanning, \ f2ip(MaxCorrectionLimitsRotation),MaxCorrectionLimitsRotation, \ f2ip(MaxCorrectionLimitsZoom),MaxCorrectionLimitsZoom, \ UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled?1:0,UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled?1:0, \ UsePreviousAndFutureFramesToFillInBordersPreviousFrames,UsePreviousAndFutureFramesToFillInBordersFutureFrames, \ IgnorePixelsOutside_LetAreaFollowMotion?1:0,DeepAnalysisIfLessThanXPercentOfVectorsAreOk, \ CamcorderHasARollingShutter?1:0,GenerateInterlacedProgressiveVideo?1:0,SameDestinationPropertiesAsSource?1:0, \ SoftBorders?1:0,ExtrapolateColorsIntoBorder?1:0,SoftBorders_EdgeTransitionWidth, \ f2ip(DiscardMotionOfBlocksThatMoveMoreThanXPixels),DiscardMotionOfBlocksThatMoveMoreThanXPixels, \ RememberDiscardedAreasToNextFrame?1:0, \ f2ip(RollingShutterAmount),RollingShutterAmount, \ DetectRotation?1:0,DetectZoom?1:0,f2ip(DetectScenes_Threshold),DetectScenes_Threshold, \ f2ip(AdaptiveZoomSmoothness),AdaptiveZoomSmoothness, \ f2ip(AdaptiveZoomAmount),AdaptiveZoomAmount, \ DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX, \ DetectScenes?1:0,UseColorMask?1:0,MaskColorInHexRRGGBB \ ) DBUG = true # Used during debugging S=S1+S2 Fn=RT_String("ShakeRattleAndRoll_Debug_%d.txt",Pass) (Debug) ? RT_DebugF("%s",S,name=myName) : NOP (Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Debug) ? RT_DebugF("Loading VDPlug='%s' As '%s', PreRoll=%d",DeShakerPlugName, "Deshaker_1",PreRoll) : NOP LoadVirtualDubPlugin (DeShakerPlugName, "Deshaker_1", preroll=PreRoll) Tmp=Deshaker_1(S) (Auto) ? RT_ForceProcess(Tmp) : NOP (Auto) ? Last : Tmp # If NOT Auto, then we return result of previous DeShaker(Pass=Whatever). Tmp = 0 # If Auto, Force closure of tmp, allow reopen of log file for pass=2. Fn=(Auto) ? "ShakeRattleAndRoll_Debug_2.txt" : Fn S =(Auto) ? RT_String(Fmt1,DSVersion,2)+S2 : S (Auto&&Debug) ? RT_DebugF("%s",S,name=myName) : NOP (Auto&&Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Auto) ? RT_Sleep(1.0) : NOP DeShakerPlugName2=RT_FilenameSplit(DeShakerPlugName,7) + "2" + RT_FilenameSplit(DeShakerPlugName,8) (Debug&&Auto) ? RT_DebugF("Loading VDPlug='%s' As '%s', PreRoll=%d",DeShakerPlugName2, "Deshaker_2",PreRoll) : NOP (Auto) ? LoadVirtualDubPlugin (DeShakerPlugName2, "Deshaker_2", preroll=PreRoll) : NOP (Debug&&Auto) ? RT_DebugF("Calling Dehaker_2(S)") : NOP (Auto) ? Deshaker_2(S) : NOP Return Last } x86, Avs v2.60 standard, Works ok as expected. [EDIT: No it dont, sometimes also has Access Violation, but seems not as often as below] x86, Avs+ v2.60, Sometimes works ok, sometimes Access Violation, at line Code:
(Auto) ? LoadVirtualDubPlugin (DeShakerPlugName2, "Deshaker_2", preroll=PreRoll) : NOP Code:
(Auto) ? LoadVirtualDubPlugin (DeShakerPlugName2, "Deshaker_2", preroll=PreRoll) : NOP Code:
(Auto) ? Deshaker_2(S) : NOP Code:
00000001 0.00000000 ShakeRattleAndRoll: DeShakerPlugName = 'D:\ShakeRattleAndRoll\Deshaker.vdf' 00000002 0.00067426 ShakeRattleAndRoll: 19|1|30|4|1|0|1|0|854|480|1|2|1000|1000|1000|1000|4|1|0|2|8|30|300|4| D:\\ShakeRattleAndRoll\\ShakeRattleAndRoll.Log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|15|15|5|15|0|0|30|30|0|0|0|0|1|0|0|10|1000|1|88| 1|1|20|5000|100|20|1|0|ff00ff 00000003 0.00112824 RT_DebugF: Loading VDPlug='D:\ShakeRattleAndRoll\Deshaker.vdf' As 'Deshaker_1', PreRoll=0 00000004 0.01150922 RT_ForceProcess: Commencing Forced process 00000005 0.75406694 RT_ForceProcess: 24] 5.00% nFrms=25 T=0.749sec : 33.38FpS 0.029960SpF ... 00000024 16.02638054 RT_ForceProcess: 499] 100.00% nFrms=25 T=0.842sec : 29.69FpS 0.033680SpF 00000025 16.02643585 RT_ForceProcess: Time=16.021secs (0.267mins) : Avg 31.209FpS 0.032042SpF 00000026 16.02957344 ShakeRattleAndRoll: 19|2|30|4|1|0|1|0|854|480|1|2|1000|1000|1000|1000|4|1|0|2|8|30|300|4| D:\\ShakeRattleAndRoll\\ShakeRattleAndRoll.Log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|15|15|5|15|0|0|30|30|0|0|0|0|1|0|0|10|1000|1|88| 1|1|20|5000|100|20|1|0|ff00ff 00000027 17.03472900 RT_DebugF: Loading VDPlug='D:\ShakeRattleAndRoll\Deshaker2.vdf' As 'Deshaker_2', PreRoll=0 00000028 17.03999710 RT_DebugF: Calling Dehaker_2(S)
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 3rd December 2018 at 01:10. |
3rd December 2018, 04:08 | #50 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Post #1 of 2
OK, this works with Avs+, x86 and x64, but produces black clip for avs 2.60 standard. (On 2nd pass of auto, avs+ shows 1st frame black, but flashes up a "Deshaking" window for 1 frame, and then clip is displayed, avs 2.60 standard shows no "Deshaking" window, only black clip). [EDIT: See EDIT in red at end of next post] With VD plugins in current dir, Deshaker_x86.vdf, and Deshaker_x64.vdf. Code:
FN="D:\G.avi" AviSource(FN).ConvertToRGB32 trim(0,-500) # 500 frames Only x64=False # False = x86, True=x64, Default if NOT loading into VDub PreRoll=0 ### ProcessName = RT_GetProcessName() # Process loading avs script RT_DebugF("ProcessName=%s",ProcessName) x64=(ProcessName=="Virtualdub.Exe")?False:(ProcessName=="Virtualdub64.Exe")?True:x64 # Override Plugin if loading into VDub, x86 or x64 Plugin=(x64) ? "Deshaker_x64.vdf" : "Deshaker_x86.vdf" # Plugin name in current directory ShakeRattleAndRoll(plugin=Plugin,preroll=PreRoll) return Last Function ShakeRattleAndRoll(clip c,Int "Pass",Int "BlockSize",Int "DifferentialSearchRange", \ Float "SourcePixelAspectValue",Int "SourcePixelAspectSelection", \ Float "DestinationPixelAspectValue",Int "DestinationPixelAspectSelection", \ Int "DestinationWidth",Int "DestinationHeight",Int "Scale",Int "UsePixels", \ Int "MotionSmoothnessHorizontalPanning",Int "MotionSmoothnessVerticalPanning",Int "MotionSmoothnessRotation", \ Int "MotionSmoothnessZoom",Float "DiscardMotionOfXBlocks",Int "VideoOutput",Int "EdgeCompensation",Int "Resampling", \ Float "SkipFrameIfLessThanXPercentOfBlocksOk",Int "InitialSearchRange", \ Float "DiscardMotionOfBlocksMatchingValueLessThanX",Float "DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX", \ String "LogFile",Bool "AppendToFile", \ Bool "IgnorePixelsOutside",Int "IgnorePixelsOutsideLeft",Int "IgnorePixelsOutsideRight",Int "IgnorePixelsOutsideTop", \ Int "IgnorePixelsOutsideBottom", \ Bool "IgnorePixelsInside",Int "IgnorePixelsInsideLeft",Int "IgnorePixelsInsideRight",Int "IgnorePixelsInsideTop", \ Int "IgnorePixelsInsideBottom",Bool "VideoTypeInterlaced",Bool "VideoTypeUpperFieldFirst", \ Float "ExtraZoomFactor",Float "MaxCorrectionLimitsHorizontalPanning",Float "MaxCorrectionLimitsVerticalPanning", \ Float "MaxCorrectionLimitsRotation",Float "MaxCorrectionLimitsZoom", \ Bool "UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled",Bool "UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled", \ Int "UsePreviousAndFutureFramesToFillInBordersPreviousFrames",Int "UsePreviousAndFutureFramesToFillInBordersFutureFrames", \ Bool "IgnorePixelsOutside_LetAreaFollowMotion",Int "DeepAnalysisIfLessThanXPercentOfVectorsAreOk", \ Bool "CamcorderHasARollingShutter",Bool "GenerateInterlacedProgressiveVideo",Bool "SameDestinationPropertiesAsSource", \ Bool "SoftBorders",Bool "ExtrapolateColorsIntoBorder",Int "SoftBorders_EdgeTransitionWidth", \ Float "DiscardMotionOfBlocksThatMoveMoreThanXPixels",Bool "RememberDiscardedAreasToNextFrame", \ Float "RollingShutterAmount",Bool "DetectRotation",Bool "DetectZoom",Float "DetectScenes_Threshold", \ Float "AdaptiveZoomSmoothness",Float "AdaptiveZoomAmount",Int "DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX", \ Bool "DetectScenes",Bool "UseColorMask",Int "MaskColorInHexRRGGBB", \ Bool "Auto", Bool "Debug", \ String "Plugin",Int "PreRoll") { /* Can set Aspect Ratios directly using eg SourcePixelAspectValue=1.333 or by GUI index SourcePixelAspectSelection[0->7] */ Function f2ip(Float f) {return (int(f)==f) ? 0 : 6} myName="ShakeRattleAndRoll: " c Assert(IsRGB32,RT_string("%sClip Must be RGB32",myName)) # Client MUST convert to RGB32 using whatever matrix and also Interlacing. DSVersion = 19 # Fixed by DeShaker.vdf, Need modify if new version of dll Pass=Default(Pass,1) Assert(1<=Pass<=2, RT_String("%sPass 1 or 2 Only(%d)",myName,Pass)) BlockSize=Default(BlockSize,30) Assert(1<=BlockSize<=100, RT_String("%s1 <= BlockSize <= 100 Only(%d)",myName,BlockSize)) DifferentialSearchRange=Default(DifferentialSearchRange,4) Assert(1<=DifferentialSearchRange, RT_String("%s1 <= DifferentialSearchRange(%d)",myName,DifferentialSearchRange)) ### GUI ### SourcePixelAspectValue OverRides GUI selection if given as arg, Otherwise uses GUI SourcePixelAspectSelection[0->7] default 0=1:1. DefV=Defined(SourcePixelAspectValue) SourcePixelAspectSelection = (DefV) ? -1 : Max(Default(SourcePixelAspectSelection,0),0) Assert(-1<=SourcePixelAspectSelection<=7, RT_String("%s-1 <= SourcePixelAspectSelection <= 7(%d)", myName,SourcePixelAspectSelection)) SourcePixelAspectValue = (DefV) ? Float(SourcePixelAspectValue) \ : Select(SourcePixelAspectSelection,1.0,1.09259,0.909091,1.45679,1.21212,1.63889,1.36364,1.33333) Assert(0.0<SourcePixelAspectValue,RT_String("%s0.0 < SourcePixelAspectValue(%f)",myName,SourcePixelAspectValue)) ### Param 52, MUST Process out-of-param-sequence SameDestinationPropertiesAsSource=Default(SameDestinationPropertiesAsSource,true) ### GUI SameDestinationPropertiesAsSource OVERRIDES ALL, otherwise DestinationPixelAspectValue OverRides GUI selection if given as arg DefV=Defined(DestinationPixelAspectValue) DestinationPixelAspectSelection=(SameDestinationPropertiesAsSource)?SourcePixelAspectSelection:(DefV)?-1:Max(Default(DestinationPixelAspectSelection,0),0) Assert(-1<=DestinationPixelAspectSelection<=7, \ RT_String("%s-1 <= DestinationPixelAspectSelection <= 7(%d)",myName,DestinationPixelAspectSelection)) DestinationPixelAspectValue = (SameDestinationPropertiesAsSource) ? SourcePixelAspectValue : (DefV) ? Float(DestinationPixelAspectValue) \ : Select(DestinationPixelAspectSelection,1.0,1.09259,0.909091,1.45679,1.21212,1.63889,1.36364,1.33333) Assert(0.0<DestinationPixelAspectValue, RT_String("%s0.0 < DestinationPixelAspectValue(%f)",myName,DestinationPixelAspectValue)) ### DestinationWidth = (SameDestinationPropertiesAsSource) ? Width : Default(DestinationWidth, 640) DestinationHeight = (SameDestinationPropertiesAsSource) ? Height : Default(DestinationHeight,480) Assert(1<=DestinationWidth, RT_String("%s1 <= DestinationWidth(%d)",myName,DestinationWidth)) Assert(1<=DestinationHeight,RT_String("%s1 <= DestinationHeight(%d)",myName,DestinationHeight)) ### End of Source/Dest Same as stuff Scale=Default(Scale,1) Assert(0<=Scale<=2, RT_String("%s0 <= Scale <=2(%d)",myName,Scale)) UsePixels=Default(UsePixels,2) Assert(1<=UsePixels<=4, RT_String("%s1 <= UsePixels <= 4(%d)",myName,UsePixels)) MotionSmoothnessHorizontalPanning=Default(MotionSmoothnessHorizontalPanning,1000) Assert(-1<=MotionSmoothnessHorizontalPanning, RT_String("%s-1 <= MotionSmoothnessHorizontalPanning(%d)",myName,MotionSmoothnessHorizontalPanning)) MotionSmoothnessVerticalPanning=Default(MotionSmoothnessVerticalPanning,1000) Assert(-1<=MotionSmoothnessVerticalPanning, RT_String("%s-1 <= MotionSmoothnessVerticalPanning(%d)",myName,MotionSmoothnessVerticalPanning)) MotionSmoothnessRotation=Default(MotionSmoothnessRotation,1000) Assert(-1<=MotionSmoothnessRotation,RT_String("%s-1 <= MotionSmoothnessRotation(%d)",myName,MotionSmoothnessRotation)) MotionSmoothnessZoom=Default(MotionSmoothnessZoom,1000) Assert(-1<=MotionSmoothnessZoom, RT_String("%s-1 <= MotionSmoothnessZoom(%d)",myName,MotionSmoothnessZoom)) DiscardMotionOfXBlocks=Float(Default(DiscardMotionOfXBlocks,4.0)) Assert(0.0<DiscardMotionOfXBlocks,RT_String("%s0.0 < DiscardMotionOfXBlocks(%f)",myName,DiscardMotionOfXBlocks)) VideoOutput=Default(VideoOutput,1) Assert(0<=VideoOutput<=3, RT_String("%s0 <= VideoOutput <= 3(%d)",myName,VideoOutput)) EdgeCompensation=Default(EdgeCompensation,0) Assert(EdgeCompensation==0||EdgeCompensation==1||EdgeCompensation==3||EdgeCompensation==4||EdgeCompensation==6, \ RT_String("%sEdgeCompensation 0,1,3,4 or 6 only(%d)",myName,EdgeCompensation)) Resampling=Default(Resampling,2) Assert(0<=Resampling<=2,RT_String("%s0 <= Resampling <= 2(%d)",myName,Resampling)) SkipFrameIfLessThanXPercentOfBlocksOk=Float(Default(SkipFrameIfLessThanXPercentOfBlocksOk,8.0)) Assert(0.0<=SkipFrameIfLessThanXPercentOfBlocksOk<=100.0,RT_String("%s0.0 <= SkipFrameIfLessThanXPercentOfBlocksOk <= 100.0(%f)", \ myName,SkipFrameIfLessThanXPercentOfBlocksOk)) InitialSearchRange=Default(InitialSearchRange,30) Assert(1<=InitialSearchRange<=99, RT_String("%s1 <= InitialSearchRange <= 99(%d)",myName,InitialSearchRange)) DiscardMotionOfBlocksMatchingValueLessThanX=Float(Default(DiscardMotionOfBlocksMatchingValueLessThanX,300.0)) Assert(-1000.0<=DiscardMotionOfBlocksMatchingValueLessThanX<=1000.0, \ RT_String("%s-1000.0 <= DiscardMotionOfBlocksMatchingValueLessThanX <= 1000.0(%f)", \ myName,DiscardMotionOfBlocksMatchingValueLessThanX)) DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX=Float(Default(DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX,4.0)) Assert(0.0<=DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX, \ RT_String("%s0.0 <= DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX(%f)", \ myName,DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX)) LogFile=Default(LogFile,"ShakeRattleAndRoll.Log") Assert(LogFile!="",RT_String("%sLogfile Cannot be Empty string",myName)) LogFile=RT_GetFullPathName(LogFile) Assert(Pass==1||Exist(LogFile),RT_String("%sPass 2 Logfile Does NOT Exist(%s)",myName,LogFile)) LogFile=RT_StrReplace(LogFile,"\","\\") AppendToFile=Default(AppendToFile,False)
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 3rd December 2018 at 05:56. |
3rd December 2018, 04:10 | #51 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Post #2 of 2.
Code:
IgnorePixelsOutside=Default(IgnorePixelsOutside,False) IgnorePixelsOutsideLeft=Default(IgnorePixelsOutsideLeft,0) IgnorePixelsOutsideRight=Default(IgnorePixelsOutsideRight,0) IgnorePixelsOutsideTop=Default(IgnorePixelsOutsideTop,0) IgnorePixelsOutsideBottom=Default(IgnorePixelsOutsideBottom,0) IgnorePixelsInside=Default(IgnorePixelsInside,False) IgnorePixelsInsideLeft=Default(IgnorePixelsInsideLeft,0) IgnorePixelsInsideRight=Default(IgnorePixelsInsideRight,0) IgnorePixelsInsideTop=Default(IgnorePixelsInsideTop,0) IgnorePixelsInsideBottom=Default(IgnorePixelsInsideBottom,0) VideoTypeInterlaced=Default(VideoTypeInterlaced,False) VideoTypeUpperFieldFirst=Default(VideoTypeUpperFieldFirst,False) ExtraZoomFactor=Float(Default(ExtraZoomFactor,1.0)) Assert(0.0<ExtraZoomFactor,RT_String("%s0.0 < ExtraZoomFactor(%f)",myName,ExtraZoomFactor)) MaxCorrectionLimitsHorizontalPanning=Float(Default(MaxCorrectionLimitsHorizontalPanning,15.0)) Assert(1.0<=MaxCorrectionLimitsHorizontalPanning,RT_String("%s1.0 <= MaxCorrectionLimitsHorizontalPanning(%f)", \ myName,MaxCorrectionLimitsHorizontalPanning)) MaxCorrectionLimitsVerticalPanning=Float(Default(MaxCorrectionLimitsVerticalPanning,15.0)) Assert(1.0<=MaxCorrectionLimitsVerticalPanning,RT_String("%s1.0 <= MaxCorrectionLimitsVerticalPanning(%f)", \ myName,MaxCorrectionLimitsVerticalPanning)) MaxCorrectionLimitsRotation=Float(Default(MaxCorrectionLimitsRotation,5.0)) Assert(1.0<=MaxCorrectionLimitsRotation,RT_String("%s1.0 <= MaxCorrectionLimitsRotation(%f)",myName,MaxCorrectionLimitsRotation)) MaxCorrectionLimitsZoom=Float(Default(MaxCorrectionLimitsZoom,15.0)) Assert(1.0<=MaxCorrectionLimitsZoom,RT_String("%s1.0 <= MaxCorrectionLimitsZoom(%f)",myName,MaxCorrectionLimitsZoom)) UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled=Default(UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled,False) UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled=Default(UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled,False) UsePreviousAndFutureFramesToFillInBordersPreviousFrames=Default(UsePreviousAndFutureFramesToFillInBordersPreviousFrames,30) Assert(0<=UsePreviousAndFutureFramesToFillInBordersPreviousFrames, \ RT_String("%s0 <= UsePreviousAndFutureFramesToFillInBordersPreviousFrames(%d)", \ myName,UsePreviousAndFutureFramesToFillInBordersPreviousFrames)) UsePreviousAndFutureFramesToFillInBordersFutureFrames=Default(UsePreviousAndFutureFramesToFillInBordersFutureFrames,30) Assert(0<=UsePreviousAndFutureFramesToFillInBordersFutureFrames, \ RT_String("%s0 <= UsePreviousAndFutureFramesToFillInBordersFutureFrames(%d)", \ myName,UsePreviousAndFutureFramesToFillInBordersFutureFrames)) IgnorePixelsOutside_LetAreaFollowMotion=Default(IgnorePixelsOutside_LetAreaFollowMotion,False) DeepAnalysisIfLessThanXPercentOfVectorsAreOk=Default(DeepAnalysisIfLessThanXPercentOfVectorsAreOk,0) Assert(0<=DeepAnalysisIfLessThanXPercentOfVectorsAreOk<=100, \ RT_String("%s 0 <= DeepAnalysisIfLessThanXPercentOfVectorsAreOk <= 100(%d)",myName,DeepAnalysisIfLessThanXPercentOfVectorsAreOk)) CamcorderHasARollingShutter=Default(CamcorderHasARollingShutter,false) GenerateInterlacedProgressiveVideo=Default(GenerateInterlacedProgressiveVideo,false) SoftBorders=Default(SoftBorders,false) ExtrapolateColorsIntoBorder=Default(ExtrapolateColorsIntoBorder,false) SoftBorders_EdgeTransitionWidth=Default(SoftBorders_EdgeTransitionWidth,10) Assert(0<=SoftBorders_EdgeTransitionWidth,RT_String("%s0 <= SoftBorders_EdgeTransitionWidth(%d)",myName,SoftBorders_EdgeTransitionWidth)) DiscardMotionOfBlocksThatMoveMoreThanXPixels=Float(Default(DiscardMotionOfBlocksThatMoveMoreThanXPixels,1000.0)) Assert(0.0<DiscardMotionOfBlocksThatMoveMoreThanXPixels, RT_String("%s0.0 < DiscardMotionOfBlocksThatMoveMoreThanXPixels(%f)", \ myName,DiscardMotionOfBlocksThatMoveMoreThanXPixels)) RememberDiscardedAreasToNextFrame=Default(RememberDiscardedAreasToNextFrame,true) RollingShutterAmount=Float(Default(RollingShutterAmount,88.0)) ##### Any Value ??? DetectRotation=Default(DetectRotation,true) DetectZoom=Default(DetectZoom,true) DetectScenes_Threshold=Float(Default(DetectScenes_Threshold,20.0)) Assert(0.0<=DetectScenes_Threshold<=1000.0, RT_String("%s0.0 <= DetectScenes_Threshold <= 1000.0(%f)", \ myName,DetectScenes_Threshold)) AdaptiveZoomSmoothness=Float(Default(AdaptiveZoomSmoothness,5000.0)) Assert(0.0<AdaptiveZoomSmoothness,RT_String("%s0.0 < AdaptiveZoomSmoothness(%f)",myName,AdaptiveZoomSmoothness)) AdaptiveZoomAmount=Float(Default(AdaptiveZoomAmount,100.0)) ##### Any Value ??? DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX=Default(DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX,20) Assert(0<=DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX<=255, \ RT_String("%s0 <= DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX <= 255(%d)", \ myName,DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX)) DetectScenes=Default(DetectScenes,true) UseColorMask=Default(UseColorMask,false) MaskColorInHexRRGGBB=BitAnd(Default(MaskColorInHexRRGGBB,$FF00FF),$FFFFFF) ######### Auto=Default(Auto,Pass==1) # Default True if Pass==1 or False if Pass==2 Assert(Pass==1 || !Auto,RT_String("%sCannot use Auto=True if Pass==2",myName)) Debug=Default(Debug,True) Plugin=Default(Plugin,"Deshaker.vdf") Assert(Plugin!="",RT_string("%sRequires Plugin",myName)) Plugin=RT_GetFullPathName(Plugin) (Debug) ? RT_DebugF("Plugin = '%s'",Plugin,name=myName) : NOP PreRoll = Max(Default(PreRoll,0),0) ######### Fmt1="%d|%d" Fmt2="|%d|%d|%.*f|%d|%.*f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%.*f|%d|%d|%d|%.*f|%d|%.*f|%.*f|" + \ "%s|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%.*f|%.*f|%.*f|%.*f|%.*f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%.*f|%d|%.*f|%d|%d|%.*f|%.*f|%.*f|%d|%d|%d|%x" S1=RT_String(Fmt1,DSVersion,Pass) S2=RT_String(Fmt2, \ BlockSize,DifferentialSearchRange, \ f2ip(SourcePixelAspectValue),SourcePixelAspectValue,SourcePixelAspectSelection, \ f2ip(DestinationPixelAspectValue),DestinationPixelAspectValue,DestinationPixelAspectSelection, \ DestinationWidth,DestinationHeight,Scale,UsePixels, \ MotionSmoothnessHorizontalPanning,MotionSmoothnessVerticalPanning,MotionSmoothnessRotation,MotionSmoothnessZoom, \ f2ip(DiscardMotionOfXBlocks),DiscardMotionOfXBlocks,VideoOutput,EdgeCompensation,Resampling, \ f2ip(SkipFrameIfLessThanXPercentOfBlocksOk),SkipFrameIfLessThanXPercentOfBlocksOk,InitialSearchRange, \ f2ip(DiscardMotionOfBlocksMatchingValueLessThanX),DiscardMotionOfBlocksMatchingValueLessThanX, \ f2ip(DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX),DiscardMotionOfBlocksThatHave2ndBestMatchLargerThanBestMinusX, \ LogFile,AppendToFile?1:0, \ IgnorePixelsOutside?1:0,IgnorePixelsOutsideLeft,IgnorePixelsOutsideRight,IgnorePixelsOutsideTop,IgnorePixelsOutsideBottom, \ IgnorePixelsInside?1:0,IgnorePixelsInsideLeft,IgnorePixelsInsideRight,IgnorePixelsInsideTop,IgnorePixelsInsideBottom, \ VideoTypeInterlaced?1:0,VideoTypeUpperFieldFirst?1:0, \ f2ip(ExtraZoomFactor),ExtraZoomFactor, \ f2ip(MaxCorrectionLimitsHorizontalPanning),MaxCorrectionLimitsHorizontalPanning, \ f2ip(MaxCorrectionLimitsVerticalPanning),MaxCorrectionLimitsVerticalPanning, \ f2ip(MaxCorrectionLimitsRotation),MaxCorrectionLimitsRotation, \ f2ip(MaxCorrectionLimitsZoom),MaxCorrectionLimitsZoom, \ UsePreviousAndFutureFramesToFillInBordersPreviousFramesEnabled?1:0,UsePreviousAndFutureFramesToFillInBordersFutureFramesEnabled?1:0, \ UsePreviousAndFutureFramesToFillInBordersPreviousFrames,UsePreviousAndFutureFramesToFillInBordersFutureFrames, \ IgnorePixelsOutside_LetAreaFollowMotion?1:0,DeepAnalysisIfLessThanXPercentOfVectorsAreOk, \ CamcorderHasARollingShutter?1:0,GenerateInterlacedProgressiveVideo?1:0,SameDestinationPropertiesAsSource?1:0, \ SoftBorders?1:0,ExtrapolateColorsIntoBorder?1:0,SoftBorders_EdgeTransitionWidth, \ f2ip(DiscardMotionOfBlocksThatMoveMoreThanXPixels),DiscardMotionOfBlocksThatMoveMoreThanXPixels, \ RememberDiscardedAreasToNextFrame?1:0, \ f2ip(RollingShutterAmount),RollingShutterAmount, \ DetectRotation?1:0,DetectZoom?1:0,f2ip(DetectScenes_Threshold),DetectScenes_Threshold, \ f2ip(AdaptiveZoomSmoothness),AdaptiveZoomSmoothness, \ f2ip(AdaptiveZoomAmount),AdaptiveZoomAmount, \ DiscardMotionOfBlocksThatHaveMaximumPixelValueDifferenceLessThanX, \ DetectScenes?1:0,UseColorMask?1:0,MaskColorInHexRRGGBB \ ) DBUG = true # Used during debugging S=S1+S2 Fn=RT_String("ShakeRattleAndRoll_Debug_%d.txt",Pass) (Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Debug) ? RT_DebugF("Loading VDPlugin='%s' As '%s', PreRoll=%d",Plugin, "Deshaker",PreRoll,name=myName) : NOP LoadVirtualDubPlugin (Plugin, "Deshaker", preroll=PreRoll) (Debug) ? RT_DebugF("Calling Pass=%d Dehaker(S)",(Auto)?1:Pass,name=myName) : NOP Tmp=Deshaker(S) (Auto) ? RT_ForceProcess(Tmp) : NOP (Auto) ? Tmp.RT_AverageLuma(n=0,w=1,h=1) : NOP # Rewind, Read Frame 0. Fixes Avs 2.60 Standard Black Clip, no idea why. (Auto) ? Last : Tmp # If NOT Auto, then we return result of previous DeShaker(Pass=Whatever). Fn=(Auto) ? "ShakeRattleAndRoll_Debug_2.txt" : Fn S =(Auto) ? RT_String(Fmt1,DSVersion,2)+S2 : S (Auto&&Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Auto&&Debug) ? RT_DebugF("Calling Pass=2 Dehaker(S)",name=myName) : NOP (Auto) ? Deshaker(S) : NOP Return Last } Code:
Function GoorawinStub(clip c,Int "Pass",String "LogFile",Bool "Auto",Bool "Debug",String "Plugin",Int "PreRoll") { # Specific fixed settings. ShakeRattleAndRoll(c,Pass, \ EdgeCompensation=4,MaxCorrectionLimitsHorizontalPanning=8.0,MaxCorrectionLimitsVerticalPanning=8.0, \ MaxCorrectionLimitsRotation=3.0,MaxCorrectionLimitsZoom=8.0,CamcorderHasARollingShutter=True,RollingShutterAmount=90.0, \ LogFile=LogFile,Auto=Auto,Debug=Debug, \ Plugin=Plugin,PreRoll=PreRoll \) }
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 3rd December 2018 at 15:39. |
3rd December 2018, 22:42 | #52 | Link |
Registered User
Join Date: Feb 2012
Posts: 82
|
Hi StainlessS
Thanks for your efforts. Your first script with the following settings, works the same as the original script once did. However it will still come up with Access Violation most of the time when using AVSPmod but is OK when rendering. \ ) DBUG = true # Used during debugging S=S1+S2 Fn=RT_String("ShakeRattleAndRoll_Debug_%d.txt",Pass) (Debug) ? RT_DebugF("%s",S,name=myName) : NOP (Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Debug) ? RT_DebugF("Loading VDPlug='%s' As '%s', PreRoll=%d",DeShakerPlugName, "Deshaker_1",PreRoll) : NOP LoadVirtualDubPlugin ("C:\Virtual Dub 2\plugins64\Deshaker_1.vdf","deshaker_1", preroll=PreRoll) Tmp=Deshaker_1(S) (Auto) ? RT_ForceProcess(Tmp) : NOP (Auto) ? Last : Tmp # If NOT Auto, then we return result of previous DeShaker(Pass=Whatever). Tmp = 0 # If Auto, Force closure of tmp, allow reopen of log file for pass=2. Fn=(Auto) ? "ShakeRattleAndRoll_Debug_2.txt" : Fn S =(Auto) ? RT_String(Fmt1,DSVersion,2)+S2 : S (Auto&&Debug) ? RT_DebugF("%s",S,name=myName) : NOP (Auto&&Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Auto) ? RT_Sleep(1.0) : NOP DeShakerPlugName2=RT_FilenameSplit(DeShakerPlugName,7) + "2" + RT_FilenameSplit(DeShakerPlugName,8) (Debug&&Auto) ? RT_DebugF("Loading VDPlug='%s' As '%s', PreRoll=%d",DeShakerPlugName2, "Deshaker_2",PreRoll) : NOP (Auto) ? LoadVirtualDubPlugin ("C:\Virtual Dub 2\plugins64\Deshaker_2.vdf","deshaker_2", preroll=0) : NOP (Debug&&Auto) ? RT_DebugF("Calling Dehaker_2(S)") : NOP (Auto) ? Deshaker_2(S) : NOP Return Last } With your second script, I have not been able to get that to work, as have not yet figured out what needs to be changed to make it work!!! Its very different. |
3rd December 2018, 23:20 | #53 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
You could have easily just copy/paste the two posts, but here as 7z:- http://www.mediafire.com/file/5g2um9...ndRoll.7z/file
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? |
4th December 2018, 00:01 | #54 | Link |
Registered User
Join Date: Feb 2012
Posts: 82
|
I did that, but it can not locate the VD deshaker plugin.
Even if I try and add its location it still has an error, but then I'm not sure where I should be adding that location in this new script. So I probably have not be using the right spot. |
4th December 2018, 00:16 | #55 | Link | |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Quote:
Plugin=(x64) ? "D:\SomeDirectory\Deshaker_x64.vdf" : "D:\SomeOtherDirectory\Deshaker_x86.vdf" or Plugin="D:\Goorawin\DeshakerStuff\DS.vdf" # or whatever, but must be the correct plug for x86 or x64, whatever you are using. EDIT: If Plugin arg not supplied to function, then default is Deshaker.vdf in current directory. If you want, you could change the default in this line Code:
Plugin=Default(Plugin,"Deshaker.vdf") it selects the correct plugin when using Vdub2(x86 or x64 vdub). EDIT: Dont know if there is an AvsPMod x64 version (nor what its process name would be) but something like below could be kludged to make it work with it, ie choose x86 or x64 plugin based on ProcessName Code:
x64= \ (ProcessName=="Virtualdub.Exe" || ProcessName=="AvsPMod.Exe" ) ? False \ : (ProcessName=="Virtualdub64.Exe" || ProcessName=="AvsPMod64.Exe") ? True \ : x64 Or to select x64 plugin if ProcessName contains "64" somewhere, otherwise selects x86 plugin. Code:
x64 = (FindStr(ProcessName,"64")>0) If you look at DebugView (Google), you would see what plugin it is trying to load, eg when loading into VDub2 x64 Code:
00000021 3145.53759766 RT_DebugF: ProcessName=VirtualDub64.exe 00000022 3145.53857422 ShakeRattleAndRoll: Plugin = 'D:\ShakeRattleAndRoll\Deshaker_x64.vdf' 00000023 3145.53979492 ShakeRattleAndRoll: Loading VDPlugin='D:\ShakeRattleAndRoll\Deshaker_x64.vdf' As 'Deshaker', PreRoll=0 00000024 3145.54467773 ShakeRattleAndRoll: Calling Pass=1 Dehaker(S) 00000025 3145.55688477 RT_ForceProcess: Commencing Forced process 00000026 3151.55493164 RT_ForceProcess: 187] 4.98% nFrms=188 T=5.990sec : 31.39FpS 0.031862SpF 00000027 3157.74829102 RT_ForceProcess: 376] 9.99% nFrms=189 T=6.193sec : 30.52FpS 0.032767SpF 00000028 3163.69702148 RT_ForceProcess: 565] 14.99% nFrms=189 T=5.960sec : 31.71FpS 0.031534SpF 00000029 3169.94189453 RT_ForceProcess: 754] 20.00% nFrms=189 T=6.240sec : 30.29FpS 0.033016SpF 00000030 3176.06616211 RT_ForceProcess: 942] 24.98% nFrms=188 T=6.130sec : 30.67FpS 0.032606SpF 00000031 3182.25244141 RT_ForceProcess: 1131] 29.99% nFrms=189 T=6.178sec : 30.59FpS 0.032688SpF 00000032 3188.34228516 RT_ForceProcess: 1320] 34.99% nFrms=189 T=6.100sec : 30.98FpS 0.032275SpF 00000033 3194.32495117 RT_ForceProcess: 1509] 40.00% nFrms=189 T=5.974sec : 31.64FpS 0.031608SpF 00000034 3200.35009766 RT_ForceProcess: 1697] 44.98% nFrms=188 T=6.022sec : 31.22FpS 0.032032SpF 00000035 3206.65405273 RT_ForceProcess: 1886] 49.99% nFrms=189 T=6.302sec : 29.99FpS 0.033344SpF 00000036 3212.80615234 RT_ForceProcess: 2075] 54.99% nFrms=189 T=6.162sec : 30.67FpS 0.032603SpF 00000037 3219.07690430 RT_ForceProcess: 2264] 60.00% nFrms=189 T=6.272sec : 30.13FpS 0.033185SpF 00000038 3225.24340820 RT_ForceProcess: 2452] 64.98% nFrms=188 T=6.162sec : 30.51FpS 0.032777SpF 00000039 3231.24902344 RT_ForceProcess: 2641] 69.99% nFrms=189 T=6.006sec : 31.47FpS 0.031778SpF 00000040 3237.10986328 RT_ForceProcess: 2830] 74.99% nFrms=189 T=5.865sec : 32.23FpS 0.031032SpF 00000041 3243.17749023 RT_ForceProcess: 3019] 80.00% nFrms=189 T=6.069sec : 31.14FpS 0.032111SpF 00000042 3249.07373047 RT_ForceProcess: 3207] 84.98% nFrms=188 T=5.896sec : 31.89FpS 0.031362SpF 00000043 3255.14160156 RT_ForceProcess: 3396] 89.99% nFrms=189 T=6.069sec : 31.14FpS 0.032111SpF 00000044 3261.34228516 RT_ForceProcess: 3585] 94.99% nFrms=189 T=6.193sec : 30.52FpS 0.032767SpF 00000045 3267.47680664 RT_ForceProcess: 3774] 100.00% nFrms=189 T=6.131sec : 30.83FpS 0.032439SpF 00000046 3267.47680664 RT_ForceProcess: Time=121.914secs (2.032mins) : Avg 30.964FpS 0.032295SpF 00000047 3267.49877930 ShakeRattleAndRoll: Calling Pass=2 Dehaker(S) You can use whatever client script you were using before, but instead of loading Deshaker plugin yourself, must supply Plugin filename arg to ShakeRattleAndRoll, (default Deshaker.vdf in current script directory), must also supply Preroll arg (default 0) if non default value needed. Other than that, you can use whatever script you were already using. [If using previously given or modified stubs, then must also add Plugin and Preroll args and call ShakeRattleAndRoll with those args as outlined already]. EDIT: And here a mod of your very first post in this thread (back in 2016), the Rewind line is the important one (fixes the probs we had). Code:
SetMemoryMax(1024) SetFilterMTMode("DEFAULT_MT_MODE", 1) LoadVirtualDubPlugin ("C:\Virtual Dub\plugins32\Deshaker.vdf", "deshaker", preroll=0) Clip=("E:\Resolve Editing\09 Beechy\MTS\00162.MTS") V1=LWLibavVideoSource(Clip,format ="YUV420P8") A=LWLibavAudioSource(Clip) V2=Stabalizer01(V1) AudioDub(V2,A) Assumefps(50.00) Prefetch(2) Return Last function Stabalizer01(clip Clip) { ConvertToRGB32(clip, matrix="rec709") PASS1=Deshaker("19|1|30|4|1|0|1|0|640|480|1|2|1000|1000|1000|1000|4|1|4|2|8|30|300|4|" \ + "D:\\Deshaker logs\\00232.log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|8|8|3|8|0|0|30|30|0|0|" \ + "1|0|1|1|0|10|1000|1|90|1|1|20|5000|100|20|1|0|ff00ff") PASS1.RT_ForceProcess PASS1.RT_AverageLuma(n=0,w=1,h=1) # Rewind, Read Frame 0. PASS2=Deshaker("19|2|30|4|1|0|1|0|640|480|1|2|1000|1000|1000|1000|4|1|4|2|8|30|300|4|" \ + "D:\\Deshaker logs\\00232.log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|8|8|3|8|0|0|30|30|0|0|" \ + "1|0|1|1|0|10|1000|1|90|1|1|20|5000|100|20|1|0|ff00ff") PASS2.ConvertToYV12(matrix="rec709") FZ1000HDFinal05() }
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 4th December 2018 at 04:44. |
|
5th December 2018, 00:25 | #56 | Link |
Registered User
Join Date: Feb 2012
Posts: 82
|
Thank you StainlessS
I did try changing that location and AVSPmod crashed on me so thought it was wrong. Since then I have noted that AVSPmod does crash from time to time with these new script. Maybe it is something to do with the access violation that also happens, but then that was happening before. Anyway it does not happen when rendering which is all good. As I do not use 32bit anymore and the location of Virtual Dub should remain the same I have decided to just use the following in my scripts, and its working really well: \ ) DBUG = true # Used during debugging x64=True PreRoll=0 Plugin=(x64) ? "Deshaker_64.vdf" : "Deshaker_x86.vdf" S=S1+S2 Fn=RT_String("DeshakerStabilizing01_Debug_%d.txt",Pass) (Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Debug) ? RT_DebugF("Loading VDPlugin='%s' As '%s', PreRoll=%d",Plugin, "Deshaker",PreRoll,name=myName) : NOP LoadVirtualDubPlugin ("C:\Virtual Dub 2\plugins64\Deshaker_64.vdf","Deshaker", preroll=preroll) (Debug) ? RT_DebugF("Calling Pass=%d Dehaker(S)",(Auto)?1:Pass,name=myName) : NOP Tmp=Deshaker(S) (Auto) ? RT_ForceProcess(Tmp) : NOP (Auto) ? Tmp.RT_AverageLuma(n=0,w=1,h=1) : NOP # Rewind, Read Frame 0. Fixes Avs 2.60 Standard Black Clip, no idea why. (Auto) ? Last : Tmp # If NOT Auto, then we return result of previous DeShaker(Pass=Whatever). Fn=(Auto) ? "DeshakerStabilizing01_Debug_2.txt" : Fn S =(Auto) ? RT_String(Fmt1,DSVersion,2)+S2 : S (Auto&&Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Auto&&Debug) ? RT_DebugF("Calling Pass=2 Dehaker(S)",name=myName) : NOP (Auto) ? Deshaker(S) : NOP Return Last } Thanks again for all your efforts. |
5th December 2018, 00:46 | #57 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
This is the end of Shake...etc,
Code:
DBUG = true # Used during debugging S=S1+S2 Fn=RT_String("ShakeRattleAndRoll_Debug_%d.txt",Pass) (Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Debug) ? RT_DebugF("Loading VDPlugin='%s' As '%s', PreRoll=%d",Plugin, "Deshaker",PreRoll,name=myName) : NOP LoadVirtualDubPlugin (Plugin, "Deshaker", preroll=PreRoll) (Debug) ? RT_DebugF("Calling Pass=%d Dehaker(S)",(Auto)?1:Pass,name=myName) : NOP Tmp=Deshaker(S) (Auto) ? RT_ForceProcess(Tmp) : NOP (Auto) ? Tmp.RT_AverageLuma(n=0,w=1,h=1) : NOP # Rewind, Read Frame 0. Fixes Avs 2.60 Standard Black Clip, no idea why. (Auto) ? Last : Tmp # If NOT Auto, then we return result of previous DeShaker(Pass=Whatever). Fn=(Auto) ? "ShakeRattleAndRoll_Debug_2.txt" : Fn S =(Auto) ? RT_String(Fmt1,DSVersion,2)+S2 : S (Auto&&Debug&&DBUG) ? RT_WriteFile(Fn,"%s",S) : NOP (Auto&&Debug) ? RT_DebugF("Calling Pass=2 Dehaker(S)",name=myName) : NOP (Auto) ? Deshaker(S) : NOP Return Last The Default for Plugin is Deshaker.vdf in current directory, you dont need hack in the x64 stuff, as you dont even use it afterwards. Just call the function with the path to your chosen plug name ie Plugin="C:\Virtual Dub 2\plugins64\Deshaker_64.vdf", or Hack Only the in blue below (and leave everything else alone). Code:
Auto=Default(Auto,Pass==1) # Default True if Pass==1 or False if Pass==2 Assert(Pass==1 || !Auto,RT_String("%sCannot use Auto=True if Pass==2",myName)) Debug=Default(Debug,True) # Plugin=Default(Plugin,"Deshaker.vdf") Plugin=Default(Plugin,"C:\Virtual Dub 2\plugins64\Deshaker_64.vdf") Assert(Plugin!="",RT_string("%sRequires Plugin",myName)) Plugin=RT_GetFullPathName(Plugin) (Debug) ? RT_DebugF("Plugin = '%s'",Plugin,name=myName) : NOP PreRoll = Max(Default(PreRoll,0),0) Code:
#If Not hacking plugin Plugin = "C:\Virtual Dub 2\plugins64\Deshaker_64.vdf" ShakeRattleAndRoll(plugin=Plugin, ... etc) # or with Hacked Plugin and just ShakeRattleAndRoll( ... etc) Code:
Function GoorawinStub(clip c,Int "Pass",String "LogFile",Bool "Auto",Bool "Debug",String "Plugin",Int "PreRoll") { # Specific fixed settings. Plugin=Default(Plugin, "C:\Virtual Dub 2\plugins64\Deshaker_64.vdf") Preroll=Default(Preroll,0) # or hack to whatever if you dont like zero ShakeRattleAndRoll(c,Pass, \ EdgeCompensation=4,MaxCorrectionLimitsHorizontalPanning=8.0,MaxCorrectionLimitsVerticalPanning=8.0, \ MaxCorrectionLimitsRotation=3.0,MaxCorrectionLimitsZoom=8.0,CamcorderHasARollingShutter=True,RollingShutterAmount=90.0, \ LogFile=LogFile,Auto=Auto,Debug=Debug,Plugin=Plugin,PreRoll=PreRoll \) } # Call with eg GoorawinStub( ... etc) # already Defaults to Goorawin vd path, even for non hacked ShakeRattleAndRoll
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 5th December 2018 at 01:34. |
13th April 2021, 19:20 | #59 | Link |
Registered User
Join Date: Jun 2008
Posts: 10
|
Hello. I'm using Deshaker for stabilization before migration on to the new DePan x64 dll and fully avisynth solution.
Here are the files that (.bat) will run and get (the "log" folder) for all .log files with analysis, for Deshaker. I need advice (maybe stupid): What is the syntax for calling the VD filter at the end of my avisynth script and application by setting "Adaptive (no borders)" + "Bicubic resize (best)" for the second pass? Wouldn't the code have to be complicated? Thanks in advance for any answer. |
Thread Tools | Search this Thread |
Display Modes | |
|
|