I managed to get it working with overlay, using tee & named fifo. In first attempt I had two ffmpeg instance: 1 - creating new image, merging with accumulator image and sending to tee, which makes split job, redirecting it to second ffmpeg. 2 - takes output from ffmpeg-1 and shifts, preparing for new merge, and feeds it to fifo, where ffmpeg-1 reads it again. But before ffmpeg-2 starts, ffmpeg-1 is seeded by null "starter" frame, generated by awk, so that loop can start (I tried - it will not without initial seed).
That was able to reach 1150 fps. I expected, that doing all job in one ffmpeg would give better speed. Actual ffmpeg command: stdbuf -o0 ffmpeg -nostdin -v verbose \ -vcodec rawvideo -f rawvideo -pix_fmt gray -s 1x1 -i pipe:0 \ -vcodec rawvideo -f rawvideo -pix_fmt gray -s ${w}x${h} \ -i "${loop_src}" -filter_complex " [0:v] scale = iw : 128 : flags = neighbor, geq = lum=' if( gt(Y, H - p(X,Y) * H / 255 ), 80 )', scale = iw : $h : flags = bicubic, format = gray [new]; [1:v] convolution = 0 0 1 : 0mode = row, format = gray [acc_out]; [acc_out] [new] overlay = W-1 : 0, format = gray " -vcodec rawvideo -f rawvideo - | stdbuf -o0 tee "${loop_src}" and seed command: stdbuf -o0 awk 'BEGIN { for (i = 0; i < ('$w'*'$h'); i++) printf "\0" exit }' > "${loop_src}" & (as for loop_sink - it was used for second loop). But instead - strange bootleneck appeared, keeping fps between 200 and 100. However, it's not cpu load - I can barely notice it. Suspecting IO problem. At least during start - visible graphic movement speed erratically increased, but otherwise was constrained. I tried to change stdbuf -o to have buffer with size just to hold output frame, but it did not make a difference. Is it possible to reduce it without second ffmpeg instance? _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".