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. |
4th March 2015, 17:45 | #141 | Link |
Registered User
Join Date: Jul 2013
Posts: 60
|
is there something like SVP or Interframe for Vapoursynth?
I mean some library that allows to calculate extra frames between other frames based on movement analysis? If I understood it correctly MVTools is only the "basis" for such a tool since it provides motion analysis functions, but it does not contain a function to calculate extra frames based on those analysis, is that correct? |
5th March 2015, 09:51 | #142 | Link |
ангел смерти
Join Date: Nov 2004
Location: Lost
Posts: 9,558
|
SVPFlow is based on the same idea as MVFlow, which is an extension of MVCompensate from blocks to single pixels. It certainly is possible, it just won't be as high quality as SVP, as they've done a bang-up job of enhancing the quality as much as possible. See a rather old thread for an idea of how to get MVFlowFPS working. I'm a little too tipsy to convert to VS right now.
|
5th March 2015, 16:06 | #143 | Link |
Registered User
Join Date: Jul 2013
Posts: 60
|
okey, thanks for the reply foxyshadis!
did I understand you correctly: Is the recommendation for getting the best possible quality of Motion Interpolation to stick to using Avisynth 32bit + SVP? Last edited by kaefert; 5th March 2015 at 16:10. |
5th March 2015, 19:38 | #144 | Link | |
ангел смерти
Join Date: Nov 2004
Location: Lost
Posts: 9,558
|
Quote:
You can use SVP in VSynth through the avs wrapper. Right now that means limited to 8-bit, but kolak and SEt are pushing them to include stacked 16-bit as well. |
|
6th March 2015, 07:20 | #145 | Link |
Registered User
Join Date: Jul 2013
Posts: 60
|
oh. okey. so does that mean that if I'm using a a Server that has a nice octacore Xeon CPU, but virtually no GPU "Matrox G200e (Server Engines)" that I have no chance to get this quality?
I guess I would need nvidia or ati to be able to use gpu-accelerated version, correct? UPDATE: okey so I've found this compatibility list for which GPUs work: http://www.svp-team.com/wiki/GPU_Compatibility But I could not yet find an answer to the question if I can't simply generate the "same" quality of motion interpolated in-between frames by using SVP with the gpu=0 parameter set. (slower of course, but since I want to encode the result instead of displaying it live (like the SVP-team seems to intend) slower is annoying but not a deal breaker for me) Last edited by kaefert; 7th March 2015 at 16:37. |
9th March 2015, 23:40 | #146 | Link |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
Here is v8.
Code:
* Fix occasional division by zero in Analyse with 16 bit input
__________________
Buy me a "coffee" and/or hire me to write code! |
22nd May 2015, 15:52 | #147 | Link |
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
uh... really don't wanna be a dick here, but gotta ask about "vmulti, mdegrainN" stuff again, those are planned to be implemented someday or like, never gonna happen?
I'm like, ditching avisynth and moving everything to vaporsynth and mvtools, it's the only major problem I got now plz, gimme an answer, functions added by Firesledge, will they ever appear in vsmvtools? |
22nd May 2015, 22:40 | #148 | Link | |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
Quote:
__________________
Buy me a "coffee" and/or hire me to write code! |
|
23rd May 2015, 00:01 | #149 | Link | |
Guest
Posts: n/a
|
Quote:
Last edited by captainadamo; 23rd May 2015 at 00:17. Reason: Updating reflecting that this was a using a raw source not compressed which obviously would have added some amount of slowdow |
|
23rd May 2015, 08:02 | #150 | Link | |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
Quote:
__________________
Buy me a "coffee" and/or hire me to write code! |
|
23rd May 2015, 16:25 | #151 | Link |
Guest
Posts: n/a
|
Around 6.5fps. The NEON for the 4x4 SAD only improved things consistently up to about 6.8 fps. The big gain was the 8x8 SAD in NEON which gave it the bump to 10.5 fps.
Just to note this was only when optimizing based off of profiling that single test script. And even with the NEON, those two SAD functions still basically swamp everything else in the performance counters so I don't know how much more I can squeeze out. Last edited by captainadamo; 23rd May 2015 at 16:46. |
24th May 2015, 10:37 | #152 | Link |
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
mv.compensate seems like, well.. busted
Code:
import vapoursynth as vs core = vs.get_core() clp = core.raws.Source("Y.rgb", 736, 960, src_fmt="Y8") clp = core.fmtc.stack16tonative(clp) super = core.mv.Super (clp) bv = core.mv.Analyse (super, isb=True,delta=1) bcmp = core.mv.Compensate (clp, super, bv, thsad=400, thscd1=248, thscd2=130) bcmp.set_output () bcmp.set_output () = instant crash |
24th May 2015, 15:33 | #153 | Link | |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
Quote:
Here is v9. Code:
* Fix crash in Compensate with Gray input
__________________
Buy me a "coffee" and/or hire me to write code! |
|
24th May 2015, 17:02 | #154 | Link |
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
any way to encode the vector clip to an actual vid and load it later, like whenever I need it?
tried to encode it directly and vspipe moaned about "cannot output clips with varying dimensions" I need vectors encoded so I can do motion estimation just once and use it to motion compensate several times Last edited by feisty2; 24th May 2015 at 17:07. |
24th May 2015, 22:37 | #155 | Link | |
Registered User
Join Date: Aug 2012
Posts: 203
|
Quote:
Save the image data using imwri is impossible, the plugin create image as you visualize them, and due to impossibility to use vspipe to request all frames this is a manual process, also save 100 frames in png require about 30MB. The ye olde mvtools for avs had an interesting outfile parameters, but seems lacking an infile parameter, thus making it useless, also it was removed. Then i took a look at the code and tried to see how the analyse function saved the image. It did so creating a frame 1xnVector and then writing/reading directly into it. Replacing this frame for a simple array and then writing this array to a file in a binary format [and maybe applying some compression if needed]. If you don't want to modify mvtools code [for reason i can understand], creating an extra plugin [i dunno if it can be done also as a script] that read the image and binarize that into a file and vice versa, it should be a trivial task i think. if you are not capable [iirc you said that you are not so good with c] and jackoneill don't want to make this i can spare some time. EDIT1: I should go to splice cause almost 1AM but i got really interested in this problem. I sketched something in my head and i think i only need how to access sequentially all the frames of a video without requesting it directly [so not something like imwri, but like lsmash] and maybe have also a progress bar of some sort [you know, you don't want to stare at a spinning circle for hours or more] Probably something like getFrameAsync() that call a writing function with fmSerial threading mode. EDIT1.1: Reading vspipe source i thought about modifying it to create a new output mode that do exactly that, and then create a plugin to read that binary file and recreate the vec data and i also have some idea on how to make this. Now sleep! Last edited by MonoS; 24th May 2015 at 23:41. |
|
25th May 2015, 08:14 | #157 | Link |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
You can do this in Python:
Code:
import vapoursynth as vs c = vs.get_core() src = c.ffms2.Source("asdf.mp4") superclip = c.mv.Super(src) analysis = c.mv.Analyse(superclip, delta=1, isb=True) f = open("/tmp/vectors.bin", "wb") for i in range(analysis.num_frames): if (i+1) % 100 == 0: print(i+1, "/", analysis.num_frames) frame = analysis.get_frame(i) view = frame.get_read_array(0) for y in range(len(view)): # there is only one row (this loop runs once) f.write(view[y]) f.close()
__________________
Buy me a "coffee" and/or hire me to write code! |
25th May 2015, 09:35 | #159 | Link |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
I don't think the width varies in a clip. The output of Analyse has unknown dimensions simply because they are not known until a frame is returned, not because they could change from one frame to the next. Anyway, I'll leave all that as exercises for the reader.
__________________
Buy me a "coffee" and/or hire me to write code! |
Thread Tools | Search this Thread |
Display Modes | |
|
|