summaryrefslogtreecommitdiff
path: root/libavfilter/vf_framerate.c
Commit message (Collapse)AuthorAge
* avfilter/vf_framerate: remove duplicate code with macro-based functionLimin Wang2019-09-28
| | | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com> Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: refine the filter_slice code for better readiablityLimin Wang2019-09-28
| | | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com> Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: limit the scene level max rangeLimin Wang2019-09-28
| | | | | | Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Limin Wang <lance.lmwang@gmail.com> Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: factorize SAD functions which compute SAD for a whole ↵Marton Balint2018-11-11
| | | | | | | | | frame Also add SIMD which works on lines because it is faster then calculating it on 8x8 blocks using pixelutils. Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: switch to activateMarton Balint2018-09-09
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: add SIMD functions for frame blendingMarton Balint2018-01-28
| | | | | | | | | | | | | | | | | | Blend function speedups on x86_64 Core i5 4460: ffmpeg -f lavfi -i allyuv -vf framerate=60:threads=1 -f null none C: 447548411 decicycles in Blend, 2048 runs, 0 skips SSSE3: 130020087 decicycles in Blend, 2048 runs, 0 skips AVX2: 128508221 decicycles in Blend, 2048 runs, 0 skips ffmpeg -f lavfi -i allyuv -vf format=yuv420p12,framerate=60:threads=1 -f null none C: 228932745 decicycles in Blend, 2048 runs, 0 skips SSE4: 123357781 decicycles in Blend, 2048 runs, 0 skips AVX2: 121215353 decicycles in Blend, 2048 runs, 0 skips Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: change blend factor precisionMarton Balint2018-01-28
| | | | | | | | | | | | | This is done mainly in preparation for the SIMD patches. - for the 8-bit input, decrease the blend factor precision to 7-bit. - for the 16-bit input, increase the blend factor precision to 15-bit. - make sure the blend functions are not called with 0 or maximum blending factors, because we don't want the signed factor integers to overflow. Fate test changes are due to different rounding. Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: factorize blend functions and unify filter_sliceMarton Balint2018-01-28
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: unify luma and chroma blendingMarton Balint2018-01-28
| | | | | | The expressions were mathematically equvivalent... Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: simplify filterMarton Balint2018-01-12
| | | | | | | | | | | | | | | | | | | | | | | The framerate filter was quite convoluted with some filter_frame / request_frame logic bugs. It seemed easier to rewrite the whole filter_frame / request_frame part and also the frame interpolation ratio calculation part in one step. Notable changes: - The filter now only stores 2 frames instead of 3 - filter_frame outputs all the frames it can to be able to handle consecutive filter_frame calls which previously caused early drops of buffered frames. - because of this, request_frame is largely simplified and it only outputs frames on flush. Previously consecuitve request_frame calls could cause the filter to think it is in flush mode filling its buffer with the same frames causing a "ghost" effect on the output. - PTS discontinuities are handled better - frames with unknown PTS values are now dropped Fixes ticket #4870. Probably fixes ticket #5493. Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: calculate interpolation as integerMarton Balint2018-01-04
| | | | | | | | | | It was truncated to int later on anyway. Fate test changes are due to rounding instead of truncation. Fixes fate test failures on x86-32 (gcc 4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1)) after 090b740680f91e0f2bf07423c36df7166740e8f6. Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: fix scene score with negative linesizeMarton Balint2017-12-21
| | | | | | | Also, do not overread input if linesize > width, or linesize is not divisible by 8, and use the proper rounded width/height for MAFD calculation. Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: do not calculate scene change score multiple times ↵Marton Balint2017-12-21
| | | | | | | | | | for the same frame This speeds up the filter, and also fixes scene change detection score which is reduced based on the difference of the current MAFD to the preivous MAFD. Obviously if we compare two frames twice, the difference will be 0... Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: fix scene change detection scoreMarton Balint2017-12-21
| | | | | | | | | - normalize score to [0..100] instead of [0..85] - change the default score to 8.2 to roughly keep existing behaviour - take into account bit depth - do not truncate to integer Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: factorize get_scene_scoreMarton Balint2017-12-21
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: factorize blend_framesMarton Balint2017-12-21
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: add threaded blending operationsMarton Balint2017-12-21
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avfilter/vf_framerate: always request input if no output is provided in ↵Marton Balint2017-04-12
| | | | | | | | request_frame Fixes ticket #6285. Signed-off-by: Marton Balint <cus@passwd.hu>
* lavf/vf_framerate: Fix frame leak when increasing framerate.Alexis Ballier2017-03-16
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avfilter,swresample,swscale: use fabs, fabsf instead of FFABSGanesh Ajjanagadde2015-10-22
| | | | | | | | | | | | | | | | | | | | | | | | It is well known that fabs and fabsf are at least as fast and sometimes faster than the FFABS macro, at least on the gcc+glibc combination. For instance, see the reference: http://patchwork.sourceware.org/patch/6735/. This was a patch to glibc in order to remove their usages of a macro. The reason essentially boils down to fabs using the __builtin_fabs of the compiler, while FFABS needs to infer to not use a branch and to simply change the sign bit. Usually the inference works, but sometimes it does not. This may be easily checked by looking at the asm. This also has the added benefit of reducing macro usage, which has problems with side-effects. Note that avcodec is not handled here, as it is huge and most things there are integer arithmetic anyway. Tested with FATE. Reviewed-by: Clément Bœsch <u@pkh.me> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* lavfi: remove FF_LINK_FLAG_REQUEST_LOOP.Nicolas George2015-09-20
| | | | It has no longer any effect.
* avfilter/vf_framerate: fix frame leak at uninitPaul B Mahol2015-09-12
| | | | | Reported-by: Andres Noetzli Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avfilter/vf_framerate: unbreak flushingPaul B Mahol2015-09-12
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avfilter/vf_framerate: calculate delta from scaled pts instead of unscaledPaul B Mahol2015-09-12
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avfilter/vf_framerate: highbit depth supportPaul B Mahol2015-09-12
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avfilter: add framerate video filterPaul B Mahol2015-08-27
Signed-off-by: Paul B Mahol <onemda@gmail.com>