[FFmpeg-devel] [PATCH 1/3] avfilter/vf_framerate: factorize SAD functions which compute SAD for a whole frame
Marton Balint
cus at passwd.hu
Sat Nov 10 20:38:39 EET 2018
On Sun, 4 Nov 2018, Marton Balint wrote:
>
> On Sun, 4 Nov 2018, James Almer wrote:
>
>> On 11/4/2018 9:06 AM, Marton Balint wrote:
>>> 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 at passwd.hu>
>>> ---
>>> configure | 3 +-
>>> libavfilter/Makefile | 1 +
>>> libavfilter/framerate.h | 4 +--
>>> libavfilter/scene_sad.c | 72
> ++++++++++++++++++++++++++++++++++++++
>>> libavfilter/scene_sad.h | 44 ++++++++++++++++++++++++
>>> libavfilter/vf_framerate.c | 61 ++++-----------------------------
>>> libavfilter/x86/Makefile | 4 +++
>>> libavfilter/x86/scene_sad.asm | 74
> ++++++++++++++++++++++++++++++++++++++++
>>> libavfilter/x86/scene_sad_init.c | 52 ++++++++++++++++++++++++++++
>>> 9 files changed, 257 insertions(+), 58 deletions(-)
>>> create mode 100644 libavfilter/scene_sad.c
>>> create mode 100644 libavfilter/scene_sad.h
>>> create mode 100644 libavfilter/x86/scene_sad.asm
>>> create mode 100644 libavfilter/x86/scene_sad_init.c
>>>
>>> diff --git a/configure b/configure
>>> index 2606b885b0..f5bec9fd62 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -2335,6 +2335,7 @@ CONFIG_EXTRA="
>>> rtpdec
>>> rtpenc_chain
>>> rv34dsp
>>> + scene_sad
>>> sinewin
>>> snappy
>>> srtp
>>> @@ -3395,7 +3396,7 @@ find_rect_filter_deps="avcodec avformat gpl"
>>> firequalizer_filter_deps="avcodec"
>>> firequalizer_filter_select="rdft"
>>> flite_filter_deps="libflite"
>>> -framerate_filter_select="pixelutils"
>>> +framerate_filter_select="scene_sad"
>>> frei0r_filter_deps="frei0r libdl"
>>> frei0r_src_filter_deps="frei0r libdl"
>>> fspp_filter_deps="gpl"
>>> diff --git a/libavfilter/Makefile b/libavfilter/Makefile
>>> index 51e48efc2e..390c2b7997 100644
>>> --- a/libavfilter/Makefile
>>> +++ b/libavfilter/Makefile
>>> @@ -28,6 +28,7 @@ OBJS-$(HAVE_THREADS) +=
> pthread.o
>>> OBJS-$(CONFIG_QSVVPP) += qsvvpp.o
>>> DNN-OBJS-$(CONFIG_LIBTENSORFLOW) += dnn_backend_tf.o
>>> OBJS-$(CONFIG_DNN) += dnn_interface.o
> dnn_backend_native.o $(DNN-OBJS-yes)
>>> +OBJS-$(CONFIG_SCENE_SAD) += scene_sad.o
>>>
>>> # audio filters
>>> OBJS-$(CONFIG_ABENCH_FILTER) += f_bench.o
>>
>> Can't you expand pixeutils instead? Adding a new set of functions that
>> work on lines rather than blocks.
>
> That is kind of intentional, because it is only used by libavfilter, so I
> did not want to bloat libavutil with it. Also if I put it into libavutil
> then the interfaces have to be public. I tried to avoid that because for a
> generic scene SAD function bitdepth is not enough, you need endianness,
> float/int color support, etc. Public API should be finalized when
> something actually uses it IMHO.
I plan to push this soon.
Regards,
Marton
More information about the ffmpeg-devel
mailing list