Posts: 300
Threads: 24
Joined: 2015 Jan
Thanks: 39
Given 86 thank(s) in 48 post(s)
2017-01-01, 03:35 PM
(This post was last modified: 2017-03-16, 10:21 AM by Booshman.)
Posts: 2,260
Threads: 83
Joined: 2015 Jan
Thanks: 488
Given 855 thank(s) in 446 post(s)
Hi, post a sample clip please and I'll have a look.
Posts: 300
Threads: 24
Joined: 2015 Jan
Thanks: 39
Given 86 thank(s) in 48 post(s)
2017-01-02, 04:29 PM
(This post was last modified: 2017-01-02, 04:35 PM by Booshman.)
Posts: 2,260
Threads: 83
Joined: 2015 Jan
Thanks: 488
Given 855 thank(s) in 446 post(s)
2017-01-03, 01:22 AM
(This post was last modified: 2017-01-03, 10:18 AM by Valeyard.)
Yes it can be corrected somewhat. It's a motion-adaptive transfer or standards conversion of some kind, not the result of NTSC pulldown. There are no repeated fileds, they've interpolated new frames into the movie. Your clip has not been deinterlaced which is good. Here is the method I found that works perfectly for this clip (restores to 24.000fps):
Code: mpeg2source("ABC RIC 2.d2v")
separatefields()
PointResize(width(),height()*2)
interleave(selecteven().crop(0,2,0,0).addborders(0,0,0,2),selectodd())
interleave(repair(selecteven(),selectodd(),0,9,9),repair(selectodd(),selecteven(),0,9,9))
interleave(selecteven().crop(0,0,0,-2).addborders(0,2,0,0),selectodd())
crop(0,4,0,-4)
PointResize(width(),height()/2)
weave()
QTGMC(Preset="Placebo",TR2=0,NoiseProcess=2,NoiseRestore=0.3,GrainRestore=0.8)
AssumeFPS(60000,1001)
FixBlend()
Function FixBlend(clip orig){
orig.changefps(24*4,linear=false)
selectevery(4,1)
return last
}
Further info on that method is here. I can't tell with the short clip whether to go to 24.000 or 23.976fps, that's something you'll need to figure out by trial and error. Basically just change the line AssumeFPS(60000,1001) to AssumeFPS(60) and check which version stays in sync longer. If AssumeFPS(60) does then add the line AssumeFPS(24000,1001) to the end of the script. You'll also need to find the correct value for FixBlend (try selectevery(4,0) ... (4,1) ... (4,2) ... (4,3) until you find the right value), and you'll probably need to call the function two times as it'll likely loose sync at some point (I know where it looses sync when going to 25.000 fps, but I'm not sure about 24.000 fps), meaning you'll need to do something like this:
Part1=trim(0,183056).FixBlend()
Part2=trim(183057,0).FixBlend()
Part1 ++ Part2
(edit)
Actually it doesn't do a perfect job for this clip, this fixes it:
Code: trim(0,840).FixBlend(0) ++ trim(841,0).FixBlend(2)
Function FixBlend(clip orig, int n){
orig.changefps(24*4,linear=false)
selectevery(4,n)
return last
}
Given the change in synchronicity in such a short clip it could indicate that you'd have to go through the whole movie splitting it into 20 second chunks or something and switch the select every value. Still, it is doable.
Posts: 300
Threads: 24
Joined: 2015 Jan
Thanks: 39
Given 86 thank(s) in 48 post(s)
Thanks very much for all the info, that's a lot to get my head around!
Maybe a very noobish issue, but I'm having trouble just getting the plugin to load. I'm getting error:
Avisynth open failure:
FFT3DFilter. Can not load FFTW3.DLL!
(QTGMC.avsi, line 467)
("I:\vdub\fixRIC.avs, line 13)
I've tried to fix it by manually loading the plugin in the code, like this, but still no luck:
LoadPlugin("I:\vdub\plugins32\DGDecode\DGDecode.dll")
LoadPlugin("C:\Windows\SysWOW64\FFT3DFilter.dll")
DGDecode_mpeg2source("I:\vdub\ABC RIC 2.d2v")
I've looked online but can't find a solution, any idea where I'm going wrong?
Posts: 2,260
Threads: 83
Joined: 2015 Jan
Thanks: 488
Given 855 thank(s) in 446 post(s)
Posts: 300
Threads: 24
Joined: 2015 Jan
Thanks: 39
Given 86 thank(s) in 48 post(s)
Thanks for all the plugins. I gave it a go and I got the same error in AvsPmod.
Posts: 2,260
Threads: 83
Joined: 2015 Jan
Thanks: 488
Given 855 thank(s) in 446 post(s)
Posts: 300
Threads: 24
Joined: 2015 Jan
Thanks: 39
Given 86 thank(s) in 48 post(s)
Posts: 2,260
Threads: 83
Joined: 2015 Jan
Thanks: 488
Given 855 thank(s) in 446 post(s)
The only reason why you need to load DGDecode.dll is if it isn't in the avisynth folder (which, by the way it wasn't in the plugins I sent you - you find it, of course, in the folder with the DGDindex program that you use to make the .d2v file). If you put DGDecode.dll into the avisynth folder it should load automatically. I have a feeling you're using the wrong folder, my folder is C:\Program Files (x86)\AviSynth\plugins\ and I'm running version 2.60. You can tell what folder is being used because it will lock the files. Although it should certainly work if you launch the file explicitly. It could also be an issue if you're running the MT version or 2.58... you can always uninstall and re-install avisynth though. And I'm pretty sure that if you did that you'd find it installs to C:\Program Files (x86)\AviSynth not C:\Program Files (x86)\AviSynth 2.5.
|