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.)
Just wondered if anyone can chime in and let me know if it is an any way possible to fix progressive footage that wasn't properly IVTC or de-interlaced before.
I have a lot of frames that look like this:
My gut tells me no, but I know the avisynth wizards may have some tricks I don't know about.
Posts: 2,250
Threads: 82
Joined: 2015 Jan
Thanks: 488
Given 842 thank(s) in 438 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,250
Threads: 82
Joined: 2015 Jan
Thanks: 488
Given 842 thank(s) in 438 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,250
Threads: 82
Joined: 2015 Jan
Thanks: 488
Given 842 thank(s) in 438 post(s)
I suspect the problem is you're using virtualdub. Load it up in AvsPmod.
Here's my complete plugins folder: https://mega.nz/#!PU8WUZZR!lHjC5YzQ4bNuX...IJLnwh3eio
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,250
Threads: 82
Joined: 2015 Jan
Thanks: 488
Given 842 thank(s) in 438 post(s)
Here are the versions in my SysWOW64 folder:
https://mega.nz/#!ec9SmIIb!lxOl2qhYbMFvz...0ufSfKDAzc
Rename your existing files and use those. Also, if they exist in the System32 folder delete them.
Posts: 300
Threads: 24
Joined: 2015 Jan
Thanks: 39
Given 86 thank(s) in 48 post(s)
(2017-01-05, 02:47 AM)Valeyard Wrote: Here are the versions in my SysWOW64 folder:
https://mega.nz/#!ec9SmIIb!lxOl2qhYbMFvz...0ufSfKDAzc
Rename your existing files and use those. Also, if they exist in the System32 folder delete them.
Thanks again for the assistance. I know there is something not right but damned if I know what it is. I put those in the SysWOW64 folder and removed the one from the system 32 folder. I get the same error message as before. Do I need to load the plugin manually? I have an issue with mpeg2source, which only works if I put
Loadplugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGDecode\DGDecode.dll") at the beginning.
I've tried adding :
Loadplugin("C:\Windows\SysWOW64\fftw3.dll")
Loadplugin("C:\Windows\SysWOW64\libfftw3f-3.dll")
but this results in errors too.
If I use the code without the line, QTGMC(Preset="Placebo",TR2=0,NoiseProcess=2,NoiseRestore=0.3,GrainRestore=0.8), the video then opens. So I know the only issue within the script now is getting the FFTW3.dll to load.
Posts: 2,250
Threads: 82
Joined: 2015 Jan
Thanks: 488
Given 842 thank(s) in 438 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.
|