Log in

View Full Version : InterFrame 2.8.2 - Framedoubling/60FPS/HFR conversion script


Pages : 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20

kolak
11th March 2012, 22:19
RemoveGrain and MVTools2 do support YUY2 actually. For RemoveGrain, you have to convert the clip into planar YUY2 by applying Interleaved2Planar() first, then feed the converted clip to RemoveGrain() with "planar=true" set. For MVTools2, both interleaved and planar YUY2 are supported, but it's recommended to feed planar YUY2 to MVTools2 for the sake of faster processing. Like RemoveGrain, MVTools2 also has a "planar" parameter. The problem is InterFrame doesn't use MFlowFps but MSmoothFps(SVP Build), which doesn't have a "planar" parameter. I don't know whether MSmoothFps even support interleaved YUY2 or not. You may try it. If MSmoothFps supports interleaved YUY2, remember to apply Planar2Interleaved() to the converted clip before feeding to MSuper and MSmoothFps.

Thanks- I already removed RemoveGrain and it does the trick- YUY2 seams to work fine even with SVP MVtools2. There is some speed penalty.
I tried convert to planar, but can't make it working- always have error about not supported color space in RemoveGrain. I don't think I know avisynth grammar well enough- it seams to be ingnored :)

Atak_Snajpera
20th March 2012, 15:44
Does anybody know how to increase motion search range or precision in order to eliminate "double leg effect"?
http://i.imgur.com/l22j7.png

BTW. Source is 1080@25fps. I'm trying to achieve nice looking slow motion effect.

kolak
20th March 2012, 18:24
Won't be easy as your source is only 25p.

Didée
20th March 2012, 18:49
A nice example for a case where motionsearch failure is almost guaranteed (even though it looks so easy to our eyes). The bright area of concrete between the legs does exist only in one frame, but is virtually non-present in the other. The angle of the moving leg's borders is different. The concrete below the shoe (moving leg) is noticeably darker in the one frame compared to the other.

A hard time for a tool bearing the "motion search" title, when in fact it only searches for X*X blocks that are most similar to each other.

kolak
20th March 2012, 20:02
btw... svp released their new dll - speed is very good, but I can't get as good results as with old mvtools :(

SubJunk
20th March 2012, 22:30
@Atak_Snajpera: I'm working on InterFrame 2.0 which will most likely fix that. It no longer uses MVTools2 and is much more advanced than the current 1.x versions.

@kolak: 25p is still easier to interpolate than most video which is at 23.976 :) By default InterFrame just doubles it to 50p.

kolak
20th March 2012, 23:29
Yes- 23.976p is the worse, but 25p not much easier :)
Once you have 50i/60i and can deinterlace to 50/60p than conversion is much easier and works much better.

Is new version based on new svp flow dll?
Can't wait to try it :)

SubJunk
20th March 2012, 23:34
Yeah it is :) I would have released it now, but the SVP DLLs don't work with AviSynth 2.6 yet so I'm waiting to see if we can fix that

kolak
20th March 2012, 23:36
Yeah it is :) I would have released it now, but the SVP DLLs don't work with AviSynth 2.6 yet so I'm waiting to see if we can fix that

I'm happy with 2.5 :)
Also found new dll way faster (maybe due to wrong settings) than old one? Is it true? I could not get good quality thought :(

Atak_Snajpera
20th March 2012, 23:52
kolak don't forget that 2.6 mt is less buggy than 2.5.8 mt version.

SubJunk
21st March 2012, 00:01
Also found new dll way faster (maybe due to wrong settings) than old one? Is it true?Yeah it is faster :)

kolak
21st March 2012, 01:01
kolak don't forget that 2.6 mt is less buggy than 2.5.8 mt version.

I had no major issues with interframe- even when using 6 cores.
QTGMC is a different story.

update- sorry- I think I'm using 2.6MT now- don't remember :)

aegisofrime
21st March 2012, 12:27
@Atak_Snajpera: I'm working on InterFrame 2.0 which will most likely fix that. It no longer uses MVTools2 and is much more advanced than the current 1.x versions.

@kolak: 25p is still easier to interpolate than most video which is at 23.976 :) By default InterFrame just doubles it to 50p.

Ooooo I can't wait! Been using Interframe since you first released it and still using it now. :thanks:

pbristow
21st March 2012, 12:44
Didee summed up my thoughts (and spotted an issue I hadn't!). It's an excellent test case, though!


@Atak_Snajpera: I'm working on InterFrame 2.0 which will most likely fix that. It no longer uses MVTools2 and is much more advanced than the current 1.x versions.


Ooh, this sounds exciting! Can you give us an idea what the new method is based on? Is it still block-matching based, but with added rotation/sheering/size-change/lighting-change detection? Or does it leap a few rungs further up the ladder of sophistication, with actual feature tracking (i.e. recognising the entire trouser leg as one "object", the shoe as another, and so on)...? :)

LexSfX
21st March 2012, 19:21
I made a little AVISynth script to use InterFrame 1.x easily with most videos. Here it is: https://github.com/AlexFolland/interframe-avisynth-script. I made it for personal use and am sharing it in case anyone else finds it useful. Any feedback of any kind is appreciated.

SubJunk
22nd March 2012, 23:28
InterFrame 1.14 is released. It is (hopefully) the final 1.x release.

I will release the first 2.0 beta soon, I'm still testing it.

Ooh, this sounds exciting! Can you give us an idea what the new method is based on? Is it still block-matching based, but with added rotation/sheering/size-change/lighting-change detection? Or does it leap a few rungs further up the ladder of sophistication, with actual feature tracking (i.e. recognising the entire trouser leg as one "object", the shoe as another, and so on)...? :)One of the cool new things is that backwards and forwards vectors influence eachother instead of being blind to eachother, which results in much more accuracy. Masking is also improved a lot as is scene-change detection.

kolak
23rd March 2012, 01:41
Lest wait and see. I still have motion problems when watched on TV. There are moments when there is jerkiness for few frames.

LexSfX
23rd March 2012, 04:16
I haven't read much about 2.0. Will it support multiple threads, or will it still be limited to a single thread like 1.x is? "usegpu" helps performance a little bit, but I'd like to be able to get the full power of my CPU.

aegisofrime
23rd March 2012, 05:31
InterFrame 1.14 is released. It is (hopefully) the final 1.x release.

I will release the first 2.0 beta soon, I'm still testing it.

One of the cool new things is that backwards and forwards vectors influence eachother instead of being blind to eachother, which results in much more accuracy. Masking is also improved a lot as is scene-change detection.

Thank you for your continued hard work. I shall put my interpolation projects on hold until the release of 2.0 beta. Won't want to waste those CPU cycles :p

SubJunk
23rd March 2012, 05:34
I haven't read much about 2.0. Will it support multiple threads, or will it still be limited to a single thread like 1.x is? "usegpu" helps performance a little bit, but I'd like to be able to get the full power of my CPU.InterFrame has always supported multi-threading, as do most AviSynth plugins.

You just use a multithreaded version of AviSynth then make the script like:

SetMemoryMax(512)
SetMTMode(3)
DSS2('file')
SetMTMode(2)
InterFrame()

Thank you for your continued hard work. I shall put my interpolation projects on hold until the release of 2.0 beta. Won't want to waste those CPU cycles :pCool, I'll try not to keep you waiting too long ;)

aegisofrime
23rd March 2012, 05:56
Cool, I'll try not to keep you waiting too long ;)

Lol I wasn't trying to put pressure on you, if that's how it came across. :( I will just work on my interlaced/Needs-To-Be-QTGMC'ed stuff first. :devil:

LexSfX
23rd March 2012, 07:26
InterFrame has always supported multi-threading, as do most AviSynth plugins.

You just use a multithreaded version of AviSynth then make the script like:

SetMemoryMax(512)
SetMTMode(3)
DSS2('file')
SetMTMode(2)
InterFrame()This is interesting, and I got the latest multi-threaded build from SEt ( http://www.mediafire.com/file/3gd3851mb9o9wq7/avisynth.7z ). Before installing it, setmtmode() returned an error saying setmtmode() didn't exist, and after installing it, it ran with setmtmode(), so I know I installed it properly. However, even after doing that, the script only used 1 thread with the interframe() call, but all 4 threads without it. I'm using ffmpegsource, if that makes a difference. It runs at full speed without the interframe() call, but interframe() seems to throttle its CPU usage to 1 of my 4 cores somehow, even though I am using setmtmode(2) before the interframe call. Do you have any ideas about why this is happening?

I'm using "avs2pipemod -benchmark interframe.avs" for testing.

My script is here: https://raw.github.com/AlexFolland/interframe-avisynth-script/master/interframe.avs

By the way, before you say it's because there's no setmtmode(3) before the source function calls, I tried that. It didn't change anything. Also, ffmpegsource seems to be multi-threaded anyway, even without that.

I would be very happy if I could use interframe at full speed! :)

SubJunk
23rd March 2012, 07:33
No idea why it's doing that, sorry. I've never used it with ffmpegsource

Bernardd
23rd March 2012, 22:43
Hi SubJunk,
Thank you for this new release.
Bernard

SubJunk
23rd March 2012, 23:22
InterFrame 2.0b1 is released :)

Bloax
24th March 2012, 10:41
"Film" tuning for 2.0b1 seems broken.

Even though the source I'm testing it on is pretty tough, it still uses pure frame blending on the easy parts.
"Smooth" Works just fine though. [/feedback]

SubJunk
24th March 2012, 12:42
Yeah I think the scene-change detection is too strong, that could be what's happening there. I'll look at making it weaker. Thanks for the feedback!

Bloax
24th March 2012, 12:49
Yeah, I'd believe that's the issue. Since in my brief testing of the new plugins, pumping the SCD way too high up resulted in the same effect.

Edit: Though it seems strange that I can't seem to find neither "Scene: x" nor "Blocks: y" definitions.

Reel.Deel
24th March 2012, 12:52
Hello SubJunk,

Thanks for your hard work.

In one your ealier post you said that the SVP DLLs did not work on AVIsynth 2.6. Is this still a work in progress?
I get an error for both svpflow_cpu.dll and svpflow_gpu.dll. Plugin "__" is not an AVIsynth 2.5 plugin. I'm using 2.6 MT on 32bit XP.

noee
24th March 2012, 13:15
Hello SubJunk,

Thanks for your hard work.

In one your ealier post you said that the SVP DLLs did not work on AVIsynth 2.6. Is this still a work in progress?
I get an error for both svpflow_cpu.dll and svpflow_gpu.dll. Plugin "__" is not an AVIsynth 2.5 plugin. I'm using 2.6 MT on 32bit XP.

Don't load *cpu or *gpu. Only load the plugins SVP1 and SVP2...

Reel.Deel
24th March 2012, 13:31
Thanks Noee.

I had tried that but didn't realize that it only works when GPU=True.

When GPU=False I get an error.

SVSmoothFps: overlap must be even with CPU frame composition.

(__\Interframe2.avsi, line 98)

(__\Interframe2.avsi, line 51)

kolak
24th March 2012, 13:48
Have same error.
Also NewNum adn NewDen are String, but in help/examples they are written eg. as 48000 instead of "48000"

aegisofrime
24th March 2012, 16:40
Subjunk, I remember in pre 2.0 versions of InterFrame your documentation states that usage of the GPU results in softer output. Your documentation for 2.0 does not state this. Does it mean that GPU and non-GPU output are of the same quality, more or less? :thanks:

SubJunk
25th March 2012, 00:22
In one your ealier post you said that the SVP DLLs did not work on AVIsynth 2.6. Is this still a work in progress?It works with 2.6 now :)

When GPU=False I get an error.

SVSmoothFps: overlap must be even with CPU frame composition.

(__\Interframe2.avsi, line 98)

(__\Interframe2.avsi, line 51)You're right. I will fix it. For now using Preset="Fast" should fix it.

Also NewNum adn NewDen are String, but in help/examples they are written eg. as 48000 instead of "48000"All strings (like Tuning and Preset) in the documentation are written without quotation marks, since they have "(String)" next to them. It has always been like that in 1.x too.

Subjunk, I remember in pre 2.0 versions of InterFrame your documentation states that usage of the GPU results in softer output. Your documentation for 2.0 does not state this. Does it mean that GPU and non-GPU output are of the same quality, more or less? :thanks:Yes :)

kolak
25th March 2012, 00:47
Does it use fallback method?

SubJunk
25th March 2012, 00:59
I'm not sure what you're asking

kolak
25th March 2012, 01:17
Some solutions use fallback method- so when motion adapative engine produces to many artefacts it switches to simple frame blending conversion.

SubJunk
25th March 2012, 01:21
There are fallbacks but in those cases we use masking on the problematic areas instead of giving up on the whole frame.

kolak
25th March 2012, 01:42
Does this not break frame cohesiveness?

I have some smoothness issues when watching footage on TV.
It's mainly on horizontal movements, eg when someone walks across.
Another question- it also looks like there is not enough motion blur, so footage look very sharp, but not smooth. I tried different setting for sadgamma, but still can't get enough blurring. It's ok for PC monitor, but once watched on TV than motion is not that smooth.

Didée
25th March 2012, 01:52
What motion blur? That's not the scope of this tool. If in frame one the ball is left, and in frame two the ball is right, it will calculate a new frame with the ball in the middle.

Creating motion blur is a quite different kettle of fish.

SubJunk
25th March 2012, 02:19
Does this not break frame cohesiveness?No, it just blurs the parts that are less likely to be accurately predicted. It was like that in 1.x too.

it also looks like there is not enough motion blurLike Didée said, there is no motion blur with InterFrame and never has been.

Reel.Deel
25th March 2012, 02:34
It works with 2.6 now :)

You're right. I will fix it. For now using Preset="Fast" should fix it.



Thanks SubJunk.

Are there any future plans to implement any other colorspace besides YV12 in Interframe 2.x?

I know Interframe 1.x was limited to YV12 due to some of the required plugins.

SubJunk
25th March 2012, 04:01
InterFrame 2.x only uses SVP plugins now, no other ones, so it may already work

kolak
25th March 2012, 12:19
What motion blur? That's not the scope of this tool. If in frame one the ball is left, and in frame two the ball is right, it will calculate a new frame with the ball in the middle.

Creating motion blur is a quite different kettle of fish.

Hmmm- you need it, because when you convert eg. 60i to 24p you end up with something strange- 24p which is so sharp, that it's unreal.
I assume, the way to solve, is to do it during deinterlacing with QTGMC.
I know it was designed to double fps, but does not have to be limited just to do this :)

What does sadgamma do?- this seams to help when set to <1.

kolak
25th March 2012, 12:22
InterFrame 2.x only uses SVP plugins now, no other ones, so it may already work

Looks like SVP plugins are resticted to yv12 for now.

pbristow
25th March 2012, 14:29
Regarding motion blur:

Hmmm- you need it, because when you convert eg. 60i to 24p you end up with something strange- 24p which is so sharp, that it's unreal.
I assume, the way to solve, is to do it during deinterlacing with QTGMC.
I know it was designed to double fps, but does not have to be limited just to do this :)


I can see both sides of this...

On the one hand, calculating and applying motion blur is probably best done as a separate step from motion interpolation, *if* the user requires it (I certainly *don't* want it done by default!). MVTools2 has a function to create motion blur by overlaying multiple closely-interpolated copies, for example. Very slow, not always accurate, but sometimes useful. A much quicker technique, I would think, would be to apply a localised one-dimensional spatial blur (possibly gaussian, or raised cosine), running parallel to the local motion vector(s), and in proportion to their length. That's something I wish I had the time and the coding chops to create. :\

On the other hand, where motion blurring (or indeed motion *de*-blurring!) is needed, it would be very useful to exploit the motion vectors already found by Interframe rather than starting again from scratch, since obtaining the vectors is the slowest part of the process.

Reel.Deel
25th March 2012, 14:48
InterFrame 2.x only uses SVP plugins now, no other ones, so it may already work

I did some playing around.

For YUY2, RGB24, and RGB32 I get an error:

SVSuper: Clip must be YV12
(__\Interframe2.avsi, line94)
(__\Interframe2.avsi, line 51)

For YV16 and YV24 there is no error but produces some odd artifacts.

For YV16 it seems that only the bottom half of the frames are affected. http://www.mediafire.com/?8esnfr7kshec64x

For YV24 3/4 of every frame has artifacts. http://www.mediafire.com/?1dq88w51znyd1c0

Maybe this will work with GPU=False, Preset=Medium. :)

The 1080p 30FPS test clip came from my Canon 7D. ConvertToXXX was used for color conversion.

kolak
25th March 2012, 15:17
On the other hand, where motion blurring (or indeed motion *de*-blurring!) is needed, it would be very useful to exploit the motion vectors already found by Interframe rather than starting again from scratch, since obtaining the vectors is the slowest part of the process.


I do it during deinterlacing with QTGMC. If you increase fps than it's not that important or needed, but when you going down (specially a lot) than you have to apply motion blur, otherwise you end up with something unreal. 24p can't "store" motion from eg. 60i source.

kolak
26th March 2012, 14:58
How can I reduce mask/blur effect- bit to much form my taste- creates visible smearing. I tried changing cover and mask, but don't see any effect.

mark0077
26th March 2012, 18:54
SubJunk, any idea how to read settings from the hidden settings file into your scripts.

I need to use this setting from the hidden settings file, to make SVP take what frame rate I give it as golden, otherwise it assumes I'm using reclock to change frame rate after SVP (which I'm not), so instead of getting 50.000fps output from SVP, it outputs 48fps

UseReClockToFixFPS=0

I have tried putting it in the script, but I assume its the SVP Manager that must read it in rather than through the script :(