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 |
![]() |
#21 | Link |
Registered User
Join Date: Jul 2010
Posts: 448
|
Both those vectors are between the current frame and the next. But the forward vectors returned are from previous frame to current. How do you deal with that in the implementation?
Last edited by -Vit-; 30th March 2012 at 13:54. |
![]() |
![]() |
![]() |
#22 | Link |
RipBot264 author
Join Date: May 2006
Location: Poland
Posts: 7,915
|
Chainik_svp will you be able to do some magic algorithm to correctly interpolate "moving legs"
http://forum.doom9.org/showthread.ph...06#post1566206
__________________
Windows 7 Image Updater - SkyLake\KabyLake\CoffeLake\Ryzen Threadripper |
![]() |
![]() |
![]() |
#23 | Link |
Registered User
Join Date: Mar 2012
Location: Saint-Petersburg
Posts: 239
|
Frame #N in MAnalyse(isb=false) clip contains forward vectors from N-1 to N.
Frame #N in MAnalyse(isb=true) clip contains backward vectors from N+1 to N. Frame #N in SVAnalyse clip contains forward vectors from frame N to N+1 and backward vectors from N+1 to N. -Vit-, what's your question? ![]() |
![]() |
![]() |
![]() |
#24 | Link |
Registered User
Join Date: Jul 2010
Posts: 448
|
You answered my question
![]() That means SVAnalyse returns different forward vectors with settings vectors:1 and vectors:3. I ask because it's important when converting SVAnalyse vectors to MVTools compatible ones. The forward vectors are "shifted" by 1 frame Last edited by -Vit-; 30th March 2012 at 15:51. |
![]() |
![]() |
![]() |
#25 | Link | |
Registered User
Join Date: Mar 2012
Location: Saint-Petersburg
Posts: 239
|
Quote:
![]() BTW, smoothfps_params.debug.vectors=true will draw vectors almost like MShow. If you set 3:1 interpolation then first interpolated frame will show forward vectors and second - backward ones. ----- Oh, I see. You assume that the description of "vectors" param is right ![]() It's a copy-paste mistake ![]() Last edited by chainik_svp; 30th March 2012 at 16:09. |
|
![]() |
![]() |
![]() |
#26 | Link |
Registered User
Join Date: Jul 2010
Posts: 448
|
Ah! Now you see why I asked about implementation, because I was wondering how you honored what the docs said - penalty.prev would be unpleasant to implement with the MVTools approach. The actual way you're doing things is much simpler.
|
![]() |
![]() |
![]() |
#27 | Link | ||
VR, 3D & HDR UHD fan
Join Date: Mar 2006
Location: Sofia, Bulgaria
Posts: 53
|
Quote:
I used MVtools, and I plan to use SVPflow for a different thing - adding motion blur to video games footage (which is RGB), in slow, "offline" manner (so I wouldn't mind if it's slow). When converted to YV12, there's often a visual degradation of the image quality, especially at borders between objects with very different colors (for example, red car on green-ish background). With YV24, this problem is gone, the video looks visually lossless to the source. When the motion blur is added, the problem with YV12 is less pronounced, but still bugs me, that's why I'd very much like it if SVPflow supported YV24 colorspace (of course, if it's not too much work to implement it). Quote:
I've experimented with such approach, for higher precision, but using NNEDI3_rpow2, and I don't think the difference in quality is worth the big loss in speed. But still, thanks for the suggestion. Last edited by Zerofool; 30th March 2012 at 23:52. |
||
![]() |
![]() |
![]() |
#28 | Link | |
Registered User
Join Date: Mar 2012
Location: Saint-Petersburg
Posts: 239
|
-Vit-
All that "temporal" things should be great but they're almost impossible now because they harm multi-threading performance. (This may not be the case here but for consumer software it's very bad) Every night I think about my own threading inside plugins ![]() Avisynth has different main purpose - non-linear editing. If all we want is just frame-by-frame linear processing then MT caches and "distributor" are not helping ![]() That's why SVP uses a custom Avisynth build that has: - different distributor that manages threads pool a little more efficient - tuned caches that hold only up to <some amount> of frames, where <some amount> depends on threads count. Quote:
|
|
![]() |
![]() |
![]() |
#29 | Link |
RipBot264 author
Join Date: May 2006
Location: Poland
Posts: 7,915
|
in other words "donate or die"
![]()
__________________
Windows 7 Image Updater - SkyLake\KabyLake\CoffeLake\Ryzen Threadripper |
![]() |
![]() |
![]() |
#30 | Link | |
VR, 3D & HDR UHD fan
Join Date: Mar 2006
Location: Sofia, Bulgaria
Posts: 53
|
Quote:
It's not business as in Business, I don't get money for that, it's just for personal amateur-grade videos - some of my favorite moments from classic (mostly 5+ years old, rarely newer) games. And hopefully, YV24 support would be useful for other users/gamers as well. Anyways, good luck to the project. |
|
![]() |
![]() |
![]() |
#31 | Link | |
Registered User
Join Date: Mar 2012
Location: Saint-Petersburg
Posts: 239
|
Why so serious?
![]() Just remember that the one and only goal is to maximize quality and speed for real-time playback. "Removing legs" is OK within this task but adding YV24 is NOT. Quote:
![]() "Just an idea" - ok, we'll append it to the looooong TODO list. Last edited by chainik_svp; 30th March 2012 at 23:54. |
|
![]() |
![]() |
![]() |
#32 | Link | |
Registered User
Join Date: Sep 2011
Posts: 86
|
Quote:
Another possibility is to calculate using YV12 and then apply the motion vectors to the rgb (a separate "YV8" clip for each color). And with pixel art, using pel=1 should be faster and help keep things pixelated. |
|
![]() |
![]() |
![]() |
#33 | Link | |
VR, 3D & HDR UHD fan
Join Date: Mar 2006
Location: Sofia, Bulgaria
Posts: 53
|
OK, great. Thank you!
Quote:
|
|
![]() |
![]() |
![]() |
#34 | Link | |
SVP developer
Join Date: Jul 2008
Location: Russia
Posts: 23
|
Quote:
1. block.w and block.h. The lower value the more precise vector field. Set them to 8. 2. main.search.distance. Use usual positive values or big negative ones. Set it to -10. 3. main.penalty.lambda and main.penalty.plevel. The more lambda give more coherent movements, but more doubled contours. You need smaller values. The more plevel give grown of coherence level by level from coarse to finest. Try this: main.penalty.lambda=3.0 main.penalty.plevel=1.0 And to change SVSmoothFps params: 4. algo. Set it to 2. Only one source frame will be used. So no double contour. Fast result animation: ![]() |
|
![]() |
![]() |
![]() |
#35 | Link |
Registered User
Join Date: Jan 2005
Location: cz
Posts: 704
|
chainik_svp:
thank you! When aproximately do you think the svtools will be ready for usage? What advantage do you expect over the mvtools? Would it be possible to use already calculated vectors for x264 encoding (why should x264 search for vectors, when avisynth already did this) Last edited by Terka; 2nd April 2012 at 11:17. |
![]() |
![]() |
![]() |
#36 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,397
|
No. "Vectors ideal for encoding" and "vectors visually reflecting object motion" are two very different ballgames. Also consider the much more complicated situation in x264 - multiple references, multiple adaptive partition sizes, I/P/B-Frames, etc.
In a word, Avisynth's motion vectors are pretty much useless for x264. If at all, they could be used for something like "initial predictors" ... but that levels of ME is pretty fast in x264 anyway. Most probably things would get worse instead of better. In both speed and quality.
__________________
- 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!) |
![]() |
![]() |
![]() |
#39 | Link | |
Registered User
Join Date: Mar 2012
Location: Saint-Petersburg
Posts: 239
|
SVPflow 1.0.2
Quote:
Code:
super_params="{pel:1}" analyse_params="{}" super = SVSuper(super_params) vectors = SVAnalyse(super, analyse_params) forward_mv = SVConvert(vectors, false) backward_mv = SVConvert(vectors, true) super_mv = MSuper(pel=1, hpad=0, vpad=0) #padding should be zero here! MFlowFps(super_mv, backward_mv, forward_mv, num=60, den=1) |
|
![]() |
![]() |
![]() |
Tags |
frame doubling, frame rate conversion, mvtools, opencl |
Thread Tools | Search this Thread |
Display Modes | |
|
|