Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|
Thread Tools | Search this Thread | Display Modes |
11th April 2011, 04:17 | #21 | Link | |
Registered User
Join Date: Sep 2010
Posts: 321
|
Hey SubJunk, tried today to use the newer InterFrame to do some realtime frame doubling today using ffdshow, and it's spitting out an error at me. Not sure how to fix it. All I did was copy the plugins you added in the dependencies into my AviSynth/plugins directory. Using the following script:
SetMTmode(2,2) ffdshow_source() SetMTMode(2) InterFrame(Preset="Fast") GetMTMode(false) > 0 ? distributor() : last Error given is: MSmoothFPS: unable to load library given in svp_flow_lib (InterFrame.avsi, line 87) Edit: I google'd the error and supposedly it has to do with the new GPU acceleration that you added. Quote:
__________________
MPC-HC/MPC-BE, Lav Filters, MadVR CPU: AMD Ryzen 5 1600, Video: AMD Radeon RX Vega 56 -> TCL S405 55", Audio: Audio-Technica M50S Last edited by fairchild; 11th April 2011 at 04:20. |
|
11th April 2011, 04:19 | #22 | Link |
Registered User
Join Date: Jun 2010
Posts: 443
|
Hi fairchild, sorry about that. I was made aware of the error earlier and I'm updating it to fix that now. Should be released within a few hours
It isn't a bug, but I forgot to add a check that FlowPath was specified, which it needs to be Last edited by SubJunk; 11th April 2011 at 04:46. |
11th April 2011, 04:50 | #23 | Link |
Registered User
Join Date: Jul 2010
Posts: 448
|
I had a quick look at the SVP MVTools mod but didn't notice it used a SAD mask. Interesting. It's a shame that it only provides GPU acceleration for flow (MSmoothFps ). Would have thought that MAnalyse was the function to accelerate, but that would be much more difficult to do...
|
11th April 2011, 07:23 | #24 | Link | |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,391
|
Quote:
A vector is a path from point A to point B. MMask shows the block metric at the end point of the vector. It would be needed to have the mask located at a point somewhere inbetween, at a fraction of the vector's length. This is not available. And manual compensation of the mask is not possible either, because the mask is located at the end point of the vector, and you can only compensate in the vector direction start->end.
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) Last edited by Didée; 11th April 2011 at 07:27. |
|
11th April 2011, 07:57 | #25 | Link | ||||
Registered User
Join Date: Jun 2010
Posts: 443
|
InterFrame 1.5 is released!
The changes are: - Improved the quality of the default, Fast and Placebo presets - It now checks for the existence of the mandatory value for FlowPath and displays an alert if it isn't defined - Added the GPU parameter (true for GPU-acceleration, false for CPU-only) Quote:
Quote:
In InterFrame it's used lightly, because the blur effect looks strange when it's too strong (with each frame changing from sharp to blurry it's a weird strobing-blur effect). It is an especially useful parameter for when the background is passing by quickly while something small is relatively unmoving on the screen. Without sadml the unmoving thing bounces around like crazy, but with even a light sadml like 150 it stabilises significantly. Quote:
If you would like to see how it's done, you can download the sources here Quote:
So just use something like: InterFrame(GPU=false, FlowPath="C:\Program Files (x86)\AviSynth 2.5\plugins\") Please let me know if it works for you |
||||
11th April 2011, 08:45 | #26 | Link | |
Registered User
Join Date: Sep 2010
Posts: 321
|
Quote:
Using the following script with 10,10 buffer and ignore pulldown: SetMTmode(2,2) ffdshow_source() SetMTMode(2) InterFrame(Preset="Fast", GPU=true, FlowPath="C:\Program Files (x86)\AviSynth 2.5\plugins\") GetMTMode(false) > 0 ? distributor() : last
__________________
MPC-HC/MPC-BE, Lav Filters, MadVR CPU: AMD Ryzen 5 1600, Video: AMD Radeon RX Vega 56 -> TCL S405 55", Audio: Audio-Technica M50S |
|
11th April 2011, 10:42 | #29 | Link | |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,391
|
Quote:
If all accessibility would stop "at the plugin level", then things like e.g. Q/TGMC would not exist at all.
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
|
11th April 2011, 10:51 | #30 | Link |
Registered User
Join Date: Apr 2009
Posts: 478
|
Hi, just want to point out a slight error in the documentation:
FlowPath: Sets the location of the libflow DLL files. The full path of libflowgpu.dll and libflowgpu.dll, for example "C:\Program Files\AviSynth 2.5\plugins\". Note: This is the only mandatory value; the script will not work without this. default - Undefined (string) One of those should be libflowsse.dll right? Pretty obvious, but in the interest of perfection just wanted to point it out |
11th April 2011, 11:01 | #31 | Link | |
Registered User
Join Date: Jul 2010
Posts: 448
|
Quote:
Sure, not perfect (e.g. occlusion), but better than doing nothing in practice. YFRC's solution is not unreasonable: overlay the forward and reverse mask. Last edited by -Vit-; 11th April 2011 at 11:33. |
|
11th April 2011, 11:59 | #32 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,391
|
Sure, But those vectors are not correlated. Don't you see? Forward and backward vectors are computed completely independent from each other. And therefore it is absolutely possible that forward and backward vectors are finding different matches! (It's not only "possibly", it is even somewhat *likely*.)
See - you have to objects in two consecutive frames. Let's assume MVTools (should) try to match these two objects: MAnalyse finds a match during backward search: but a different match (or no match at all) during the forward search: Take the backward search, and for simplicity lets talk about the block SAD: The backward match causes a certain SAD: Now, the task is to "Flow" the future object backwards by a fraction of the backward-vector's length: Obviously, the mask you (would) get from MMask is not correlated with the Flow-compensation. Now, the obvious idea is to compensate the mask. But this does not work. Again: the forward vector is not correlated to the backward vector, and very well might have a completely different direction. Problem? Ah! Problem! One would need to be able to use a given vector in inverse direction. But there is no means to do that. "Within" the plugin, it's a different story. There, it is sufficient to know -- while doing the flow-compensation -- that the currently-used vector has a certain metric "attached". This suffices to produce a result with an according weighting. That's okay. But from the script level, it is not possible to align a fractionally flow-compensated object with the MMask that is created at the vector's end position.
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) Last edited by Didée; 11th April 2011 at 12:04. |
11th April 2011, 12:37 | #33 | Link | |||
Registered User
Join Date: Jun 2010
Posts: 443
|
Quote:
Quote:
Quote:
Last edited by SubJunk; 11th April 2011 at 12:40. |
|||
11th April 2011, 19:49 | #34 | Link |
Registered User
Join Date: Jul 2010
Posts: 448
|
Didée: I know. Regardless, problem areas are often found correctly. The "incorrect" case is not virulent. Fixing flow weirdness is valuable and "downgrading" an area mistakenly is relatively harmless in this use case. But I also enjoyed your pictures
Subjunk: now you use SVP's GPU flow, how would you say your script compares with SVP? |
11th April 2011, 20:24 | #35 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,391
|
Glad if I managed to entertain you with handdrawn art. - See, I had only a few minutes during lunchbreak.
-Vit-: That's almost as good as "there is no energy crisis. My current comes right out of the wall socket!" Within the limits of what MVTools' filters are doing, the metric usage is sufficient. But there are cases where the plugin is producing bad junk. (Funny deformations, or exzessive blending). MVTools can not produce anything senseful for certain areas. Now, IF you had an idea how to produce some senseful interpolation nonetheless, then you cannot use it, because you can NOT locate the problem area from the script level. Don't mistake that with the motion blurring you have in QTGMC. That one is not nearly as critical. You start with discrete target locations, and the area affected by motion blurring naturally will be located rather close to those discrete target areas. This is a luxury you don't have when doing a "free" interpolation. In particular when there is some "large" movement (would be a "long" vector) that MAnalyse completely misses, then you can do nothing. You just can't locate the affected areas. Sorry if I disturbed the highly interesting discussion about wrapping MVTools documented examples in a function. Perhaps this isn't the place anymore to look for fresh ideas and ingeniosity.
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
11th April 2011, 20:41 | #36 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,391
|
More @topic, I tried to read a little source code, and got reminded why I don't like to read source code.
MSmoothFps.cpp: Code:
switch(algo) { case AlgoFast_1dir: case AlgoFast_2dir: case AlgoNoMask1: case AlgoNoMask2: case AlgoNoMask3: case AlgoSimple: case AlgoNormal: case AlgoExtended: break; default: if(algo<90 || algo>100) env->ThrowError("MSmoothFps: incorrect 'algo' value."); } Code:
MSmoothFps(Input, SuperRegular, backward, forward, finest=SuperRegular, num=NewNum, den=NewDen, algo=23, ml=0, sadml=150, sadgamma=2, block=false, blend=true)
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
11th April 2011, 21:17 | #37 | Link | |
Avisynth language lover
Join Date: Dec 2007
Location: Spain
Posts: 3,431
|
Quote:
libflow.h: Code:
enum FlowLib_Algo { AlgoUnknown=0, AlgoFast_1dir =1,//MFlow "1-dir" AlgoFast_2dir =2,//MFlow "2-dir" AlgoNoMask1 =11,//MBlockFps, mode=0 AlgoNoMask2 =12,//MBlockFps, mode=1 AlgoNoMask3 =13,//MBlockFps, mode=2 AlgoSimple =21, //like FlowInterSimple from MaskFun.cpp OR MBlockFps, mode=3 AlgoNormal =22, //FlowInter AlgoExtended=23, //FlowInterExtra AlgoMask =127, AlgoProcessBlocks =128 }; |
|
11th April 2011, 22:20 | #38 | Link | |
Registered User
Join Date: Jun 2010
Posts: 443
|
Quote:
It has always been my goal with InterFrame to find the highest quality settings without compromising for speed, and in my opinion InterFrame offers the best visual quality of any script or program I have seen, when using the default preset. If I didn't believe that then I would either learn from the better script as I have done many times, or stop making this and just use the other script instead What do you think about it? Any tips are always appreciated, especially from the great author of the incredible QTGMC You have brilliant knowledge and are one of the greatest contributors on this forum ever, now if only we could talk with you without being met with condescension the path to progress may be smoother and faster |
|
12th April 2011, 01:26 | #39 | Link |
Registered User
Join Date: Jul 2010
Posts: 448
|
I've looked over your script but not really experimented with it. One thing that immediately stands out is the EEDI2 custom pelclip. That's from the MVTools docs; doesn't that example assume interlaced source? Because it discards half the lines, interpolates them back, then resizes. You're assuming progressive source, yes? So wouldn't something like nnedi3_rpow2 be more appropriate? [without cshift, I believe].
|
12th April 2011, 01:45 | #40 | Link | |
Registered User
Join Date: Jun 2010
Posts: 443
|
Quote:
At any rate I am considering removing that option from the script because it is such a slight improvement for a huge performance hit. I don't think I would ever recommend it. |
|
Tags |
48fps, 60fps, framedoubling, interframe, smooth motion |
|
|