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 |
25th December 2014, 23:43 | #701 | Link |
Registered User
Join Date: May 2009
Location: Belgium
Posts: 1,743
|
Yes I know (I wrote With 2,5 multiplication, you can't keep all original frames), that was another reflexion about quality (fluidity and artifacts), admitting multiply by 5 then divide by 2 is easier than x 2,5, but Interframe maybe does it internally when making x 2,5.
|
18th February 2015, 07:30 | #707 | Link |
Registered User
Join Date: Nov 2003
Posts: 365
|
Wow, I can't believe I survived reading/skimming this whole thread! I think I see "the light" better. The forum at SVP is not the place to discuss InterFrame; this thread is, even though it's merely a thread. I kinda thought there would be a whole forum section on it. And I now perceive that you, Subjunk are the author and not to be confused with Mag79 and the others at the SVP-Team, though you are on good terms and work "together".
So may I raise a question that's not been addressed? I was under the impression that I could do all my Avisynth processing in one script. But if I include "loop" commands to chop out footage before doing InterFrame, Virtualdub hangs. Then I observe that I have not seen anyone here using Interframe along with other actions such as "loop". Is it true that I must separate all other actions of certain types and keep the call to InterFrame all by itself? (Including with it ONLY things directly related to it, like SetMT stuff.) This makes for 2 processing runs, when I would have preferred one. Also, I observe that for many things, I must switch back to AS 2.5.8, then switch forward to 2.6 for InterFrame. |
19th February 2015, 00:29 | #708 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Can you check, should you be using Trim() rather than Loop(). [Loop repeats a section a number of times, default being 'almost endlessly'].
EDIT: Posting a small script exhibiting the problem is always a good idea (leaving out all unnecessary stuff which does not contribute to the problem).
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 19th February 2015 at 00:46. |
19th February 2015, 01:33 | #709 | Link | ||
Registered User
Join Date: Jun 2010
Posts: 443
|
Quote:
This script started as some text being thrown around another forum by lots of people, and eventually I, along with some others like Widezu69, started doing extensive tests on the script trying to squeeze out all the quality we could. At the time, it used the AviSynth plugin called MVTools2 which has had various authors and contributors like Manao, Fizick, Tsp, TSchniede and SEt. We kept having lots of requests by people to tweak the script for their processor and so we established some good ways to reduce or increase CPU load without killing quality too much, and to make it easier I wrote a guide (in my signature) and developed InterFrame so people could modify those things themselves in a more readable way. Then SVP got released based on MVTools2 and it was faster than MVTools2, so I rewrote InterFrame to use SVP instead, and again collaborated with Widezu69 and some others along the way, and I'm on the SVP beta testing team so I get to communicate with Chainik and Mag79 about it there too. Quote:
|
||
19th February 2015, 11:14 | #712 | Link | |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Quote:
v2 C plugs loader (but it dont), are you aware of a reason for this ? EDIT: Above is nonsense, is v2.0 CPP dll. Is there any source (you seem to know where everything is )
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 19th February 2015 at 16:24. Reason: edited |
|
20th February 2015, 02:35 | #713 | Link |
Registered User
Join Date: Nov 2003
Posts: 365
|
Thanks for all said. Turns out there were missing pieces of the puzzle and I have it working now. Let me answer each item relevant, after I post my script, which DOES work. (Actually, this is another video, but just like the prior one.)
Code:
# Uses AS 2.6.0.5 SetMemoryMax(512) SetMTMode(3,4) main=AviSource("D:/Video-Work/myVideoFile.504p.lag.pcm.avi") main DelayAudio(0.140) # # delete comm brks loop(0,0,5) loop(0,3972,5847) loop(0,29260,32108) loop(0,35660,37575) loop(0,50447,53256) loop(0,74336,77161) loop(0,77352,79283) loop(0,93587,97319) loop(0,97604,101393) loop(0,114267,116187) loop(0,119848,121710) loop(0,144678,144727) ConvertToYV12() SetMTMode(2) InterFrame(Cores=2,Tuning="Film") #InterFrame(Cores=2,Tuning="Film",FrameDouble=true) Code:
loop(0,3972,5847) As far as VD hanging or crashing (yes, there were quasi-random crashes), that is solved via 2 changes: 1. I posted the crash dump at Virtualdub forum: http://forums.virtualdub.org/index.p...&f=15&t=23198& Learned I was still using a buggy version of FFInputDriver.vdplugin. Upon installing the current version, all problems go away, except one. 2. The one problem was that at same time I was experimenting with various InterFrame options. Bad idea to hastily change multiple items in a new dev environment. In the script above, the last line is a comment. If you swap-comment those last two lines such that you DO execute the one with FrameDouble, the script fails in one of two ways. If you have no file open in VD, it weirdly opens with no frames but VD says you have "Frame 18446744073709551276 (0:00:4294967291.4294" (This is in the window at the bottom). The other way was with the script the other way, the script open, and I try to F2 with the FrameDouble line activated. VD gave a hairy message about frame numbers being wrong, but I have not been able to recreate the condition, in order to report the text that VD gave. So, adding the FrameDouble option, at least in this circumstance causes failure of the script to open properly. I guess this is a bug report for you, Subjunk. |
21st February 2015, 17:15 | #715 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
@TCMullet,
If you have a lot of ranges to trim out (especially if list is auto generated), then you might like to try a script provided in FrameSel plug, also has a 1 millisecond fade (default) between splices to avoid 'cracks' in audio (where trim occurs during loud-ish noise). Script from FrameSel() : http://forum.doom9.org/showthread.ph...light=framesel Code:
Function RejectRanges(clip c,String "SCmd",String "Cmd",Bool "TrimAudio",Float "FadeMS") { # RejectRanges() by StainlessS. Required:- FrameSel, Prune, RT_Stats # Wrapper to delete frames/ranges along with audio, can supply frames/ranges in SCmd string And/Or Cmd file. # The wrapper makes for easier usage of Prune() which supports up to 256 input clips, but requires a clip index, # eg '3, 100,200' would specify clip 3, range 100 to 200. The wrapper does away with the necessity for the clip index as we # are only using a single clip here. Prune also does not have a 'reject' arg to delete specified frames rather than select them, # this wrapper also converts a list of frames to delete into a list of frames to select so that we can use Prune and its audio # capability. # # SCmd: Frames/Ranges specified in String (Frames/Ranges either Chr(10) or ';' separated, infix ',' specifies range, eg 'start,end'). # Cmd: Frames/Ranges specified in file (one frame/range per line, comments also allowed, see FrameSel for Further info). # TrimAudio: # True(default), deletes audio belonging to deleted frames # False, returns original audio, probably out of sync. # FadeMS: (default 1.0 millisec). Linear Audio Fade duration at splices when TrimAudio==true, 0 = dont fade (might result in audio 'clicks/cracks'). c TrimAudio=Default(TrimAudio,True) # default true trims audio, false returns original audio (audiodubbed, as Framesel returns no audio) FadeMS=Float(Default(FadeMS,1.0)) # 1 millisecond linear fadeout/fadein at splices PruneCmd = (TrimAudio) ? "~Prune_"+RT_LocalTimeString+".txt" : "" (!TrimAudio) \ ? FrameSel(scmd=SCmd,cmd=Cmd,reject=true) \ : FrameSel_CmdReWrite(PruneCmd,scmd=SCmd,cmd=Cmd,reject=true,Prune=True,range=true) (TrimAudio) ? Prune(Cmd=PruneCmd,FadeIn=True,FadeSplice=True,FadeOut=True,Fade=FadeMS) : NOP # If TrimAudio==true then delete Prune temp file, Else restore original Audio to the now audio-less clip (TrimAudio) \ ? RT_FileDelete(PruneCmd) \ : (c.HasAudio) ? AudioDub(c) : NOP Return Last } Function SelectRanges(clip c,String "SCmd",String "Cmd",Bool "TrimAudio",Float "FadeMS",Bool "Ordered") { # SelectRanges() by StainlessS. Required:- FrameSel, Prune, RT_Stats # Wrapper to Select frames/ranges along with audio, can supply frames/ranges in SCmd string And/Or Cmd file. # The wrapper makes for easier usage of Prune() which supports up to 256 input clips, but requires a clip index, # eg '3, 100,200' would specify clip 3, range 100 to 200. The wrapper does away with the necessity for the clip index as we # are only using a single clip here. # # SCmd: Frames/Ranges specified in String (Frames/Ranges either Chr(10) or ';' separated, infix ',' specifies range, eg 'start,end'). # Cmd: Frames/Ranges specified in file (one frame/range per line, comments allowed, see FrameSel for Further info). # *** NOTE ***, If both Cmd and SCmd supplied AND Ordered == False, then will process Cmd file and then SCmd string afterwards, ie # Will select ranges in Cmd file and in order specified (rather than auto ordering ranges) and then append ranges specified in # SCmd string (and in order specified). # TrimAudio: # True(default), selects audio belonging to selected frames/ranges # False, returns original audio, probably out of sync (maybe totally out of whack if Ordered == false and selected ranges out of order). # FadeMS: (default 1.0 millisec). Linear Audio Fade duration at splices when TrimAudio==true, 0 = dont fade (might result in audio 'clicks/cracks'). # Ordered: # True(default), all frames/ranges are returned in sequencial order. Any frame specified more than once will return only 1 instance. # False, All frames/Ranges are returned in specified order, Cmd processed first and then SCmd. Frames/ranges specified more than once # will return multiple instances. Allows out-of-order trimming of clip, eg re-sequencing of scenes in movie. # # Does not make much sense to select individual frames with audio, best used with ranges. # Will coalesce individually selected adjacent frames/ranges before any Fade, ie only audio fade where sensible to do so. # TrimAudio==false with non Ordered selection will result in completely out of sync audio. c TrimAudio=Default(TrimAudio,True) # default true trims audio, false returns original audio (audiodubbed, as Framesel returns no audio) FadeMS=Float(Default(FadeMS,1.0)) # 1 millisecond linear fadeout/fadein at splices Ordered=Default(Ordered,True) # True (default) frames/ranges will be Ordered and selected only once even if specified more than once. # False, frames/ranges returned in specified order, Cmd processed 1st and then SCmd. PruneCmd = (TrimAudio) ? "~Prune_"+RT_LocalTimeString+".txt" : "" (!TrimAudio) \ ? FrameSel(scmd=SCmd,cmd=Cmd,Ordered=Ordered) \ : FrameSel_CmdReWrite(PruneCmd,scmd=SCmd,cmd=Cmd,Ordered=Ordered,Prune=True,range=true) (TrimAudio) ? Prune(Cmd=PruneCmd,FadeIn=True,FadeSplice=True,FadeOut=True,Fade=FadeMS) : NOP # If TrimAudio==true then delete Prune temp file, Else restore original Audio to the now audio-less clip (TrimAudio) \ ? RT_FileDelete(PruneCmd) \ : (c.HasAudio) ? AudioDub(c) : NOP Return Last }
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? |
21st February 2015, 18:07 | #716 | Link |
Registered User
Join Date: Nov 2003
Posts: 365
|
Thanks, Stainless. Will keep this on file for possible future use. But for now the loop0 method of chopping out things is working perfectly. I generate it by hand, with a bit of copy/paste help in conjunction with Vdub's ctrl-g feature. So while I didn't type any numbers, I picked the start and end chop points manually in Vdub. It's working perfectly, and audio is fine.
The only thing that remained outstanding for me in this thread (at least right now) was to get into SubJunk's hands the bug report about FrameDouble's presence causing the script to bomb. |
21st February 2015, 21:21 | #717 | Link |
Registered User
Join Date: Jun 2010
Posts: 443
|
@TCMullet thanks for the bug report, but I don't think it's a bug in InterFrame. It may be a bug in Vdub.
FrameDouble only does one simple thing and that is toggle the framedoubling functionality in SVP, which InterFrame already uses by default for some content like PAL. Do you get the error if you use a 25FPS input clip and don't use FrameDouble? |
21st February 2015, 21:29 | #718 | Link | |
Registered User
Join Date: Nov 2003
Posts: 365
|
Quote:
|
|
21st February 2015, 21:36 | #719 | Link | |
Registered User
Join Date: Nov 2003
Posts: 365
|
Quote:
Code:
InterFrame(Cores=2,Tuning="Film") #InterFrame(Cores=2,Tuning="Film",FrameDouble=true) |
|
21st February 2015, 23:15 | #720 | Link | |
Registered User
Join Date: Jun 2010
Posts: 443
|
Quote:
I can make a 25FPS test clip so we can narrow down the issue some more if you want. |
|
Tags |
48fps, 60fps, framedoubling, interframe, smooth motion |
Thread Tools | Search this Thread |
Display Modes | |
|
|