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.

 

Go Back   Doom9's Forum > Video Encoding > MPEG-4 Encoder GUIs

Reply
 
Thread Tools Search this Thread Display Modes
Old 16th March 2016, 17:15   #5001  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by poisondeathray View Post
Another one is mt_masktools.dll , that's an older one . There used to be mt_masktools-26.dll and mt_masktools-25.dll (for avisynth 2.6.x and 2.5.x , respectively, for masktools2 a48), but those are older too. The newest one is masktools2.dll (masktools 2 beta 1) for avisynth 2.6 , I would try updating that too

http://avisynth.nl/index.php/MaskTools2
I believe I covered that in my previous post.
Groucho2004 is offline   Reply With Quote
Old 16th March 2016, 17:17   #5002  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,346
Quote:
Originally Posted by Groucho2004 View Post
I believe I covered that in my previous post.
Sorry, I didn't see it before posting. 2 min too late
poisondeathray is offline   Reply With Quote
Old 16th March 2016, 23:32   #5003  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
Hey, we're getting somewhere, thanks to all!

Here is thelogfile from the speed test. I used a very short clip. I didn't include the script from the logfile (Huge!)

Code:
[General info]
Log file created with:                 AVSMeter 2.1.6 (x86)
Script file:                           C:\Users\Bruce\Desktop\Practice\BJM1a.avs
Avisynth version string:               AviSynth 2.60, build:Mar 31 2015 [16:38:54]
Avisynth file version:                 2.6.0.6
Avisynth Interface Version:            6
Avisynth MT support:                   No
Avisynth.dll linker/compiler version:  6.0
Avisynth.dll location:                 C:\Windows\SysWOW64\avisynth.dll
Avisynth.dll time stamp:               2015-03-31, 01:40:58
PluginDir2_5  (HKLM, x86):             C:\Users\Bruce\Videos\Tools\AVISynth\plugins


[Clip info]
Number of frames:                   76
Length (hh:mm:ss.ms):     00:00:05.072
Frame width:                      1920
Frame height:                     1080
Framerate:                      14.985 (15000/1001)
Colorspace:                       YV12
Audio channels:                    n/a
Audio bits/sample:                 n/a
Audio sample rate:                 n/a
Audio samples:                     n/a


[Runtime info]
Frames processed:               76 (0 - 75)
FPS (min | max | average):      0.208 | 0.737 | 0.323
Memory usage (phys | virt):     1121 | 1124 MB
Thread count:                   1
CPU usage (average):            24%
Time (elapsed):                 00:03:55.489
I tried to slip in a "changeFPS (30000, 1001)" at the end, but it didn't take, (it's still 14.985, maybe someone here will help me in the placement of that later.

With the script successfully getting through the meter, I tried MeGUI, and, success!

Now I just need to figure out how to get it back to 29.970, and then press on with what comes after I get me .264 file.

So, what does the AVSmeter tell us?
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 00:05   #5004  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by Bruce/Fl View Post
Code:
FPS (min | max | average):      0.208 | 0.737 | 0.323
So, what does the AVSmeter tell us?
That you have to have a lot of patience using that script.
Groucho2004 is offline   Reply With Quote
Old 17th March 2016, 00:13   #5005  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,346
What was the culprit ? So that other people facing the same symptoms can get help next time. Does avspmod still not work for you ?

If you script has something like "return last", add the changefps() before that, or erase the return line . Or post the current version of the script
poisondeathray is offline   Reply With Quote
Old 17th March 2016, 00:58   #5006  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
Quote:
Originally Posted by Groucho2004 View Post
That you have to have a lot of patience using that script.
Yeah, and I've only got 6 hours of film to process! lol

Maybe 3 hours, since I'm taking out the dupe frames .....

EDIT: I know John really worked on the speed, and he had great success. He has provisions in place for multi threading, but I'm not messing with that yet. (I'll probably need to reincorporate that MT_masktools.dll then?) My desktop that I am at has an old processor, an AMD A6-3650 APU with Radeon(tm) HD Graphics 2.60 GHz (Quad core)

My laptop has an i7, I hope to use that as much as I can, till I spring for a new desktop.

Last edited by Bruce/Fl; 17th March 2016 at 01:17. Reason: More info
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 01:02   #5007  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
Quote:
Originally Posted by poisondeathray View Post
What was the culprit ? So that other people facing the same symptoms can get help next time. Does avspmod still not work for you ?

If you script has something like "return last", add the changefps() before that, or erase the return line . Or post the current version of the script
It looks like it was those newer .dlls Groucho had me switch out. Was it one in particular? I don't know.

After everything gets straightened out I can swap some back in and see which 1(s) jam it up.

I had temporarlily forgot about my AVVSPmod issue. I just tried it, still nothing. Won't open, and when I drag a script to the shortcut (or the executabe) nothing happens. Tried running as admin also, still nothing.

I'll post the script at present, next.
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 01:08   #5008  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
Part 1 of probably 3

Code:
# film restoration script by videoFred.
# denoising, resizing, stabilising, sharpening, auto-levels and auto-white balance.
#
# Modified by John Meyer, October 7, 2012
#
# Changes made by Meyer (June 8, 2010):
#   1. Replaced the MVDegrainMulti function, which was part of the original MVTools
#      with the equivalent function using the newer and faster MVTools2.
#   2. Added RemoveDirt function prior to Degrain in order to eliminate large dust spots. This
#      substantially improves the dirt removal capabilities of this script. The user will need to 
#      download this plugin at:
#          http://www.removedirt.de.tf/
#   3. Eliminated a great deal of sharpening. The original script did sharpening in at least four places.
#      With grainy film stock, this sometimes created objectionable grain. Also, the limitedSharpenFaster
#      function, while excellent for video, is uncessarily slow, and isn't really needed for this low 
#      resolution source. Too much sharpening can make the film look too much like video.
#   4. Added multithreading. I was able to roughly triple the script performance. It may be possible to
#      substantially increase this, perhaps as much as 12x instead of 3x. However, the autolevels function
#      would have to be replaced.
#   5. Fixed several things I found. The result3 option didn't have the manual color correction code, so I 
#      added that back in. All the numbered "stab" variables (stab1, stab2, etc.) aren't needed except 
#      for providing a test function for stabilization. I eliminated all of this to streamline the script.
#   6. Deflicker seemed redundant, given all the averaging that takes place with MDegrain, and also the averaging
#      that is done when the autolevels outputs are selected. 
#   7. I reduced the number of frames used for averaging autolevels from the default (which is 5) to 2.
#      I probably should add a variable in the header so the user can change this. Something else to do
#      in the future ...
#   8. I added yet another set of crop parameters. I did this because both my capture and my output are 
#      done using NTSC DV AVI which is 720x480. However, 8mm film is almost exactly square, so the captured
#      720x480 video has black bars on the side. These need to be cropped off prior to doing motion 
#      stabilization, but then added back prior to the final output, which must still be 720x480 with the
#      black bars on the side.
#   9. I reduced the default depan settings to 20, which is what was recommended in the original script. I
#      also reduced the post-depan cropping. I did this so I could keep as much of the original frame
#      as possible.
#  10. I removed the second denoising and sharpening function. It just seemed to be too much, and made the 
#      result too artificial
#  11. I removed the MVFLowFPS interpolation. I did this during one of dozens and dozens of attempts
#      to improve the speed of the script. I should probably add this back, but if I do so, I also 
#      need to make it work correctly for interlaced output. If the goal is to show this on an NTSC or PAL
#      television set, then it is not correct to convert from the film fps to 25 fps progressive (PAL) or
#      29.97 fps progressive (NTSC). Instead, this should be done as follows (example given is NTSC):
#
#         MFlowFPS(source,super,backward_vec, forward_vec, num=60000, den=1001,ml=200)
#         SeparateFields()
#         SelectEvery(4, 0, 3)
#         Weave()
#
#      This yields interlaced 29.97, which has twice the temporal resolution as 29.97 progressive, and will
#      therefore look correct on a TV set. I have done a lot of this as part of my Kinescope to video
#      conversion scripts. For those scripts, the goal is to make the filmed version of a TV show look
#      like it was actually videotaped. However, for something that originated on film, this "does violence"
#      to the original feel of the media. It is true that it can make horizontal pans less "juddery," but
#      it won't feel like film anymore. Also, this technique does break down, espcially with fast motion
#      in the foreground.
#  12. Removed the unecessary "coloryuv(off_U=blue,off_V=red)" statement from the denoising section.
#  13. Added killaudio() statement to prevent lockups when using SetMTMode().
#
# Changes made on October 7, 2012
#
#   1. Modified RemoveDirtMC function to do estimation in two steps. This improves performance and quality.
#   2. Modified MDegrain to do estimation in two steps. This provides roughly the same quality with blocksize=8
#      as what I was getting with blocksize=4, but with virtually no performance penalty
#   3. Updated to use special build of MVTools2 that works with SVP.
#   4. Moved Autolevels inside special multi-threading section in order to improve performance with autolevels.
#   5. Removed all trim commands because I do all editing outside the script (in Vegas).
#   6. Included two alternative ways to do frame interpolation: SVP and InterFrame. The InterFrame script is probably better
#      but I included the SVP code because it may provide a starting point for more customized approaches. Neither is enabled by default.
#

#====================================================================================
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 01:09   #5009  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
Part 2 of 3

Code:
#VIDEO FILE
#----------------------------------------------------------------------------------------------------------------------------
#Change the following line to point to your video file
source=AVISource("C:\Users\Bruce\Desktop\fs.avi")


#GENERAL PARAMETERS
#----------------------------------------------------------------------------------------------------------------------------
result="result4"                                 #specify the wanted output here 
play_speed=16                                     #play speed (8mm=16; Super8=18; 16mm sound=24)


#COLOR AND LEVELS PARAMATERS
#----------------------------------------------------------------------------------------------------------------------------
saturation=1.0                                                  #for all outputs
gamma=1.0                                                       #for all outputs 
blue= -0  red=-0                                                #manual color adjustment, when returning result3 & result4. Values can be positive or negative
black_level=0  white_level=255 output_black=0  output_white=255 #manual levels, when returning result2 & result4
 

#SIZE, CROP AND BORDERS PARAMETERS
#----------------------------------------------------------------------------------------------------------------------------
CLeft=16  CTop=16  CRight=16  CBottom=16                         #crop values after Depan and before final resizing 
W=1920  H=1080                                                     #final size after cropping 
bord_left=0        bord_top=0     bord_right=0     bord_bot=0    #720p= borders 150
in_bord_left=240  in_bord_top=0  in_bord_right=240  in_bord_bot=0    #Borders around input that must be removed


#STABILISING PARAMETERS
#----------------------------------------------------------------------------------------------------------------------------
maxstabH=5                                                      #maximum values for the stabiliser (in pixels) 20 is a good start value 
maxstabV=20
est_left=40  est_top=40  est_right=40  est_bottom=40             #crop and contast values for special Estimate clip
est_cont=1.6

#DENOISING PARAMETERS
#----------------------------------------------------------------------------------------------------------------------------
#denoising_strength=600                     #denoising level of first denoiser: MVDegrain() 
#denoising_strength=300                     #denoising level of first denoiser: MVDegrain() 
#block_size=   16                           #block size of MVDegrain
#block_size_v= 16
#block_over=    8                           #block overlapping of MVDegrainMulti()

denoising_strength= 600                    #denoising level of first denoiser: MDegrain() 
block_size=   8                            #block size of MVDegrain
block_size_v= 8
block_over=   4                            #block overlapping of MVDegrainMulti()

#denoising_strength= 600                     #denoising level of first denoiser: MDegrain() 
#block_size=   4                             #block size of MVDegrain
#block_size_v= 4
#block_over=   2                             #block overlapping of MVDegrainMulti()

dirt_strength=23                            #sets amount of dirt removal (big spots)


#FOUR STEP SHARPENING PARAMETERS
#--------------------------------------------------------------------------------------------------------------------------------
PRE_sharp_ness= 120   PRE_radi_us= 3              #presharpening (UnsharpMask) just after first denoising
#PRE_sharp_ness= 85   PRE_radi_us= 3              #presharpening (UnsharpMask) just after first denoising

LSF_sharp_ness=160 LSF_radi_us=2  LSF_sub=1.5     #second sharpening parameters (LimitedSharpenFaster) sub=subsampling

#Sharp_Strength = 0.4
Sharp_Strength = 0.1


#AUTO LEVELS PARAMETER
#--------------------------------------------------------------------------------------------------------------------------------
X=4   #X is a special parameter for reducing the autolevels effect on the whites
X2=4  #X2 is a special parameter for reducing the autolevels effect on the blacks 


#NUMBER OF THREADS
#--------------------------------------------------------------------------------------------------------------------------------
threads=6


# END VARIABLES, BEGIN SCRIPT
#=================================================================================================================================


SetMemoryMax(1000)

LoadPlugin ("mvtools2.dll")        #Version 2.5.11.9    2/24/2012
LoadPlugin("autolevels.dll")       #Version 0.6.0.0     1/09/2011
LoadPlugin("Deflicker.dll")        #Version 0.4.0.0     8/16/2004
Loadplugin("Depan.dll")            #Version 1.10.0.0    4/09/2007
LoadPlugin("DepanEstimate.dll")    #Version 1.9.2.0     3/25/2007
LoadPlugin("fft3dfilter.dll")      #Version 2.1.1.0     2/20/2007
#Loadplugin("mt_masktools.dll")     #Version 2.0.23.0    3/14/2008
loadplugin("RemoveDirtSSE2.dll")   #Version 0.9         5/05/2005    
Loadplugin("RemoveGrainSSE2.dll")  #Version 0.9         5/01/2005
#Loadplugin("removegrain.dll")     #Version 0.9         5/01/2005
Loadplugin("warpsharp.dll")        #                    4/05/2010


#Use the following for alternative frame interpolation
#loadplugin("svpflow1.dll")        #Version 1.2.1.0     5/29/2012
#loadplugin("svpflow2.dll")        #Version 1.3.1.0     6/02/2012 
#Import("InterFrame2.avsi")        #Version 2.1.0       6/27/2012

#Import("LimitedSharpenFaster.avs")         #Not used in this script, but available if someone wants to experiment
#LoadPlugIn("LimitedSupport_09Jan06B.dll")  #Used with LimitedSharpenFaster

#Remove all setmtmode statements (there are three in this script) if not using multi-threaded (MT) AVISynth
#setmtmode(5,threads)
source1=AVISource("C:\Users\Bruce\Desktop\fs.avi").assumefps(15000,1001).ConverttoYv12().killaudio
#source1= Avisource(film).assumefps(play_speed).converttoYV12()
cropped_source=source1.crop(in_bord_left,in_bord_top,-in_bord_right,-in_bord_bot)               #remove any black borders on input video
#setmtmode(2)

#cropped_source=filldrops(cropped_source)     #Use this when removing bad frames that have been removed by duplicating previous frame


#STABILIZING
#....................................................................................................................................................................
stab_reference= cropped_source.crop(est_left,est_top,-est_right,-est_bottom).tweak(cont=est_cont).MT_binarize(threshold=80).greyscale().invert()
mdata=DePanEstimate(stab_reference,trust=1.0,dxmax=maxstabH,dymax=maxstabV)
#stab=DePanStabilize(cropped_source,data=mdata,cutoff=0.5,dxmax=maxstabH,dymax=maxstabV,method=1,mirror=15).deflicker()
stab=DePanStabilize(cropped_source,data=mdata,cutoff=0.5,dxmax=maxstabH,dymax=maxstabV,method=1,mirror=15)


#DENOISING
#...................................................................................................................................................................
input_to_removedirt=stab.crop(CLeft,CTop,-CRight,-CBottom)
stabcrop=RemoveDirtMC(input_to_removedirt,dirt_strength,false)

  prefiltered = RemoveGrain(stabcrop,2)
  superfilt =   MSuper(prefiltered, hpad=32, vpad=32,pel=2)
  super=        MSuper(stabcrop, hpad=32, vpad=32,pel=2)

  halfblksize= (block_size>4)   ? block_size/2 : 4
  halfoverlap= (block_over>2)   ? block_over/2 : 2

  bvec1 =  MAnalyse(superfilt, isb = true,  delta = 1, blksize=block_size, overlap=block_over,dct=0)
  bvec1 =  MRecalculate(super, bvec1, blksize=halfblksize, overlap=halfoverlap,thSAD=100) 

  fvec1 =  MAnalyse(super, isb = false, delta = 1, blksize=block_size, overlap=block_over,dct=0)
  fvec1 =  MRecalculate(super, fvec1, blksize=halfblksize, overlap=halfoverlap,thSAD=100)

  bvec2 =  MAnalyse(super, isb = true,  delta = 2, blksize=block_size, overlap=block_over,dct=0)
  bvec2 =  MRecalculate(super, bvec2, blksize=halfblksize, overlap=halfoverlap,thSAD=100)

  fvec2 =  MAnalyse(super, isb = false, delta = 2, blksize=block_size, overlap=block_over,dct=0)
  fvec2 =  MRecalculate(super, fvec2, blksize=halfblksize, overlap=halfoverlap,thSAD=100)

#  bvec3 =  MAnalyse(super, isb = true,  delta = 2, blksize=block_size, overlap=block_over,dct=0)
#  bvec3 =  MRecalculate(super, bvec3, blksize=halfblksize, overlap=halfoverlap,thSAD=100)

#  fvec3 =  MAnalyse(super, isb = false, delta = 2, blksize=block_size, overlap=block_over,dct=0)
#  fvec3 =  MRecalculate(super, fvec3, blksize=halfblksize, overlap=halfoverlap,thSAD=100)


#super = stabcrop.MSuper(pel=2)
#bvec1 =  MAnalyse(super, isb = true,  delta = 1, blksize=block_size, overlap=block_over,dct=0)
#fvec1 =  MAnalyse(super, isb = false, delta = 1, blksize=block_size, overlap=block_over,dct=0)
#bvec2 =  MAnalyse(super, isb = true,  delta = 2, blksize=block_size, overlap=block_over,dct=0)
#fvec2 =  MAnalyse(super, isb = false, delta = 2, blksize=block_size, overlap=block_over,dct=0)
#bvec3 = MAnalyse(super, isb = true,  delta = 3, blksize=block_size, overlap=block_over,dct=0)
#fvec3 = MAnalyse(super, isb = false, delta = 3, blksize=block_size, overlap=block_over,dct=0)


#Use the second line below, and un-comment two lines above if you want to average more frames. Doesn't seem necessary for most work IMHO.
denoised=stabcrop.MDegrain2(super, bvec1,fvec1,bvec2,fvec2,thSAD=denoising_strength).levels(0,gamma,255,0,255).tweak(sat=saturation).unsharpmask(PRE_sharp_ness,PRE_radi_us,0)
#denoised=stabcrop.MDegrain3(super, bvec1,fvec1,bvec2,fvec2,bvec3,fvec3,thSAD=denoising_strength).tweak(sat=saturation).unsharpmask(PRE_sharp_ness,PRE_radi_us,0)
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 01:09   #5010  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
3 of 3

Code:
#SHARPENING
#...................................................................................................................................................................
sharp1=denoised.sharpen(Sharp_Strength)	
#sharp1=limitedSharpenFaster(denoised,smode=1,strength=LSF_sharp_ness,overshoot=50,radius=LSF_radi_us, ss_X=LSF_sub, SS_Y=LSF_sub, dest_x=W - bord_left - in_bord_left - bord_right - in_bord_right,dest_y=H - bord_top - in_bord_top - bord_bot - in_bord_bot)

PreBorderFrame = sharp1.Lanczos4Resize(W - bord_left - in_bord_left - bord_right - in_bord_right, H - bord_top - in_bord_top - bord_bot - in_bord_bot)

#FRAME INTERPOLATION (optional)
#...................................................................................................................................................................

#superfps= MSuper(PreBorderFrame,pel=2)
#backward_vec2 = MAnalyse(superfps, isb = true,blksize=16)
#forward_vec2  = MAnalyse(superfps, isb = false,blksize=16)
#PreBorderFrame = MFlowFps(PreBorderFrame,superfps, backward_vec2, forward_vec2, num=60000, den=1001, ml=200).SeparateFields().SelectEvery(4, 0, 3).Weave()

#The following alternative can provide synthesized frames for hi-def material that causes MSuper to choke
#////// Begin alternative to MFlowFPS ////
#super_params="{pel:2,gpu:1}"
#analyse_params="""{block:{w:32,h:32}, 
#	main:{search:{coarse:{distance:-10}}},
#	refine:[{thsad:200}]
#        }"""

#smoothfps_params="{rate:{num:60,den:16,abs:false},scene:{mode:0,limits:{scene:8500}},algo:21,cubic:1}"

#The following provides smooth output
#super = SVSuper(PreBorderFrame,super_params)
#vectors = SVAnalyse(super, analyse_params)
#PreBorderFrame = SVSmoothFps(PreBorderFrame,super, vectors, smoothfps_params, url="www.svp-team.com", mt=threads).SeparateFields().SelectEvery(4, 0, 3).Weave().assumefps(29.97)
#////// End alternative to MFlowFPS ////


#The following is another alternative that can provide synthesized frames for hi-def material that causes MSuper to choke. Probably better than the one above.
#////// Begin alternative to MFlowFPS ////
#PreBorderFrame=InterFrame(NewNum=30000,NewDen=1001,PreBorderFrame,GPU=true,Cores=threads)
#////// End alternative to MFlowFPS ////

#Change SetMTMode for Autolevels

#SetMTMode(5,threads)

#RESULT1: AUTOLEVELS,AUTOWHITE
#......................................................................................................................................................................
result1= PreBorderFrame.coloryuv(autowhite=true).addborders(X,0,0,0,$FFFFFF).addborders(0,0,X2,0,$000000).autolevels(filterRadius=2).crop(X,0,-X2,-0).addborders(bord_left+in_bord_left, bord_top+in_bord_top, bord_right+in_bord_right, bord_bot+in_bord_bot)

#RESULT3: AUTOLEVELS, MANUAL COLOR CORRECTIONS
#.....................................................................................................................................................................
result3= PreBorderFrame.coloryuv(off_U=blue,off_V=red).addborders(X,0,0,0,$FFFFFF).addborders(0,0,X2,0,$000000).autolevels(filterRadius=2).crop(X,0,-X2,-0).addborders(bord_left+in_bord_left, bord_top+in_bord_top, bord_right+in_bord_right, bord_bot+in_bord_bot)

#SetMTMode(2)


#RESULT2: MANUAL LEVELS, AUTOWHITE
#......................................................................................................................................................................
result2= PreBorderFrame.levels(black_level,gamma,white_level,0,255).coloryuv(autowhite=true).addborders(bord_left+in_bord_left, bord_top+in_bord_top, bord_right+in_bord_right, bord_bot+in_bord_bot)

#RESULT4: MANUAL LEVELS, MANUAL COLOR CORRECTIONS
#.....................................................................................................................................................................
result4= PreBorderFrame.coloryuv(off_U=blue,off_V=red).levels(black_level,gamma,white_level,0,255).addborders(bord_left+in_bord_left, bord_top+in_bord_top, bord_right+in_bord_right, bord_bot+in_bord_bot)

#PARAMETERS FOR THE COMPARISONS
#.....................................................................................................................................................................
W2= W+bord_left+bord_right
H2= H+bord_top+bord_bot
source4=Lanczos4Resize(source1,W2,H2)


#COMPARISONS: ORIGINAL VS RESULTS
#......................................................................................................................................................................
resultS1= stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result1,"autolevels, autowhite",size=28,align=2))
resultS2= stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result2,"autowhite, manual levels correction",size=28,align=2))
resultS3= stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result3,"autolevels, manual color correction",size=28,align=2))
resultS4= stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result4,"manual colors and levels correction",size=28,align=2))

source1=AVISource("C:\Users\Bruce\Desktop\fs.avi").ChangeFPS(30000, 1001)

Eval(result)

# END SCRIPT, BEGIN FUNCTIONS
#=================================================================================================================================


#REMOVE DIRT FUNCTION
#......................................................................................................................................................................
function RemoveDirt(clip input, int "limit", bool "_grey")
{
  clensed=input.Clense(grey=_grey, cache=4)
  alt=input.RemoveGrain(2)
  return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,dmode=2,debug=false,noise=limit,noisy=4, grey=_grey)

  # Alternative settings
  # return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=4,cthreshold=6, gmthreshold=40,dist=1,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=true)
  # return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,tolerance= 12,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=false)
}

function RemoveDirtMC(clip,int "limit", bool "_grey")
{
  _grey=default(_grey, false)
  limit = default(limit,6)

#  prefiltered = fft3dfilter(clip,sigma=1,sigma2=2,sigma3=3,sigma4=5,bw=64,bh=64)
  
  prefiltered = RemoveGrain(clip,2)
  superfilt = MSuper(prefiltered, hpad=32, vpad=32,pel=2)
  super=MSuper(clip, hpad=32, vpad=32,pel=2)

  bvec = MAnalyse(superfilt,isb=true,  blksize=16, overlap=2,delta=1, truemotion=true)
  fvec = MAnalyse(superfilt,isb=false, blksize=16, overlap=2,delta=1, truemotion=true)

  bvec_re = Mrecalculate(super,bvec,blksize=8, overlap=0,thSAD=100)
  fvec_re = Mrecalculate(super,fvec,blksize=8, overlap=0,thSAD=100)

  backw = MFlow(clip,super,bvec_re)
  forw  = MFlow(clip,super,fvec_re)

  clp=interleave(forw,clip,backw)
  clp=clp.RemoveDirt(limit,_grey)
  clp=clp.SelectEvery(3,1)
  return clp
}

#This function is the previous way to do motion estimation. It is slower and not as accurate.
function RemoveDirtMC_old(clip,int "limit", bool "_grey")
{
  _grey=default(_grey, false)
  limit = default(limit,6)
  i=MSuper(clip,pel=2)
  fvec = MAnalyse(i,isb=false, blksize=16, delta=1, truemotion=true)
  bvec = MAnalyse(i,isb=true,  blksize=16, delta=1, truemotion=true)
  backw = MFlow(clip,i,bvec)
  forw  = MFlow(clip,i,fvec)
  clp=interleave(forw,clip,backw)
  clp=clp.RemoveDirt(limit,_grey)
  clp=clp.SelectEvery(3,1)
  return clp
}

# This function will remove near duplicates ("0.1") or exact duplicates (change to "0.0"). It replaces these
# duplicates with a motion estimated frame. 
# Use: In your video editor, replace any single bad frame (burned frame, jump, missing frame from splice, etc.) with a duplicate of the 
# previous frame. Then, include a call to this function
function filldrops (clip c)
{
  super=MSuper(c,pel=2)
  vfe=manalyse(super,truemotion=true,isb=false,delta=1)
  vbe=manalyse(super,truemotion=true,isb=true,delta=1)
  filldrops = mflowinter(c,super,vbe,vfe,time=50)
  fixed = ConditionalFilter(c, filldrops, c, "YDifferenceFromPrevious()", "lessthan", "0.1")
  return fixed
}
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 01:16   #5011  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
I'm trying to set up both my desktop and my laptop with the same programs/scripts.

I have my desktop running the script, and the speed test and MeGUI both work with the script now.

Using the same avisynth, same plugins, etc, when I try to run the speed test on my laptop, it fails at the following step.

"There is no function named "MT_Binarize"

Here is the offending segment.

Code:
#STABILIZING
#....................................................................................................................................................................
stab_reference= cropped_source.crop(est_left,est_top,-est_right,-est_bottom).tweak(cont=est_cont).MT_binarize(threshold=80).greyscale().invert()
mdata=DePanEstimate(stab_reference,trust=1.0,dxmax=maxstabH,dymax=maxstabV)
#stab=DePanStabilize(cropped_source,data=mdata,cutoff=0.5,dxmax=maxstabH,dymax=maxstabV,method=1,mirror=15).deflicker()
stab=DePanStabilize(cropped_source,data=mdata,cutoff=0.5,dxmax=maxstabH,dymax=maxstabV,method=1,mirror=15)
My desktop avisynth setup lets it through, the laptop (windows 10, if it makes a difference) flags it.

Does that point to any particular dll that I may have mishandled, if anyone knows?
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 03:28   #5012  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,346
mt_binarize is from masktools2.dll ; the older version was called mt_masktools-26.dll for avisynth 2.6.x

welcome to avisynth .dll hell everyone goes though it at some point
poisondeathray is offline   Reply With Quote
Old 17th March 2016, 03:42   #5013  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
I wonder why it works on my desktop and not on my laptop though, I'm not positive, but I believe I've got all the same files loaded up on each.
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 09:36   #5014  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by Bruce/Fl View Post
I wonder why it works on my desktop and not on my laptop though, I'm not positive, but I believe I've got all the same files loaded up on each.
Make sure you comment out the explicit "Loadplugin()" statements in the script and check if the the auto-load directory has all the right plugin versions.
Groucho2004 is offline   Reply With Quote
Old 17th March 2016, 10:06   #5015  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
Quote:
Originally Posted by Groucho2004 View Post
Make sure you comment out the explicit "Loadplugin()" statements in the script and check if the the auto-load directory has all the right plugin versions.
A question for you. The way the script is written with that MT_binarize command, doesn't that necessitate having that MT_masktools plug-in in play? Maybe I accidentally left that in when I replaced it with the new masktools and that's why it's working?

I'm at work right now, otherwise I'd look myself. Just doing a thought exercise.

Last edited by Bruce/Fl; 17th March 2016 at 10:11.
Bruce/Fl is offline   Reply With Quote
Old 17th March 2016, 11:20   #5016  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by Bruce/Fl View Post
The way the script is written with that MT_binarize command, doesn't that necessitate having that MT_masktools plug-in in play?
No. The masktools2.dll I linked to in post #5080 contains mt_binarize.

Some advice - Try to get more familiar with Avisynth, this site is excellent for reference and tutorials.
Groucho2004 is offline   Reply With Quote
Old 18th March 2016, 02:15   #5017  |  Link
LouieChuckyMerry
Registered User
 
LouieChuckyMerry's Avatar
 
Join Date: Feb 2014
Posts: 355
Ooops...

Last edited by LouieChuckyMerry; 18th March 2016 at 02:30. Reason: Redundant Idiocy
LouieChuckyMerry is offline   Reply With Quote
Old 18th March 2016, 02:29   #5018  |  Link
LouieChuckyMerry
Registered User
 
LouieChuckyMerry's Avatar
 
Join Date: Feb 2014
Posts: 355
Quote:
Originally Posted by Glarioo View Post
Can I remove the "update_cache"?
Or does MeGUI need this for something.
I regularly cull the "obsolete" and duplicate files, leaving a single file of each type, and I've never had a problem. I think (ha ha) that MeGUI automatically reverts to an older version if the updated version proves problematic, which is why I keep the newest backup. Someone more knowledgeable than I might offer insight...


Quote:
Originally Posted by Groucho2004 View Post
Some advice - Try to get more familiar with Avisynth, this site is excellent for reference and tutorials.
Thanks for that
LouieChuckyMerry is offline   Reply With Quote
Old 18th March 2016, 03:20   #5019  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
Quote:
Originally Posted by Groucho2004 View Post
No. The masktools2.dll I linked to in post #5080 contains mt_binarize..
OK, that explains why it worked on my desktop.

Quote:
Some advice - Try to get more familiar with Avisynth, this site is excellent for reference and tutorials.
Yes, I've been there often, I did the first few pages of tutorials, the "getting started" stuff. I usually go back there when needing a new .dll for whatever reason, that site has legitimate and usually current links to get the latest and correct files.

There is a ton of useful info in there, and I try to read up as much as I can, although obviously not enough.

Quote:
Make sure you comment out the explicit "Loadplugin()" statements in the script and check if the the auto-load directory has all the right plugin versions.
That made sense to me to do that, so I did that. Now, when the script tries to run in AVSInfo, it stops and says:

Quote:
Script error: Clense does not have a named argument "cache"
<C:\Users\Bruce\Desktop\Practice\BJM1c.avs, line 330>
<C:\Users\Bruce\Desktop\Practice\BJM1c.avs, line 360>
<C:\Users\Bruce\Desktop\Practice\BJM1c.avs, line 202>
The only difference between my latest try and the successful one before it was I commented out that group of "Loadplugin" commands.

Does one (or more) of the Loadplugin commands I commented out need to remain, or does that kind of error point to something else entirely?
Bruce/Fl is offline   Reply With Quote
Old 18th March 2016, 03:47   #5020  |  Link
Bruce/Fl
Registered User
 
Join Date: Aug 2015
Posts: 96
I think I may have stumbled upon something here:

http://forum.doom9.org/showthread.php?t=172002

Which says that rgtools doesn't include removedirt.

But that raises another question, why does the script run when I do the loadplugin on rgtools, even though I took out the removedirt dll, which supposedly isn't included in rgtools?
Bruce/Fl is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 17:19.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.