Problem - odd pattern of blended fields in NTSC anime source. Best that most deblenders can do is 1/4 clean frames, 3/4 horrible ones. Looking at the fields, 2/4 have two clean (enough) fields to work with, 2/4 have one clean field and one blended field.
See the frames generally given (PNG so not far off three meg)
Vob piece in annoyingly-split-rar-named-as-zip to get round lamehost: Chunk.part1.rar.zip and Chunk.part2.rar.zip (three and a bit meg)
The best I've got with pattern matching, upsized vertical to stress the bob even more. The xvid avi, or a snow avi for fun Some filtering applied for prettiness and better compresion.
A works-for-this-clip-only avs solution:
sf = clip.TDeint(mode=1, type=1).LanczosResize(640,480).SelectEvery(5,2).AssumeFPS(23.976) dw = clip.DoubleWeave().LanczosResize(640,480).SelectEvery(5,4).AssumeFPS(23.976) ConditionalFilter(clip, sf, dw, "current_frame % 2", "=", "1")
A generic(ish) four-frame selector, work around for the ChangeFPS() bug by adding blank space to the start... and the last frame is DoubleWeave()-ed wrongly (seems to wrap to start?)
output_w = 704 output_h = 528 output_fps = 23.976 global offset = 0 frame_a = 2 frame_b = 4 frame_c = 7 frame_d = 9 method_a = clip.TDeint(mode=1, type=1) #.ShowFrameNumber().Subtitle("A") method_b = clip.DoubleWeave() #.ShowFrameNumber().Subtitle("B") method_c = clip.TDeint(mode=1, type=1) #.ShowFrameNumber().Subtitle("C") method_d = clip.DoubleWeave() #.ShowFrameNumber().Subtitle("D") method_c = BlankClip(method_c, length=10) + method_c method_d = BlankClip(method_d, length=10) + method_d fa = method_a.LanczosResize(output_w,output_h).SelectEvery(10,frame_a).ChangeFPS(output_fps) fb = method_b.LanczosResize(output_w,output_h).SelectEvery(10,frame_b).ChangeFPS(output_fps) fc = method_c.LanczosResize(output_w,output_h).SelectEvery(10,frame_c).ChangeFPS(output_fps) fd = method_d.LanczosResize(output_w,output_h).SelectEvery(10,frame_d).ChangeFPS(output_fps) ScriptClip(fa, "f = (current_frame - offset) % 4" + chr(13) \ + "(f == 0) ? fa : (f == 1) ? fb : (f == 2) ? fc : fd")
I also have a hellish using recursion for loops, strings for arrays, etc avs for passing the pattern you want to use to a function...