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. |
![]() |
#1 | Link |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 262
|
Super(), Analyze(), and SmoothFps() details
Forgive me please if there's a detailed guide I've not found.
First, a metaquestion: Is this the place for on-the-edge development? To the developers (or anyone who cares to burrow through and really understand the source code): Code:
__________ __ | __ 5| __ | |__ 4| | __ | __ | 3| | Regarding block images: __ | __ 2|| | Assume block 0 (in frame 'N') & block 5 (in frame 'N+1') form a search-found block pair in a 24fps source. ___|______ 1| |__________| Blocks 1..4 are to be inserted for make a 120fps target. | 0| __| Are 1..4 copies of 0, or do the block images warp: 0 > 1 > 2 > 3 > 4 > 5? | | __| If they warp, are the inserted blocks always interpolated between 0 & 5 by proportional parts as shown to the left, or | | __| are they incrementally interpolated as shown below? | | __| |__________| __________ __________ __________ __________ | 5| | 5| | 5| __ | __ 5| | | | | __ |__ | ___|___|__ 4| | | | __ __ | | ___|______ | 3| | | 3| | __ __ | | ___|______ 2|| | | 2|| | | | | ___|______ 1| |__________| | 1| |__________| | ||__________| | |_______| | 0| | | | | | | __| | | | | | | __| |__________| | | | | __| |__________| | | __| |__________| __________ |__________| __ __ | 10| __ __ | 9|| | __ __ | 8| | | __ __ | 7| | | __________ | 6| |__________| __ | __ 5| |__ __| Regarding interpolated block positions: __ | |__ 4| | |__ __| Are interpolated blocks positioned linearly as shown to the left, or __ | __ | 3| | |__ __| are they spline positioned based on 'ballistics' as shown below? __ | __ 2|| ||__ __| ___|______ 1| |__________| __________ | 0| __| __ __ | 10| | | __| __ __ | 9| | | | | __| __ |__ 8| | | | | __| __ | __ 7| | | |__________| _____|____ 6| |__________| __ | __ 5| |__ __| __ | __ 4| | |__ __| __ | __ 3| ||__ __| __| __ 2| | | __| __|_______ 1| |__________| | 0| __| | | __| | | __| | |__| |__________| For frustrating, trial-&-error diddling of Super(), Analyze(), and SmoothFps()? Probably not. For intellengently interpreting experimental results visually? I think so. |
![]() |
![]() |
![]() |
#2 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,654
|
See all of this thread:- https://forum.doom9.org/showthread.php?t=175373
this one too:- https://forum.doom9.org/showthread.p...23#post1789723 (also take a peek at all links in both threads) Code:
50% | <---------> | | v v G1 G2 G3 B4 G5 G6 n n+1 n+2 delta=2 Frame n synth frame created using bidirectional vectors between n and n+delta(2), however, frame requiring fixing is n+1 (B4, 50% between n and n+2) and so requires shift over. Frames are synthesised from point of view of the synth frames not the bad frame. Synth frame to fix B4 @ 50% is generated still at frame n (reqires shift forward 1 frame replacing n+1) 33% 66% | | <---------------> | | v v G1 G2 G3 B4 B5 G6 G7 n n+1 n+2 n+3 delta=3 Synth frame to fix B4 (@ 33% of the way between n and n+3) is generated still at frame n (reqires shift forward 1 frames replacing n+1) Synth frame to fix B5 (@ 66% of the way between n and n+3) is generated still at frame n (reqires shift forward 2 frames replacing n+2) The 'between' percentage does NOT need to be directionally worked out by the user, it is looked after by MVTools and governed again by isb, percentage is relative the synth frame n->n+delta. also Code:
n n+delta | | <---- BV Vectors used for eg MDegrain, vectors stored @ frame where arrowhead points (ie n). FV ----> Pixels moved from frame at back end of arrow (n+/- delta), along vector to synth frame where arrowhead points. | n-delta n n+delta | | <---- BV Vectors used for eg MFlowInter, Uses the next one along forward vector so that vectors used are from | | either side of the frame that will be synthesized (reason, only part of the vector distances are FVI ----> used, based on Time arg). n n+delta For MFlowInter, the created vectors are exactly the same as for eg MDegrain, its just that it uses the next forward vector so that backward and forward vectors straddle the predicted frame, MFlowInter just uses the vectors in a slightly different way to MDegrain. The synthesized frame lies logically somewhere between n and n + delta (based on Time arg), and is physically created at frame n, and so needs to be relocated to the required bad frame position in clip.
__________________
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; 28th September 2021 at 13:05. |
![]() |
![]() |
![]() |
#3 | Link | |
Registered User
Join Date: Mar 2018
Posts: 447
|
Quote:
|
|
![]() |
![]() |
![]() |
#4 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,654
|
Nah, a horrible nightmare... *snort*
__________________
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 ??? |
![]() |
![]() |
![]() |
#5 | Link | |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 262
|
Quote:
|
|
![]() |
![]() |
![]() |
#6 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,654
|
I'm terrible at explaining things, now Zorr, he's the man that can
![]()
__________________
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 ??? |
![]() |
![]() |
![]() |
#7 | Link |
Registered User
Join Date: Oct 2018
Location: Germany
Posts: 885
|
I have to agree with you, if I understand it to 80%, after your explanations I only understand 50%
![]() You have written so many useful Avishynth functions I do not always understand completely (or my English is too bad). ![]() Seriously, sometimes I read and read and then I'm puzzling what the thing can do. ![]()
__________________
Live and let live |
![]() |
![]() |
![]() |
#8 | Link | ||
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,654
|
Well maybe Zorr could explain them too, then.
[ Anything that needs explanation PM Zorr about it, he's always happy to help ![]() EDIT: Quote:
Quote:
Blocks are moved along the vectors proportional to the required time, if they dont match well in both directions [fwd/bkwrd] then some blurring will result. EDIT: Ballistics, change in velocity (acceleration), change in acceleration (jerk), are not considered [linear only, I think].
__________________
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; 29th September 2021 at 18:33. |
||
![]() |
![]() |
![]() |
#9 | Link | |
Registered User
Join Date: Mar 2018
Posts: 447
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#10 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,654
|
OK, you win, I'm sorry.
__________________
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 ??? |
![]() |
![]() |
![]() |
#12 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,654
|
Evil, pure evil!
__________________
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 ??? |
![]() |
![]() |
![]() |
#13 | Link | |
Registered User
Join Date: Dec 2005
Location: Germany
Posts: 1,751
|
Quote:
![]()
__________________
AVSRepoGUI // VSRepoGUI - Package Manager for AviSynth // VapourSynth VapourSynth Portable FATPACK || VapourSynth Database || https://github.com/avisynth-repository |
|
![]() |
![]() |
![]() |
Thread Tools | Search this Thread |
Display Modes | |
|
|