[FFmpeg-devel] minterpolate filter

Submitted by Michael Niedermayer on Feb. 22, 2017, 7:42 p.m.

Details

Message ID 20170222194225.GG5776@nb4
State New
Headers show

Commit Message

Michael Niedermayer Feb. 22, 2017, 7:42 p.m.
On Wed, Feb 22, 2017 at 08:02:00AM +0000, Ural wrote:
> Hello all. First, thanks for doing great and hard work. I can't imagine
> any video-(pre/post)processing exist without ffmpeg.
> I am posting my question in devel, because I am not asking how to do
> something. What I am trying to do works, but bad.
> 
> I create videos from pictures and need to make them as smooth as
> possible. I found, that what I need called 'motion interpolation'. I
> started to search all forums, and found only 3 things can help me:
> slowmovideo, butterflow and new ffmpeg's filter minterpolate.
> 
> <offtopic>
> slowmovideo needs many configuration, I was not able to get it to work
> as I want. with butterflow, I tried anything. From installing OpenCL,
> OpenGL and other stuff to switching to nvidia binary drivers and
> installing all sdk tools and cuda. It never worked. Some error about
> cuda, and google don't know about it.
> </offtopic>
> 
> So third option was the only one available. When I tried it, it did
> exactly what I want! But it is incredibly SLOW. I have 8-core CPU, and
> it processes about 0.1-0.3 fps. And uses just 1 CORE, no video card.
> 
> Guys, do you have some plans about this awesome filter? Like to port it
> to opencl, or use at least all cores? There are no any option available,
> so all hopes only to this filter. Or maybe some other
> alternatives/patches exist?

theres mcfps
https://github.com/michaelni/FFmpeg/tree/mcfps

its not really designed for speed but if you switch it to use non
iterative ME (see diff below) it does around 12fps here with matrixbench

mcfps is far from finished, i had many ideas on how to improve it
and as funding was mentioned in another reply in this thread and i
think i didnt mention it before, there was a company funding the mcfps
work. The ideas people had during review of the mcfps work conflicted
with my ideas to improve the motion estimation code though and without
these improvments, the quality the company would expect would not be
achievable. Which kind of halted the project

minterpolate came after that as a gsoc project and was supposed to
be based on mcfps but wasnt really, so each of mcfps and minterpolate
are better at some things and worse at others.
Also noone is working on minterpolate anymore AFAIK

Both mcfps and minterpolate are quality wise not as good as id like
There were alot of ideas/improvments that should be tried.
Optimizing the existing code should come after improving it quality
wise, except were such optimizations arent in the way of improving the
code.

If i find the motivation to work on improving the quality of the
now in git minterpolate, i guess i could check if that company still
is interrested in funding that or if they dont want to hear anything
from me and that filter anymore ... its quite a while.
not saying that this would be boring work id only do if its payed

[...]

Patch hide | download patch | download mbox

diff --git a/libavfilter/vf_mcfps.c b/libavfilter/vf_mcfps.c
index 0aa951e7a0..788d600f28 100644
--- a/libavfilter/vf_mcfps.c
+++ b/libavfilter/vf_mcfps.c
@@ -258,7 +258,7 @@  av_log(0,0, "FPS %d/%d\n", mcfps->frame_rate.num, mcfps->frame_rate.den);
             avctx_enc->flags |= CODEC_FLAG_QPEL;
         avctx_enc->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
         avctx_enc->global_quality = 12;
-        avctx_enc->me_method = ME_ITER;
+        avctx_enc->me_method = ME_EPZS;
 //         avctx_enc->dia_size = 16;
         avctx_enc->mb_decision = FF_MB_DECISION_RD;
         avctx_enc->scenechange_threshold = 2000000000;