avcodec/x86/vvc/vvcdsp_init: fix unresolved external symbol on ARCH_X86_32

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
This commit is contained in:
Wu Jianhua 2024-02-05 19:59:23 +08:00 committed by Nuo Mi
parent 7f92014aca
commit 3372876888
1 changed files with 41 additions and 39 deletions

View File

@ -31,6 +31,7 @@
#include "libavcodec/vvc/vvcdsp.h"
#include "libavcodec/x86/h26x/h2656dsp.h"
#if ARCH_X86_64
#define FW_PUT(name, depth, opt) \
static void ff_vvc_put_ ## name ## _ ## depth ## _##opt(int16_t *dst, const uint8_t *src, ptrdiff_t srcstride, \
int height, const int8_t *hf, const int8_t *vf, int width) \
@ -204,51 +205,52 @@ AVG_FUNCS(16, 12, avx2)
c->inter.avg = bf(avg, bd, opt); \
c->inter.w_avg = bf(w_avg, bd, opt); \
} while (0)
#endif
void ff_vvc_dsp_init_x86(VVCDSPContext *const c, const int bd)
{
#if ARCH_X86_64
const int cpu_flags = av_get_cpu_flags();
if (ARCH_X86_64) {
if (bd == 8) {
if (EXTERNAL_SSE4(cpu_flags)) {
MC_LINK_SSE4(8);
}
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
MC_LINKS_AVX2(8);
}
} else if (bd == 10) {
if (EXTERNAL_SSE4(cpu_flags)) {
MC_LINK_SSE4(10);
}
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
MC_LINKS_AVX2(10);
MC_LINKS_16BPC_AVX2(10);
}
} else if (bd == 12) {
if (EXTERNAL_SSE4(cpu_flags)) {
MC_LINK_SSE4(12);
}
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
MC_LINKS_AVX2(12);
MC_LINKS_16BPC_AVX2(12);
}
if (bd == 8) {
if (EXTERNAL_SSE4(cpu_flags)) {
MC_LINK_SSE4(8);
}
if (EXTERNAL_AVX2(cpu_flags)) {
switch (bd) {
case 8:
AVG_INIT(8, avx2);
break;
case 10:
AVG_INIT(10, avx2);
break;
case 12:
AVG_INIT(12, avx2);
break;
default:
break;
}
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
MC_LINKS_AVX2(8);
}
} else if (bd == 10) {
if (EXTERNAL_SSE4(cpu_flags)) {
MC_LINK_SSE4(10);
}
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
MC_LINKS_AVX2(10);
MC_LINKS_16BPC_AVX2(10);
}
} else if (bd == 12) {
if (EXTERNAL_SSE4(cpu_flags)) {
MC_LINK_SSE4(12);
}
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
MC_LINKS_AVX2(12);
MC_LINKS_16BPC_AVX2(12);
}
}
if (EXTERNAL_AVX2(cpu_flags)) {
switch (bd) {
case 8:
AVG_INIT(8, avx2);
break;
case 10:
AVG_INIT(10, avx2);
break;
case 12:
AVG_INIT(12, avx2);
break;
default:
break;
}
}
#endif
}