VideoHelp Forum
+ Reply to Thread
Page 1 of 4
1 2 3 ... LastLast
Results 1 to 30 of 98
Thread
  1. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    Or more specifically, I'm working with a clip that has strong noise. Ttempsmooth and Temporal Cleaner are my choice cleaning filters. However, this one's a doozy and requires strong filtration in some segments. I usually TIVTC before doing anything else. My question is: In order to avoid ghosting/blurring, is there a better and more resourceful way to deinterlace or IVTC my clip before I filter?

    PS - I am aware that I have to weave back if I deinterlace.

    Thanks
    Quote Quote  
  2. A proper IVTC doesn't result in any ghosting or blurring -- unless those problems are in the video (as often happens with PAL/NTSC conversions).
    Quote Quote  
  3. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    No, my problem is not the IVTC causing the ghosting/blurring.

    The aggressive temporal filtration is what is causing this.

    So what my question is, considering that the ghosting (after temporal filtration) is an issue that affects the image (hence the frame/field), is there a BETTER way to telecide or deinterlace my clip (OTHER than TIVTC), such as BOB, BEFORE I add the Temporal filtration, in order to achieve better results?
    Quote Quote  
  4. Originally Posted by unclescoob View Post
    So what my question is, considering that the ghosting (after temporal filtration) is an issue that affects the image (hence the frame/field), is there a BETTER way to telecide or deinterlace my clip
    No. Use McTemporalDenoise() instead.
    Quote Quote  
  5. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    I've been trying, but my computer is not reading the FFT3D file correctly. I have installed it, un-installed it, re-installed it, un-installed it, etc. a trillion times from my System32 folder. Nothing.

    At one point, sanlyn offered the "correct" file for Windows 7 (32 bit). I installed it. When I tried opening my script [McTemporalDenoise (settings="low"), Virtualdub won't open it. Just like AvsPmod, it tells me that the filter is missing. Any suggestions on how to work around this?
    Quote Quote  
  6. Did you put fftw3.dll in your System32 or SysWoW64 folder?
    Quote Quote  
  7. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    I put the fftw3.dll in my System32 folder. Sorry, I mispelled it.
    Quote Quote  
  8. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    Any other ideas? Maybe I can call it as a function?
    Quote Quote  
  9. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by unclescoob View Post
    Any other ideas? Maybe I can call it as a function?
    It is a function. The script for MCTemporalDenoise begins with these words:

    Code:
    function MCTemporalDenoise( clip i, int "radius", int "sigma". . .
    Didn't you say somewhwere that you use Windows7 ? If your OS is 32-bit, fftw3 goes in C:\Windows\System32. If your running 64-bit Win7, it goes in C:\Windows\SysWow64. To find which version of Windows 7 you're running:
    1. Click the Start button
    2. right-click on Computer
    3. In the menu that pops up, click Properties
    4. In the pop-up menu that results, click System
    5. The info in the System panel tells you if you're running 32-bit or 64-bit Windows 7.
    Last edited by sanlyn; 21st Mar 2014 at 22:16.
    Quote Quote  
  10. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    Originally Posted by sanlyn View Post
    It is a function. The script for MCTemporalDenoise begins with these words:

    Code:
    function MCTemporalDenoise( clip i, int "radius", int "sigma". . .
    Whoah, hold on a sec. I thought the script for MCTemporalDenoise begins with a simple:

    McTemporalDenoise(settings="low")

    This is according to the other thread where this was being discussed. I'm getting mixed information here.
    Quote Quote  
  11. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    MCTemportalDenoise(settings="low") is a command to execute the function, not the function itself. Look at the function's avsi documentation here http://latoninf.free.fr/d9/MCTD/MCTemporalDenoise.v1.4.20.avsi and scroll down until you find the words "function MCTemporalDenoise", about 1/3 down the whole document. That's where the actual function begins. Everything above it is comments-only.
    Last edited by sanlyn; 21st Mar 2014 at 22:16.
    Quote Quote  
  12. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    Ok, so would my script would go something like:

    Mpeg2Source(yaddayadda, cpu=3)
    Tdecimate(yaddayadda)
    TFM(yaddayadda)
    function MCTemporalDenoise( clip i, int "radius", int "sigma", bool "twopass", bool "useTTmpSm", int "limit", int "limit2", int "post", bool "chroma", bool "interlaced",
    \ bool "sharp", bool "adapt", int "strength", int "SHmode", int "SHmethod", int "Slimit", int "Sovershoot", bool "Tlimit", int "Tovershoot",
    \ bool "protect", int "cutoff", int "threshold", int "maxdiff",
    \ bool "AA", bool "useEEDI2", float "reduc", int "maxd", int "AAthr", int "method",
    \ bool "deblock", bool "useQED", int "quant1", int "quant2",
    \ bool "edgeclean", int "ECrad", int "ECthr", string "ECmode",
    \ bool "stabilize", int "maxr", int "TTstr",
    \ bool "enhance", float "GFthr", float "AGstr", int "bias", int "temp",
    \ int "bwbh", int "owoh", int "blksize", int "overlap",
    \ bool "GPU", bool "fixband", int "bt", int "ncpu", int "precision",
    \ int "thSAD", int "thSAD2", int "thSCD1", int "thSCD2",
    \ bool "truemotion", bool "MVglobal", int "pel", int "pelsearch", int "search", int "searchparam", int "MVsharp", int "DCT",
    \ clip "p", string "settings",
    \ bool "show", int "screenW", int "screenH" )
    McTemporalDenoise(settings="low")
    Quote Quote  
  13. I usually put McTemporalDenoise.AVS in my AviSynth plugins folder then import it into my working script:

    Code:
    import("C:\Program Files (x86)\AviSynth 2.5\plugins\McTemporalDenoise.avs")
    
    Mpeg2Source(yaddayadda, cpu=3)
    Tdecimate(yaddayadda)
    TFM(yaddayadda)
    McTemporalDenoise(settings="low")
    If you change the extension from AVS to AVSI, and put it in your plugins folder the script will be imported automatically any time you use any AVS script.

    <edit>
    fixed the import line in the script
    </edit>
    Last edited by jagabo; 27th Feb 2012 at 07:27.
    Quote Quote  
  14. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Or more specifically:

    Code:
    import("C:\Program Files (x86)\AviSynth 2.5\plugins\MCTemporalDenoise.avs")  
    
    Mpeg2Source(yaddayadda, cpu=3) 
    Tdecimate(yaddayadda) 
    TFM(yaddayadda) 
    McTemporalDenoise(settings="low")
    Just to show more clearly how the import and the function call would match up. The AVS belongs in Avisynth plugins. Or as jagabo suggests, just change .avs to .avsi and forget the import. I just don't like to have Avisynth going thru a ton of avsi's to load every script, so I tend to use "import" nowadays.
    Last edited by sanlyn; 21st Mar 2014 at 22:16.
    Quote Quote  
  15. LOL. I pasted the wrong import line!

    Also, if you would rather paste the function into your working script it helps (in terms of readability) to separate the functions from the working portion of your script. I usually put function declarations at the start.

    Code:
    # first import stuff
    # and declare functions
    
    function MCTemporalDenoise( clip i, int "radius", int "sigma",  bool "twopass", bool "useTTmpSm", int "limit", int "limit2", int "post",  bool "chroma", bool "interlaced",
     \ bool "sharp", bool "adapt", int "strength", int "SHmode", int  "SHmethod", int "Slimit", int "Sovershoot", bool "Tlimit", int  "Tovershoot",
     \ bool "protect", int "cutoff", int "threshold", int "maxdiff",
     \ bool "AA", bool "useEEDI2", float "reduc", int "maxd", int "AAthr", int "method",
     \ bool "deblock", bool "useQED", int "quant1", int "quant2",
     \ bool "edgeclean", int "ECrad", int "ECthr", string "ECmode",
     \ bool "stabilize", int "maxr", int "TTstr",
     \ bool "enhance", float "GFthr", float "AGstr", int "bias", int "temp",
     \ int "bwbh", int "owoh", int "blksize", int "overlap",
     \ bool "GPU", bool "fixband", int "bt", int "ncpu", int "precision",
     \ int "thSAD", int "thSAD2", int "thSCD1", int "thSCD2",
     \ bool "truemotion", bool "MVglobal", int "pel", int "pelsearch", int "search", int "searchparam", int "MVsharp", int "DCT",
     \ clip "p", string "settings",
     \ bool "show", int "screenW", int "screenH" )
    
    # then comes the working script
    
    Mpeg2Source(yaddayadda, cpu=3)
    Tdecimate(yaddayadda)
    TFM(yaddayadda)
    McTemporalDenoise(settings="low")
    Some people prefer to put the working portion of the script at the top instead of the bottom. But I'm an old ANSI C programmer.
    Quote Quote  
  16. Member
    Join Date
    Jul 2009
    Location
    Spain
    Search Comp PM
    Originally Posted by jagabo View Post
    Code:
    # first import stuff
    # and declare functions
    
    function MCTemporalDenoise( clip i, int "radius", int "sigma",  bool "twopass", bool "useTTmpSm", int "limit", int "limit2", int "post",  bool "chroma", bool "interlaced",
     \ bool "sharp", bool "adapt", int "strength", int "SHmode", int  "SHmethod", int "Slimit", int "Sovershoot", bool "Tlimit", int  "Tovershoot",
      ...
      \ bool "show", int "screenW", int "screenH" )
    
    # then comes the working script
    
    Mpeg2Source(yaddayadda, cpu=3)
    ...
    Of course you also need the actual body of the function, not shown in jagabo's post or unclescoob's earlier post #12.
    Quote Quote  
  17. Yeah, I just copied his script. Guess I'm just not paying attention today.
    Quote Quote  
  18. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    Ok, so can you explain what the actual body of the function is???
    Quote Quote  
  19. Originally Posted by unclescoob View Post
    Ok, so can you explain what the actual body of the function is???
    Everything between the first { and last }.
    Quote Quote  
  20. Originally Posted by unclescoob View Post
    Ok, so can you explain what the actual body of the function is???
    Originally Posted by sanlyn View Post
    Look at the function's avsi documentation here http://latoninf.free.fr/d9/MCTD/MCTemporalDenoise.v1.4.20.avsi and scroll down until you find the words "function MCTemporalDenoise", about 1/3 down the whole document. That's where the actual function begins. Everything above it is comments-only.
    Beginning with the word 'function', copy everything after that all the way to the bottom and then paste into an .avs or .avsi.

    Or just copy and paste the whole thing, although the stuff above 'function' isn't actually part of the function and some stuff at the bottom is a different function for showing the effects. You might also find this page helpful:

    http://avisynth.org/mediawiki/MCTemporalDenoise
    Quote Quote  
  21. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    Ok, I will do that.
    Quote Quote  
  22. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by unclescoob View Post
    Ok, so can you explain what the actual body of the function is???
    As jagabo says, all the code between the start end end braces "{" and "}" is the body of the actual function. Anything that starts with "#" is a comment and is ignored by the system.

    To vastly oversimplify. . .

    A programmed function is a self-contained body of executable code (instructions) that performs a defined task. Often, the function receives some sort of value or parameter from the command that calls it. For instance, MCTemporalDenoise is often called with the statement MCTemporalDenoise(settings="Low"). The function will receive that command and that value (Settings="Low) and perform in a pre-programmed manner. If you use the command MCTemporalDenoise(settings="High"), the function will perform a somewhat different path of instructions based on that value.

    Functions always "do something", and often they return a result. MCTemporalDenoise returns a processed piece of video to the command that calls it.

    The idea of using functions is that they are repeatable and, hopefully, they are supposed to work every time. The function can be inserted into any program (script) or referenced with a statement like "import" without the need for retyping it and re-inventing the wheel every time it's executed. For example, let's say you have a clip with a lot of jaggies and aliasing. The anti-alias function daa() is often called several times in a row to clean up aliasing. You can call it several times in a row this way:

    daa().daa().daa()

    By default the function knows that it's receiving a clip (and unless you specify otherwise, the clip by default is the clip you're presently working with). That function will be executed onto the clip 3 times, each time returning a processed result, receiving that result a second time, re-processing it and returning it, and doing it again a third time. So there are two ways to invoke this process 3 times: the first way is to simply call the function 3 times:

    daa().daa().daa()

    The other way, without a function, is to retype this code 3 times:

    nn = c.nnedi2(field=-2)
    dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
    dblD = mt_makediff(c,dbl,U=3,V=3)
    shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)
    DD = shrpD.repair(dblD,13)
    return dbl.mt_adddiff(DD,U=3,V=3)

    nn = c.nnedi2(field=-2)
    dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
    dblD = mt_makediff(c,dbl,U=3,V=3)
    shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)
    DD = shrpD.repair(dblD,13)
    return dbl.mt_adddiff(DD,U=3,V=3)

    nn = c.nnedi2(field=-2)
    dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
    dblD = mt_makediff(c,dbl,U=3,V=3)
    shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)
    DD = shrpD.repair(dblD,13)
    return dbl.mt_adddiff(DD,U=3,V=3)

    That's a short function that actually calls other pre-programmed functions and plugins. So which would you rather do? Include the code for a single function that can be used in other programs, or write all the code again and again, including the code for nnedi2 (whose complex code you would also have to type in full each time), all the code for masktools (there's a lot of that), and the other functions and commands the function executes? Or would you rather reference the daa function's avs code and simply type "daa()" ?

    Many Avisynth commands are functions. For instance, the overlay() function internally executes more C++ and assembler coded instructions than you can shake a stick at. Would you prefer to write that ton of code every time you want to overlay a piece of video onto another? No way. AviSource() is another example. Would you want to write all the code that actually fetches and loads an AVI -- it woujld take half a day, and you better not make any typos! -- or would you rather type AviSource("path/blah/blahblah").
    Last edited by sanlyn; 21st Mar 2014 at 22:17.
    Quote Quote  
  23. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    As I stated before: The people who write these filters, really need to get their shit together in making this a tad more user-friendly. Now before you all throw me in the oven, I said USER friendly, not LAZY MORON friendly.

    Manono, I do not find the link helpful. I have read that document various times. I actually have a printout of it in my bag. The document pretty much lists all the functions of the filter, and the outcome of different settings.

    It fails to explain how to import the function and THEN, type the script. It also doesn't tell you that you need to put the fft3d.dll in your System32 folder. It doesn't give you a step by step guide. Yes, some of us need that, actually! Who knew!
    Quote Quote  
  24. Member
    Join Date
    Jul 2009
    Location
    Spain
    Search Comp PM
    Originally Posted by sanlyn View Post
    The other way, without a function, is to retype this code 3 times:

    nn = c.nnedi2(field=-2)
    dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
    dblD = mt_makediff(c,dbl,U=3,V=3)
    shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)
    DD = shrpD.repair(dblD,13)
    return dbl.mt_adddiff(DD,U=3,V=3)

    nn = c.nnedi2(field=-2)
    dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
    dblD = mt_makediff(c,dbl,U=3,V=3)
    shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)
    DD = shrpD.repair(dblD,13)
    return dbl.mt_adddiff(DD,U=3,V=3)

    nn = c.nnedi2(field=-2)
    dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
    dblD = mt_makediff(c,dbl,U=3,V=3)
    shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)
    DD = shrpD.repair(dblD,13)
    return dbl.mt_adddiff(DD,U=3,V=3)
    Not quite, because the first 'return' would effectively end the script.
    To get the effect you want, you would have to replace the 1st and 2nd 'return's by 'c =' and remove the 3rd one altogether.

    @unclescoob
    For documentation on the form of Avisynth user functions (ie those written in the scripting language), see
    http://avisynth.org/mediawiki/User_defined_script_functions
    Last edited by Gavino; 22nd Feb 2012 at 14:19.
    Quote Quote  
  25. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by unclescoob View Post
    As I stated before: The people who write these filters, really need to get their shit together in making this a tad more user-friendly. Now before you all throw me in the oven, I said USER friendly, not LAZY MORON friendly.

    Manono, I do not find the link helpful. I have read that document various times. I actually have a printout of it in my bag. The document pretty much lists all the functions of the filter, and the outcome of different settings.

    It fails to explain how to import the function and THEN, type the script. It also doesn't tell you that you need to put the fft3d.dll in your System32 folder. It doesn't give you a step by step guide. Yes, some of us need that, actually! Who knew!
    Unclescoob, mah man, simmer down. I and others have explained how to copy a file into a folder. The plugin's documentation mentions the files and their locations in some detail. If you want to know how to find a file, copy it, find a folder, and paste the file into that folder, that has also been explained in detail. Learning how to navigate your way thru a computer system is not advanced knowledge, it's basic to using any computer.

    You might want to keep your file names straight. There is no "fft3d.dll" involved. The two files involved are "fft3dfilter.dll" (the Avisynth plugin) and "fftw3.dll" (dated 2004 and should be in either System32 or SysWOW64, depending on your OS). We have asked several times, which version of Windows 7 you are using, 32-bit or 64-bit? I posted instructions on how to get that information https://forum.videohelp.com/threads/343806-What-is-the-best-way-to-treat-Telecine-befor...=1#post2143199 . Those steps were copied directly off a free internet site, one of dozens of such free sites. Check your email. I sent more instructions this morning.
    Last edited by sanlyn; 21st Mar 2014 at 22:17.
    Quote Quote  
  26. Originally Posted by unclescoob View Post
    It fails to explain how to import the function
    It's assumed you know that because it's not specific to that particular script. It's the same for all AVS scripts. It's in the AviSynth documentation.

    Originally Posted by unclescoob View Post
    and THEN, type the script.
    Because that is not particular to using McTemproralDenoise(). All scripts need to typed. It's described in the AviSynth documentation.

    Originally Posted by unclescoob View Post
    It also doesn't tell you that you need to put the fft3d.dll in your System32 folder.
    Because that's not a part of McTemporalDenoise(), it's part of fft3dfilter. It's in the fft3dfilter documentation.

    Originally Posted by unclescoob View Post
    It doesn't give you a step by step guide.
    Of course not. Do you expect every advanced filter writer to give you a full tutorial on how to use AviSynth? Do you expect every novel writer to teach you the alphabet, basic words, sentence structure, etc. first?
    Quote Quote  
  27. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by Gavino View Post
    Originally Posted by sanlyn View Post
    The other way, without a function, is to retype this code 3 times:

    nn = c.nnedi2(field=-2)
    dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
    dblD = mt_makediff(c,dbl,U=3,V=3)
    . . . . .
    Not quite, because the first 'return' would effectively end the script.
    To get the effect you want, you would have to replace the 1st and 2nd 'return's by 'c =' and remove the 3rd one altogether.
    Well, yes. I was lazy. In the real world, you'd have to keep resetting a new "c" and use return at the very end.
    Last edited by sanlyn; 21st Mar 2014 at 22:17.
    Quote Quote  
  28. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    sanlyn, I know you explained this to me, man. READ!!! I'm talking about the actual page for McTemporalDenoise. I never said that it wasn't explained to me HERE at Videohelp.com
    Quote Quote  
  29. Banned
    Join Date
    Dec 2010
    Location
    New York
    Search Comp PM
    Look, I'm exhausted. I'll check into this tomorrow. I'll keep you guys posted. G'nite.
    Quote Quote  
  30. Member 2Bdecided's Avatar
    Join Date
    Nov 2007
    Location
    United Kingdom
    Search Comp PM
    Originally Posted by jagabo View Post
    Of course not. Do you expect every advanced filter writer to give you a full tutorial on how to use AviSynth? Do you expect every novel writer to teach you the alphabet, basic words, sentence structure, etc. first?
    I was going to write a really sarcastic reply to unclescoob - because I started with the basic documentation with AVIsynth, worked through it, and have always got on fine. It taught me all these things, and quite quickly too - what I mean is, there wasn't much reading involved.

    But that was years ago. It's moved to the mediawiki since then. That Basic Documentation is still linked and, though it's a good start...
    http://avisynth.org/mediawiki/Main_Page#Usage
    ...it's now out of date in some ways. More importantly, it seems to be in a different order than I remember it, and so it doesn't easily explain all these issues before throwing you at external filters. The syntax and FAQ sections further down the page do better, but it's too late by then.

    As it's a wiki, I suppose someone should fix it.

    Somebody else, I mean.

    Cheers,
    David.
    Quote Quote  



Similar Threads

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