<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><font face="monospace, monospace">Hi.</font><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">In my program I have the following filter:</font></div><div><font face="monospace, monospace">"</font></div><div><font face="monospace, monospace"> [in0]format=pix_fmts=yuv420p,scale=-1:540[s0];</font></div><div><font face="monospace, monospace"> [in1]format=pix_fmts=yuv420p,scale=-1:540[s1];</font></div><div><font face="monospace, monospace"> [s0][s1]vstack[stacked];</font></div><div><font face="monospace, monospace"> [stacked]pad=1920:1080:(ow-iw)/2:0[out0]</font></div><div><font face="monospace, monospace">"<br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">My problem comes from the 'vstack' filter. The stack filters assign the same synclevel to all of their inputs, libavfilter/vf_stack.c around line 290:</font></div><div><div><font face="monospace, monospace">    for (i = 0; i < s->nb_inputs; i++) {</font></div><div><font face="monospace, monospace">        AVFilterLink *inlink = ctx->inputs[i];</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">        in[i].time_base = inlink->time_base;</font></div><div><font face="monospace, monospace">        in[i].sync   = 1;  // This line here is the important.</font></div><div><font face="monospace, monospace">        in[i].before = EXT_STOP;</font></div><div><font face="monospace, monospace">        in[i].after  = s->shortest ? EXT_STOP : EXT_INFINITY;</font></div><div><font face="monospace, monospace">    }</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    return ff_framesync_configure(&s->fs);</font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">With the same synclevel on all the inputs, the framesync filter activates on all the inputs, which has the following undesired effect:</font></div><div><font face="monospace, monospace">   Being bought of the inputs(in0, in1) at 30fps, the output(out0) is at ~60fps.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">The easy fix for this, was to use the fps filter and have something like this:</font></div><div><div><font face="monospace, monospace">"</font></div><div><font face="monospace, monospace"> [in0]format=pix_fmts=yuv420p,scale=-1:540[s0];</font></div><div><font face="monospace, monospace"> [in1]format=pix_fmts=yuv420p,scale=-1:540[s1];</font></div><div><font face="monospace, monospace"> [s0][s1]vstack[stacked];</font></div><div><font face="monospace, monospace"> [stacked]fps=fps=30[normalized];</font></div><div><font face="monospace, monospace"> [normalized]pad=1920:1080:(ow-iw)/2:0[out0]</font></div><div><font face="monospace, monospace">"</font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">The problem I have with this solution is that stacking frames at 2xFps just to discard half of them seems wasteful to me, cpu and memory wise.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Having the following filter:</font></div><div><div><font face="monospace, monospace">"</font></div><div><font face="monospace, monospace"> [in0]format=pix_fmts=yuv420p,scale=-1:540,fps=fps=30[s0];</font></div><div><font face="monospace, monospace"> [in1]format=pix_fmts=yuv420p,scale=-1:540,fps=fps=30[s1];</font></div><div><font face="monospace, monospace"> [s0][s1]vstack[stacked];</font></div><div><font face="monospace, monospace"> [

stacked ]pad=1920:1080:(ow-iw)/2:0[out0]</font></div><div><font face="monospace, monospace">"</font></div></div><div><font face="monospace, monospace">where the framesync of the vstack filter only triggers on one of the inputs seems to me a better solution.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Is there a way to achieve this? Can the synclevels be set by the users?</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Thank.</font></div></div></div></div></div></div>