diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2024-02-28 13:42:38 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2024-03-02 02:54:11 +0100 |
commit | 4460cb485be4875d0aad93f40a375b6a68fc65e4 (patch) | |
tree | c098d4c03e4fde4d38bbb4c4bdbfb15fbe97e7bb /libavcodec/svq1encdsp.h | |
parent | 88b3b09afa5ef00dfc89a5904614bd51de65c21b (diff) | |
download | ffmpeg-4460cb485be4875d0aad93f40a375b6a68fc65e4.tar.gz |
avcodec/svq1enc: Move initializing DSP out of svq1enc.c
Otherwise svq1enc.o gets pulled in by the svq1encdsp checkasm
test and it in turn pulls the rest of lavc in.
Besides being bad size-wise this also has the downside that
it pulls in avpriv_(cga|vga16)_font from libavutil which are
marked as being imported from another library when building
libavcodec as a DLL and this breaks checkasm because it links
both lavc and lavu statically.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/svq1encdsp.h')
-rw-r--r-- | libavcodec/svq1encdsp.h | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/libavcodec/svq1encdsp.h b/libavcodec/svq1encdsp.h index 5dfa35cc62..751b5eed86 100644 --- a/libavcodec/svq1encdsp.h +++ b/libavcodec/svq1encdsp.h @@ -23,14 +23,38 @@ #include <stdint.h> +#include "config.h" + typedef struct SVQ1EncDSPContext { int (*ssd_int8_vs_int16)(const int8_t *pix1, const int16_t *pix2, intptr_t size); } SVQ1EncDSPContext; -void ff_svq1enc_init(SVQ1EncDSPContext *c); void ff_svq1enc_init_ppc(SVQ1EncDSPContext *c); void ff_svq1enc_init_riscv(SVQ1EncDSPContext *c); void ff_svq1enc_init_x86(SVQ1EncDSPContext *c); +static int ssd_int8_vs_int16_c(const int8_t *pix1, const int16_t *pix2, + intptr_t size) +{ + int score = 0; + + for (intptr_t i = 0; i < size; i++) + score += (pix1[i] - pix2[i]) * (pix1[i] - pix2[i]); + return score; +} + +static inline void ff_svq1enc_init(SVQ1EncDSPContext *c) +{ + c->ssd_int8_vs_int16 = ssd_int8_vs_int16_c; + +#if ARCH_PPC + ff_svq1enc_init_ppc(c); +#elif ARCH_RISCV + ff_svq1enc_init_riscv(c); +#elif ARCH_X86 + ff_svq1enc_init_x86(c); +#endif +} + #endif /* AVCODEC_SVQ1ENCDSP_H */ |