Thanks, Mag.  I'd never heard of DSS2, so I didn't realize it merely opens a file.  I replaced that line with this:

avisource("D:\Video-Work\2014-NCAA-wv\2014-11-14.wv.KY-v-MS.lag.ac3-320.avi").ConvertToYV12()

When I run it in a script by itself (that line being the only line), it works fine.  (I'm opening the .avs file as a video input file in VirtualDub.  But when I have it at the top of your entire script, the script still bombs.  The first few lines look like this:

avisource("D:\Video-Work\2014-NCAA-wv\2014-11-14.wv.KY-v-MS.lag.ac3-320.avi").ConvertToYV12()
sc = msup (for = 1)
vf = MAnalyse (sc, ISB = false)
vb=MAnalyse(sc,isb=true)
global frame_50 = MFlowInter(sc,vb,vf,time=50).SubTitle("Fix-50", size=12, align=3)
global frame_33 = MFlowInter(sc,vb,vf,time=33).SubTitle("Fix-33", size=12, align=3).trim(1,0)
.
.
.

It's still bombing (with VD's unhelpful message) and I know of no way to debug these scripts, esp. w/o knowing all the elements used.  (I realize VD shouldn't be blamed for the cryptic message, as it's only receiving frameserved output.)  Can you please look to see if you see some error in the rest of your script AS duplicated by me here?  I pasted it from your Russian thread into Notepad, then into here (and my own script).

I've found and installed the current SVP and AVISynth for SVP.  And here is (what I believe is) the current DoubleDropFix (v3) with my own file referenced:

DSS2("D:\Video-Work\2014-NCAA-wv\2014-11-14.wv.KY-v-MS.lag.ac3-320.avi").ConvertToYV12()
sc = msup (for = 1)
vf = MAnalyse (sc, ISB = false)
vb=MAnalyse(sc,isb=true)
global frame_50 = MFlowInter(sc,vb,vf,time=50).SubTitle("Fix-50", size=12, align=3)
global frame_33 = MFlowInter(sc,vb,vf,time=33).SubTitle("Fix-33", size=12, align=3).trim(1,0)
global frame_66 = MFlowInter(sc,vb,vf,time=66).SubTitle("Fix-66", size=12, align=3)
global frame_src = last
global mini=sc.crop(8,height+8*3,width/2,height/2).TemporalSoften(1, 1, 0, scenechange=1, mode=2)
mini.mt_lut global luma_drop = (y = -1, you = 128, v = 128)
drop_clip = mini.scriptclip ("mini.ydifferencefromprevious dif = ()
\ dif_next1=mini.trim(1,0).ydifferencefromprevious()
\ dif_prev1=(mini.trim(1,1)+mini).ydifferencefromprevious()
\ dif_nextMax=max(max(dif,dif_next1)/8,0.01)
\ Dif_prevMax = max (max (dif, dif_prev1) /8,0.01)
\ Dif> min (dif_prevMax, dif_nextMax)? Short: luma_drop
')
scriptclip ("
\ Fix_prev2=(drop_clip.trim(1,2)+drop_clip).AverageLuma
\ Fix_prev1=(drop_clip.trim(1,1)+drop_clip).AverageLuma
\ Fix=drop_clip.AverageLuma
\ Fix_next1=drop_clip.trim(1,0).AverageLuma
\ Fix_next2=drop_clip.trim(2,0).AverageLuma
\ Fix!=1
\ ? frame_src
\ : Fix_next1!=1
\   ? Fix_prev1!=1
\     ? frame_50
\     : Fix_prev2!=1
\       ? frame_66
\       : frame_src
\   :  Fix_next2!=1
\     ? Fix_prev1!=1
\       ? frame_33
\       : frame_src
\     : frame_src")

It's bombing on the DSS2 statement.  (Virtualdub gives message, "Unable to open file ___ (my .avs script)".)  I've never used that, only having used avisource.  (And I haven't used AVISynth in a long time, either.)

I have these .dll files in the folder, C:\Program Files (x86)\AviSynth 2.5\plugins:

DirectShowSource.dll
libflowsse.dll
libflowgpu.dll
mvtools2.dll
svpflow1.dll
svpflow_cpu.dll
svpflow2.dll
svpflow_gpu.dll  (I can supply date stamps on these if necessary)

As they are in the plugins folder, they should be loaded.  Yet it seems to be acting like they're not.  What am I missing??

I'm VERY pleased that someone has addressed this problem of dropped (duplicated) frames in a video.  Thank you!

Even with Russian to English translation (courtesy of Google Chrome), it's very difficult to wade thru that Russian thread.  Could you please reproduce here the most current DoubleDropFix script and maybe the GameDropFix script too, and tell us here why GameDropFix is needed?  I would think that it wouldn't matter what the video source was.  When a frame is dropped, the capture utility duplicates the last frame it had gotten.  This being so, it's puzzling why source=game would be any different than source=captured video.

What I have is captured video at 29.97fps and in some seconds (but not all) a frame will freeze for 1 or 2 frames, meaning there are either 2 frames identical or 3.  I'd be very happy if even the 2-identical-frame occurrences could be fixed.  (Need 1 generated frame.)  But if 3-identical-frame occurrences (needing 2 generated frames) could also be fixed, that would be SUPER!

(While waiting for your appreciated answer, I'll research getting AVISynth and SPV installed on my target machine.  I'll be feeding the script into VirtualDub.  I haven't touched SVP in a couple years.)

104

(9 replies, posted in Using SVP)

No guarantee that all frames are at it's own positions. You need not to capture. You need to save video stream with no changes or with minimal changes.

It's true, no guarantee. Have to go w/the best I can get.  BTN (better than nothing).  Yes, need actual stream, but don't think it's possible.  Will go with highest rate possible, so that multi-frame freezes will be seldom.  With CamStudio at 100fps, rate fluctuates 25.x to about 28.y, hence my desire to have 24 or 25 as target decimation.  But with CS at 200fps, I see rates 30 to 31.  With that I can decimate to 30.  I am assuming in all this that the stream is being shown at 30 or 29.97 fps, but only an educated guess.

You are almost right. 24 fps encreased to 60 fps by added several interframes. Formula is 5:2. That mean to add 4 new frames and decimate 1 from each 2 sorce frames.

Are you saying that internally you change it to 120fps and (also internally) decimate by 2?

I've noticed that the instructions don't give a way to specify to InterFrame what the input FPS is.  So I'm assuming it gets it from the file header itself.  But I've been wondering if NewNum/NewDen can be anything regardless of what the input FPS is.  I figured out that for 24 to 60, I need x5 then /2.  Does InterFrame come up with whatever is needed to allow any combination of input and output FPS?  And if so, does that mean I could come up with an outlandish change like say, 30fps to 59.94 or 30fps to 29.97, and it would correctly do it?

105

(9 replies, posted in Using SVP)

Why you captured it to PC? I think it is better to record it to DVD-recorder at full NTSC frame size and full NTSC 30p/30i frame rate. What source is? VHS/DV-tape?

I agree full NTSC is better, then I wouldn't need InterFrame.  But the source is internet-streamed, only, sadly.

what source rate would be best to generate 30, if 24 and 25 are the choices?
No one of them. Only 30 fps. Because in case with 25 fps you will have 5 drops per second. And 6 drops for 24 fps. It is the same irregulation of frametimes.

But I may have to live with some droppage, and I may be able to do irregular droppage a bit more evenly.  I can capture at 30fps, but the source drops out sometimes (freezes) causing the actual rate to fluctuate, say 27.8 - 29.2.  I think it that case, it'd be better to further decimate to a round integer.   But what I was really asking was which of 24 and 25 are better suited to compute frames at 60fps?  You take 24fps film and go right to 60, right?  (I would have thought you'd have to go from 24 ( times 5) to 120, then half-decimate to 60.)  So I was wondering that if I have a choice between providing original material at 24 vs 25, would one of them be better suited to convert to 60.  (Leaving the factor of dropouts aside.)

I hope you'll answer that question (24 vs 25 from the InterFrame feasibility standpoint).  I *may* (with extra difficulty) get the cap rate up to 30.x or something, then decimate down to 30, but can't guarantee.

106

(9 replies, posted in Using SVP)

> Interframe can get 0 degrees arm at out only if sources has -5 and 5 degrees.

Ah HA!  I see now that I was expecting too much.  While waiting for your kind and thoughtful reply, I did two things.

1.  I reflected on that you can take 24fps and get smooth action.  I figured going down to 15fps, while significant, wasn't that drastic a lowering.  I now see that going that low frequently causes an excess of 5 degrees.  I think 5 degrees is exceeded often even at 24fps, however, in those cases it would be only very briefly, say, during explosions, etc. in which case the roughness of interpolation would not be objectionable.

2.  I also realized that while not preferred, I can acceptably generate this at a higher rate.  (The source exists and can be recaptured again, albeit "no fun".)  If you knew I wanted to end up with both 30 and 60fps editions, which source rate would be best, 24fps or 25fps?  What I actually can do is use CamStudio at either 100fps or 200fps, then decimate to 24 or 25.  If I do 200, I *may* be able to reliably get 30 after decimation.  If that scenario was to work, then I'd only have the 30-to-60 task for InterFrame, which you'd probably say is a snap.

> You need a lot of hard hand work frame-by-frame to reconstruct dropped original frames.
Such big intervals between frames for sports is very hard to any interpolator. Too small details, too large moves and differencies between frames.

No I can't bother with the numerous (but not constant) dropped frames.  I was going to merely "live with with the dropouts".  And I now grasp what you're saying about "too" this or that.  Your 5 degree comment really put it in perspective.  (Thank you.)  I made a big mistake by believing that 15fps was enough temporal info.  I do still look forward to converting movies from 29.97 telecined to 24 (which I've already done many times), then up it to 60.

> Sorry. I have no time to do your job with your video. I must to work at new SVP version. Maybe after SVP release I will find a time to help you more.

I was not expecting more than suggested values for the various parameters, a small task.  I see now that I was exceeding the technology beyond any tweaking.

So at this point, my questions are limited to what source rate would be best to generate 30, if 24 and 25 are the choices?   (30 might not be reliable for me, but I will experiment.)  Hope you can advise with that.

107

(9 replies, posted in Using SVP)

I captured it from my computer screen at 15fps because that's what I was able to do without the screen capture itself dropping frames on my less-than-modern PC (3ghz P4).

Exactly what do you mean by framedrops?  Yes, there are times that a frame repeats one or more times due to some glitch, but those instances are relatively rare.  In most cases, each frame (in my source) is different than the prior one.  (No framedrop.)  Yes, half the frames from the 30fps source are dropped, but by intention.  I'm not as worried about the occasional 2-frame freeze.  That will simply make a slightly bigger gap between the next 2 frames that are different.

I was under the belief that the interpolated frame needs only 2 frames and it generates the one in between with everything spatially equi-distant between it's starting point (in the 1st frame) and ending point (in the 2nd frame), no matter how far apart they are.

I realize that if a framerate was really low, so low that any wild actions could occur between 2 snapped frames, then of course no lost action can be truly created.  But if an arm moves from, say, pointing down 45 degrees from horizontal, then the next frame shows it pointing upward 45 degrees, I'd think InterFrame would be smart enough to generate an inter-frame with the arm pointing 0 degrees, i.e. horizontal.  And most of the actions in this video are not as severe at that 90 degree example.

Also why does the ball, when appearing very discretely (round and clearly formed) sometimes get interpolated as 2 balls in one interpolated frame?  This, and the 3-legged women, seem more like a frame-blend of the 2 frames than of an interpolated leg.

You probably have explanations in response to all this, which I'd love to hear.  But I also hope that even if my video is characterized as "bad" by some, that you all can help me redeem this and get it up to 30fps better than the bare-bones script I used where I had everything at defaults.  These frames are not much different than if I had captured the 60 field/sec. video from TV, then decimated in half two times to get down to 15fps.  It is actually my goal (assuming InterFrame can do the trick) to first generate 30fps.  Then do it again to get back to 60.  (I have use for both speeds.)

I'm happy I finally got my environment so that InterFrame2 executes without blowing up!  (Had to switch to a newer CPU than my P4.)

But I'm at a loss to know how to proceed.  Here's my script:

AviSource("Tom's-VB-test.avi"   )
ConvertToYV12()
Import("C:/Program Files/AviSynth/plugins/InterFrame2.avsi")
InterFrame(NewNum=30, NewDen=1, Cores=4)

I've uploaded the test AVI, which has 50 frames in Lagarith codec, to this link:
http://www.tomsgoodfiles.com/tom's-vb-test.avi
(About 16MB)
It is at 15fps, and I'm trying to increase to 30.  I expected that the frames generated (the ones inbetween the existing ones) would be as clear as the 2 frames surrounding.  But in most cases they're not.  Could someone please download my AVI and try it out?  It's a couple seconds in a volleyball game.  You'll see 3-legged women and sometimes a single ball in 2 places at once!  And in at least one case, the woman's head is missing!

I didn't realize this process would take a lot of tuning, and I don't know how to proceed.  I can't find any info to help me deal with this.  I did try all the "Tuning=" options, but none fixed it and I think some were worse.  From reading the InterFrame2.html, it appears there are lots of options but no guidance for how to pick them.  In the one case of "Tuning=" I was baffled by the stated tension between smoothness and "frame cohesiveness".  To me they are the same thing.  I simply would like the generated frames to have all elements exist with the same clarity that their 2 surrounding frames have.

I didn't see any problems in the "20110618-Sample-InterFrame.mkv" video I viewed, yet isn't that just as complicated as my clip??

If all I need is discussed somewhere else already, I'll be happy to do all reading there, if someone would kindly point me to it.

If it's easy for someone to "tune up" the parameters for the above clip of mine, perhaps you could do it, then I could read and study what went into it later, while I have GBs of AVIs being processed over days of VirtualDub runs.  (I have a lot of volleyball games in this format that I wish to convert.)  I'd really appreciate the jump-start.

Thank you so much for what I hope will be a tool that really does what I've been dreaming of.

Chainik wrote:

BTW, Interframe ver. 1.xxxx should work for you..

I've searched spiriton.com but can't find a link for getting old versions.  I'd like to use 1.x on my P4 and the current 2.2 on my Atom.

But Chainik, you're not realizing that I might get something from a CraigsList ad.  So just knowing that it's sold new today doesn't answer it for me.   (All my numerous PCs are used equipment; haven't bought or been able to buy a truly new PC or mobo since.... 2001 I think.  Hard times, plus people give me their old PCs.)

Can someone please look over my previous post's list and tell me which bulleted features are essential for InterFrame??

Even without Wikipedia, I find these links to a set of instruction sets:

http://www.cpu-world.com/CPUs/CPU.html
http://www.cpu-world.com/CPUs/Atom/index.html
http://www.cpu-world.com/CPUs/Atom/Inte … 0251M.html

And the relevant list is:

Features MMX technology
-SSE
-SSE2
-SSE3
-Supplemental SSE3
-EM64T technology
-Hyper-Threading technology
-Execute Disable bit

I'm begging you to you tell me which of this is needed by InterFrame.  Pretty please??

Woo HOO!  The Atom 330 WORKS!

But I'd really like to consider an upgrade.  Could you pretty please tell me what instruction set I'm looking for????   Not only do I want to know this, but I do not keep up with processor history, so "6 years" means nothing to me.  But if you tell me an instruction set (like SSE2 as an example that pops to mind), then I can run with it.

Pretty please????     neutral

I used to do assembly language on numerous platforms.  Can you tell me what instruction set is needed that the P4 doesn't have?  I can then study it on Wikipedia, then survey the market and pick a path for upgrading (whether a new box or just mobo, etc.).

In parallel to communicating with you, I'm working to set up my test environment on an Intel Atom 330, which I have at the other end of the house.  Even tho slower, it (from what I learned after it was given to me) it is more advanced, esp. in multimedia application factors.

I *may* try your v.1.x, but I'm inclined to upgrade hardware as needed so I can run the latest InterFrame.  I may even do both just to get some InterFrame work going.

Maybe I need a newer machine?  Please tell me the minimum configuration needed to get this running.  I've just been gaining a ton of material I need to up the frame rate on.  I've been counting on getting InterFrame working for me.  Am looking forward to lovin it.

Chainik, please don't leave me hanging.  What's wrong??  I do have other machines I can use, albeit slower.  Remember, I said this is not a real-time application for me.

SubJunk, it's still blowing up, but with a bit more intelligent error message: (the 2 InterFrame lines are the same)

Avisynth open failure:
Avisynth: illegal instruction at 0x00001CE4 in C:\Program Files\AviSynth 2.5\plugins\svpflow_cpu.dll
(C:/Program Files/AviSynth 2.5/plugins/InterFrame2.avsi, line 103)
(C:/Program Files/Avisynth 2.5/plugins/InterFrame2.avsi, line 57)
(D:\Framerate-x-3.avs, line 4)

Do I need a special CPU for this to work?  I have what is the best processor I've ever had, a Pentium 4 at 3.06ghz plus hyperthreading.  Am running VirtualDub 1.10.2, surely a new enough version.

Thanks, Sub.  I feel much better knowing those things (esp. the multithreading).  Will try it this week.  (Thanks for patience, as well as the version.)

Mag, not being a power user, but just a rare user and a former programmer, it surprises me a bit that after 10 years, most bugs are not out.  (Although I've seen cases where bugs were in a "stable" product for more than that.)

To both of you, the bug fixes and the multithreading... why not submit them for inclusion in the next standard edition?  They sound good.

Thanks, SubJunk.  Is that the patched AviSynth version that the main docs recommended?  I didn't install that b/c (1) I hoped it wasn't essential, and (2) how can I use the standard version if I have this patched version installed?  I can't have 2 versions installed, can I?  I've wanted to keep the standard version installed so I'll know that video work not related to InterFrame would still work.  (Not that the patched version is *necessarily* broken in some way, but I feel better using "standard" versions of things.)

Yes, I'm aware (barely) of the 1001 for NTSC.  Everything I work with I prefer to keep NTSC compatible.  Took me a bit to figure why people were referencing 1001, when I tend to think in terms of 29.97, 59.94, etc.  One project I'll be working on is 30 fps, and I hate having to figure out how to get all facets of it over to 29.97, so I can make a correct NTSC DVD.

So, what's the deal on AVS versions, do I *have* to have the patched version, and is the one you gave, the patched version?

Yes, the error message I didn't give was the most helpful and self-explanatory one ever.    wink

In my computer endeavors, I normally report error messages, but in this case:
1.  It was a bunch of errors and Vdub doesn't allow them to be copy/pasted;
2.  I really figured I was probably making some silly and obvious error in my AVS file, which I thought you experts would catch right off the bat, eliminating the need for whatever messages came out.

I guess I was mistaken, so I've rerun it and carefully typed out the messages, first to Notepad, then pasted to here:

Avisynth open failure:
Evalute: System exception - Illegal Instruction
(C:/Program Files/AviSynth 2.5/plugins/InterFrame2.avsi, line 103)
(C:/Program Files/Avisynth 2.5/plugins/InterFrame2.avsi, line 57)
(D:\Framerate-x-3.avs, line 4)

Now "for sure" it will probably be obvious to someone knowledgable.

(I had to leave working on this these few weeks, but now I can report these messages to you.  Normally I'm more timely in my responses, but couldn't be in this case.)

Hi.  I don't want to do anything real-time.  I just want to nterpolate frames and feed the Avisynth output to VirtualDub so I can render a new AVI at my higher target frame rate.

I've installed AviSynth 2.6.0 Alpha 3 over the top of my 2.5.8.  I've copied your 4 dlls into my plugins folder, along with the strange file InterFrame2.avsi.  Here's my script:

AviSource("my-29.97fps-video.avi"   )
ConvertToYV12()
Import("C:/Program Files/AviSynth 2.5/plugins/InterFrame2.avsi")
InterFrame(NewNum=8991, NewDen=100, Cores=2)

I want to interpolate 2 new frames between each original frame, effectively changing from 30fps (29.97 really) to 90fps (89.91).

It bombs when trying to open the script in VirtualDub.  Can you all please help me?  I wish as little software installed in my system as possible.  I do not want the script generator.  I just want the minimal non-realtime stuff to help me generate a new AVI.  Thanks so much, in advance.

(I have numerous other frame rates I want to use, but picked  90fps as a simple example.)