VideoHelp Forum
+ Reply to Thread
Page 1 of 2
1 2 LastLast
Results 1 to 30 of 33
Thread
  1. I have an anime source I have been trying to get to come out right. I think it's supposed to be 29.970fps. The Japanese DVD is 29.970fps Progressive, and the Japanese Blu-Ray is also 29.970fps progressive. The DVD's I have in my country appear to be combed or interlaced.

    This appears to have quite a bit of blending in it too.

    I have been using the usual tfm(order=-1, slow=2) that I use for most anime's, but for some reason it comes out kind of jumpy, instead of smooth panning in some places. It looks like it's bouncing along back and forth instead of a single direction glide at certain parts. Most of it appears perfectly fine, but some parts are ruined looking. Playing back the VOB before encoding doesn't have this issue.

    Look at the 5:32 - 5:35 area. It seems to affect that part a lot more than most others. That part comes out terrible for me.

    Does this require some kind of special treatment or pulldown flags? So far I cant figure this source out. I think it may possibly be a hybrid where some is best at 29.970fps and other parts are better at 23.976fps.


    Would someone have a look and share some suggestions please?

    Here is the file I am working with.

    https://mega.nz/file/tg50lQrD#yjMk0NANANnj44CCz0Ol28Re7R9YnlQN1Y19o6GTSCg
    Quote Quote  
  2. This is the results I keep getting with the tfm.

    https://mega.nz/file/IgZHkaDT#EEdQkIkTWbYNs7dCyetZDvzRxILJaXAMOWreUfpbb28

    Look at the 5:32 - 5:35 area. It has a really weird wobble that's not nearly as obvious when the VOB, or disc is played.
    Last edited by killerteengohan; 4th Oct 2022 at 23:09.
    Quote Quote  
  3. QTGMC().SRestore(frate=23.976)

    Though other parts of the video appear to be 29.97p.
    Last edited by jagabo; 5th Oct 2022 at 08:58.
    Quote Quote  
  4. Originally Posted by jagabo View Post
    QTGMC().SRestore(frate=23.976)

    Though other parts of the video appear to be 29.97p.
    Yeah, I think the CGI is 29.97 and most of the other animation is 23.976. I didn't like how 23.976 kind of ruined those parts that appear to play best at 29.97 with jittery motion.
    I was hoping I could get 29.97 for the entire thing. I don't have the time and patience for a series this long to make vfr timecodes files for each one. Unless perhaps you have an easy way of finding only the 29.97 parts to get the frame numbers a lot quicker. Only way I would be able to find them is by watching the video from beginning to end and making notes of the times it jitters, which would take a long time.

    What makes you suggest 23.976 over 29.970 for this source material?
    Last edited by killerteengohan; 5th Oct 2022 at 11:19.
    Quote Quote  
  5. You might want to try ExBlend (https://forum.doom9.org/showthread.php?t=175948) for the blend removal,...
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  6. If you want 29.97 fps you can SRestore(frate=29.97). Of course, the 23.976 fps segments will be jerky.
    Quote Quote  
  7. Originally Posted by jagabo View Post
    If you want 29.97 fps you can SRestore(frate=29.97). Of course, the 23.976 fps segments will be jerky.
    Yeah, that's one problem I had with it. I tried it before I asked the original question.

    QTGMC can output 60fps after deinterlacing. I am curious, can TFM do that as well? I don't think so, but I thought I would ask.
    Quote Quote  
  8. Yes, TFM can be used to bob 30i fps to 60p. Try one of these:

    Code:
    # smart bob a video using TFM
    
    function TFMBob(clip v, int "pp", int "cthresh")
    {
        pp = default(pp, 6)
        cthresh=default(cthresh, 9)
    
        v.GetParity() ? Interleave(TFM(v, field=1, pp=pp, cthresh=cthresh), TFM(v, field=0, pp=pp, cthresh=cthresh)) : Interleave(TFM(v, field=0, pp=pp), TFM(v, field=1, pp=pp, cthresh=cthresh))
    }
    
    
    # using QTGMC for clip2
    
    function TFMBobQ(clip v, int "pp", int "cthresh")
    {
        pp = default(pp, 6)
        cthresh=default(cthresh, 9)
    
        q = QTGMC(v)
        qe = q.SelectEven()
        qo = q.SelectOdd()
        v.GetParity() ? Interleave(TFM(v, field=1, clip2=qe, pp=pp, cthresh=cthresh), TFM(v, field=0, clip2=qo, pp=pp, cthresh=cthresh)) : Interleave(TFM(v, field=0, clip2=qo, pp=pp, cthresh=cthresh), TFM(v, field=1, clip2=qe, pp=pp, cthresh=cthresh))
    
    }
    
    
    # using nnedi3 for clip2
    
    function TFMBobN(clip v, int "pp", int "cthresh")
    {
        pp = default(pp, 6)
        cthresh=default(cthresh, 9)
    
        n = nnedi3(v, field=-2, nns=4)
        ne = n.SelectEven()
        no = n.SelectOdd()
    
        v.GetParity() ? Interleave(TFM(v, field=1, clip2=ne, pp=pp, cthresh=cthresh), TFM(v, field=0, clip2=no, pp=pp, cthresh=cthresh)) : Interleave(TFM(v, field=0, clip2=no, pp=pp, cthresh=cthresh), TFM(v, field=1, clip2=ne, pp=pp, cthresh=cthresh))
    }

    Use it something like:

    Code:
    Mpeg2Source("VTS_07_1.d2v", CPU2="ooooxx", Info=3) 
    TFMBobN()
    SRestore(frate=29.97)
    Stab(mirror=15)
    Crop(8,0,-8,-0)
    Quote Quote  
  9. Thanks! I will give that a try tomorrow when I get home and let you know what I think.

    I was asking because for some reason, every time I use QTGMC instead of TFM for any source, it makes lines, and details more blurry, or out of place. Have a look at this comparison. It's the same frame. Because of this, I try to use QTGMC as a last resort only.

    https://slow.pics/c/bJHRdg8S

    I hope the TFMBob does a better job.
    Quote Quote  
  10. That's pretty much to be expected as QTGMC attempts to smooth away residual aliasing and buzzing edges.
    Quote Quote  
  11. Originally Posted by jagabo View Post
    That's pretty much to be expected as QTGMC attempts to smooth away residual aliasing and buzzing edges.
    Can that be disabled in QTGMC? Aside from that one issue that makes me hate it, I like it overall.

    Thanks for showing me that TFMBob exists. I tried the TFMBobN. It looks like it does do MUCH better than QTGMC with the lines and details. I may never have to use QTGMC again lol, unless the aliasing smoothing really helps.

    Does the TFMBob have a function similar to QTGMC's fpsdivisor=2? I think the fpsdivisor=2 is throwing out every second frame. Any other alternatives I can try besides srestore to bring it back to 29.970fps? I know there's changefps, but I hate that one. If tdecimate can do it, I'm not 100% sure how to set that one up for 60 to 29.97 or 60 to 23.976. I have only used tdecimate to bring 29.970 down to 23.976.
    Last edited by killerteengohan; 6th Oct 2022 at 11:49.
    Quote Quote  
  12. Originally Posted by killerteengohan View Post
    Can that be disabled in QTGMC?
    From the QTGMC documentation:

    Noise Bypass / Denoising
    Quote Quote  
  13. Keep in mind that TFM is a field matcher, not a deinterlacer. When there's no matching field it falls back on rather simple deinterlacing. Providing a clip2 helps a bit. So TFM is not appropriate for true interlaced material (camcorder video, live sports, TV news, etc.). My TFMBob functions sometimes work for PAL/NTSC conversions.

    The TFM equivalent of QTGMC's fpsdivisor=2 is simply to call TFM only once with TFM(field=0) or TFM(field=1). The TFMBob filters call TFM twice, once with field=0 and once with field=1, then interleaves the two results.

    For your purposes here you want to use SRestore. It preferentially discards the frames with the most blending. TDecimate preferentially discards duplicate frames (blended frames are not seen as duplicates). And ChangeFPS blindly discards every Nth frame (every other frame when going from 60p to 30p).
    Quote Quote  
  14. I always use clip2 with TFM and QTGMC ever since you taught me about it a long time back, because it does help and I have used it a lot to catch more leftovers TFM misses. I tried using TFMBobQ so I could use QTGMC as clip2, and its ruining the video like this. Am I using it wrong?
    https://forum.videohelp.com/images/imgfiles/noLkpLD.png
    https://forum.videohelp.com/images/imgfiles/sJL8GsE.png

    TFMBobN doesn't seem to have a clip2 parameter.
    Last edited by killerteengohan; 6th Oct 2022 at 14:11.
    Quote Quote  
  15. Originally Posted by killerteengohan View Post
    I always use clip2 with TFM and QTGMC ever since you taught me about it a long time back, because it does help and I have used it a lot to catch more leftovers TFM misses. I tried using TFMBobQ so I could use QTGMC as clip2, and its ruining the video like this. Am I using it wrong?
    https://forum.videohelp.com/images/imgfiles/noLkpLD.png
    https://forum.videohelp.com/images/imgfiles/sJL8GsE.png
    I haven't seen it do that but it looks like some kind of chroma subsampling error. Make sure the field order is set correctly before calling it. Also make sure it's one of the supported color formats. Try ConvertToYV12(interlaced=true).

    Originally Posted by killerteengohan View Post
    TFMBobN doesn't seem to have a clip2 parameter.
    Both TFMBobQ and TFMBobN create clip2 from the input clip. The former using QTGMC, the latter using nnedi3.
    Quote Quote  
  16. I think there had been a thread discussing blend fix the Initial D anime series. It suffers from the same blending as many other 90s anime (like the bloody evnagleion). As far as I know, the artefact is not fully fixable. It was probably a low quality anti flicker filter reducing the flicker caused by differences in light (50Hz) and video system (60Hz) in a telecine machine.

    Image
    [Attachment 67116 - Click to enlarge]


    AnimeIVTC might fix some motionless stills or the lucky scenes animated on thirds, but the blending will be present.

    Does this require some kind of special treatment or pulldown flags? So far I cant figure this source out. I think it may possibly be a hybrid where some is best at 29.970fps and other parts are better at 23.976fps.
    pretty sure animeivtc's mode 4 (hybrid) can help
    Last edited by rrats; 6th Oct 2022 at 17:51.
    Quote Quote  
  17. Originally Posted by jagabo View Post
    I haven't seen it do that but it looks like some kind of chroma subsampling error. Make sure the field order is set correctly before calling it. Also make sure it's one of the supported color formats. Try ConvertToYV12(interlaced=true).

    I'm not sure whats with the purple like in those images. It comes out fine if I encode it, and it doesn't do that in my other avisynth previewing software. None of those suggestions were a fix.

    I guess the program I have been using all this time has suddenly decided it doesn't like QTGMC anymore lol. I restarted the program, and it went away. After using it for a while, that started happening again. Apparently its nothing to worry about and is a simple software issue.

    Thanks for the TFMBob information. If I come across any problems or questions, I will ask.
    Quote Quote  
  18. Many programs have problems with MPEG 2 in MKV. That's why I remuxed to VOB (MPEG 2 program stream) first, then used DgIndex/Mpeg2Source() to read the video.
    Quote Quote  
  19. Originally Posted by jagabo View Post
    Many programs have problems with MPEG 2 in MKV. That's why I remuxed to VOB (MPEG 2 program stream) first, then used DgIndex/Mpeg2Source() to read the video.
    I'm using the original VOB I extracted from the disc that's been file indexed with DGIndex. That was pretty much a one time issue for me. I think it's because I had multiple preview tabs with different scripts all trying to access the same source file at the same time. Closing and re-opening fixed it until using a bunch of preview tabs again. It's funny that only the QTGMC filter set that off when it was happening.
    Quote Quote  
  20. It sounds like something isn't completely thread safe yet.
    Quote Quote  
  21. I have a question about the TFMBobQ filter.

    Code:
    # using QTGMC for clip2
    
    function TFMBobQ(clip v, int "pp", int "cthresh")
    {
        pp = default(pp, 6)
        cthresh=default(cthresh, 9)
    
        q = QTGMC(v)
        qe = q.SelectEven()
        qo = q.SelectOdd()
        v.GetParity() ? Interleave(TFM(v, field=1, clip2=qe, pp=pp, cthresh=cthresh), TFM(v, field=0, clip2=qo, pp=pp, cthresh=cthresh)) : Interleave(TFM(v, field=0, clip2=qo, pp=pp, cthresh=cthresh), TFM(v, field=1, clip2=qe, pp=pp, cthresh=cthresh))
    
    }
    Is that using QTGMC at it's default settings? Can I alter the QTGMC settings in the code?

    I would like it to be QTGMC with parameters like these.
    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", FPSDivisor=2, sourcematch=3, sharpness=0.1)
    Quote Quote  
  22. Originally Posted by killerteengohan View Post
    I have a question about the TFMBobQ filter.

    Code:
    # using QTGMC for clip2
    
    function TFMBobQ(clip v, int "pp", int "cthresh")
    {
        pp = default(pp, 6)
        cthresh=default(cthresh, 9)
    
        q = QTGMC(v)
        qe = q.SelectEven()
        qo = q.SelectOdd()
        v.GetParity() ? Interleave(TFM(v, field=1, clip2=qe, pp=pp, cthresh=cthresh), TFM(v, field=0, clip2=qo, pp=pp, cthresh=cthresh)) : Interleave(TFM(v, field=0, clip2=qo, pp=pp, cthresh=cthresh), TFM(v, field=1, clip2=qe, pp=pp, cthresh=cthresh))
    
    }
    Is that using QTGMC at it's default settings?
    Yes.

    Originally Posted by killerteengohan View Post
    Can I alter the QTGMC settings in the code?
    Yes.

    Originally Posted by killerteengohan View Post
    I would like it to be QTGMC with parameters like these.
    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", FPSDivisor=2, sourcematch=3, sharpness=0.1)
    You can't use FPSDivisor=2. The number of frames from QTGMC and TFMBobQ must match.
    Quote Quote  
  23. How do you alter the avsi so it's using this?
    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", sourcematch=3, sharpness=0.1)
    Quote Quote  
  24. Just add all the parameters to the QTGMC call.
    Quote Quote  
  25. TFM with QTGMC for clip2 is coming out different than TFMBobQ with QTGMC as clip2.

    Have a look.
    https://slow.pics/c/bMIkTbug

    The regular TFM with clip2 is catching those leftover combing/interlacing artifacs so much better for some reason.
    If TFMBobQ is essentially also QTGMC for clip2, why is it doing a worse job at this part?


    Here is how I am using it

    Code:
    tfm(order=-1, slow=2, cthresh=8, clip2=QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=2, sourcematch=3, sharpness=0.1))
    srestore(frate=23.976)
    and

    Code:
    TFMBobQ(cthresh=8)
    SRestore(frate=23.976)

    If it helps any, heres the original VOB I am working with.
    https://mega.nz/file/VwB1WJ5D#yjMk0NANANnj44CCz0Ol28Re7R9YnlQN1Y19o6GTSCg

    The part giving me the noticeable issues is about 22:01 - 22:07
    Quote Quote  
  26. So far the only thing I could find to stop that in TFMBobQ is set the cthresh way down to 2. That's making everything else appear softer and is adding in line blends from other frames to other motion parts unfortunately.
    Quote Quote  
  27. Video Restorer lordsmurf's Avatar
    Join Date
    Jun 2003
    Location
    dFAQ.us/lordsmurf
    Search Comp PM
    Originally Posted by killerteengohan View Post
    I was hoping I could get 29.97 for the entire thing.
    You have to edit apart the clips, then process each properly.

    I don't have the time and patience
    Video requires time and patience (and often budget). There's a reason projects can takes months or years, even decades in a few cases. Video is not a task for the impatient or lazy.
    Want my help? Ask here! (not via PM!)
    FAQs: Best Blank DiscsBest TBCsBest VCRs for captureRestore VHS
    Quote Quote  
  28. If you look at the output of TFM(clip2=QTGMC()) vs. TFMBobQ().SelectEven() you'll see they are nearly identical (as they should be). With this particular video the output of TFMBobQ().SelectOdd() produces many frames that don't match well (aliasing). With all the extra frames (and bouncing) produced by TFMBobQ() SRestore() is having a hard time differentiating blended and original frames. It ends up picking many of the aliased frames. Specifying mode=0 to the TFM() calls in TFMBobQ() might help.
    Quote Quote  
  29. Originally Posted by jagabo View Post
    If you look at the output of TFM(clip2=QTGMC()) vs. TFMBobQ().SelectEven() you'll see they are nearly identical (as they should be). With this particular video the output of TFMBobQ().SelectOdd() produces many frames that don't match well (aliasing). With all the extra frames (and bouncing) produced by TFMBobQ() SRestore() is having a hard time differentiating blended and original frames. It ends up picking many of the aliased frames. Specifying mode=0 to the TFM() calls in TFMBobQ() might help.
    That makes quite a bit more sense after reading your description.

    Actually, the mode=0 seems to have done the trick as well. I'm not 100% sure why it worked, but it looks like it has. I have never used mode=0 before, I have always used the default of mode=1.

    0 = 2-way match (p/c)
    1 = 2-way match + 3rd match on combed (p/c + n)

    Whats with the n, and is mode=1 supposed to be better somehow?
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!