mirror of https://git.ffmpeg.org/ffmpeg.git
x86: hevc: Fix linking with both yasm and optimizations disabled
Some optimized functions reference optimized symbols, so the functions must be explicitly disabled when those symbols are unavailable.
This commit is contained in:
parent
cd846b4797
commit
257b30af8e
|
@ -86,7 +86,7 @@ INTERP_HV_FUNC(32, avx)
|
||||||
INTERP_HV_FUNC(48, avx)
|
INTERP_HV_FUNC(48, avx)
|
||||||
INTERP_HV_FUNC(64, avx)
|
INTERP_HV_FUNC(64, avx)
|
||||||
|
|
||||||
#if ARCH_X86_64
|
#if ARCH_X86_64 && HAVE_AVX_EXTERNAL
|
||||||
#define QPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv) \
|
#define QPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv) \
|
||||||
static void hevc_qpel_hv_ ## width ## _ ## depth ## _ ## cf_hv(int16_t *dst, ptrdiff_t dststride, \
|
static void hevc_qpel_hv_ ## width ## _ ## depth ## _ ## cf_hv(int16_t *dst, ptrdiff_t dststride, \
|
||||||
uint8_t *src, ptrdiff_t srcstride, \
|
uint8_t *src, ptrdiff_t srcstride, \
|
||||||
|
@ -100,7 +100,7 @@ static void hevc_qpel_hv_ ## width ## _ ## depth ## _ ## cf_hv(int16_t *dst, ptr
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define QPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv)
|
#define QPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv)
|
||||||
#endif
|
#endif /* ARCH_X86_64 && HAVE_AVX_EXTERNAL */
|
||||||
|
|
||||||
#define QPEL_FUNCS(width, depth, cf_h, cf_v, cf_hv) \
|
#define QPEL_FUNCS(width, depth, cf_h, cf_v, cf_hv) \
|
||||||
void ff_hevc_qpel_h_ ## width ## _ ## depth ## _ ## cf_h(int16_t *dst, ptrdiff_t dststride, \
|
void ff_hevc_qpel_h_ ## width ## _ ## depth ## _ ## cf_h(int16_t *dst, ptrdiff_t dststride, \
|
||||||
|
@ -129,7 +129,7 @@ QPEL_FUNCS(32, 10, avx, avx, avx)
|
||||||
QPEL_FUNCS(48, 10, avx, avx, avx)
|
QPEL_FUNCS(48, 10, avx, avx, avx)
|
||||||
QPEL_FUNCS(64, 10, avx, avx, avx)
|
QPEL_FUNCS(64, 10, avx, avx, avx)
|
||||||
|
|
||||||
#if ARCH_X86_64
|
#if ARCH_X86_64 && HAVE_AVX_EXTERNAL
|
||||||
#define EPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv) \
|
#define EPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv) \
|
||||||
static void hevc_epel_hv_ ## width ## _ ## depth ## _ ## cf_hv(int16_t *dst, ptrdiff_t dststride, \
|
static void hevc_epel_hv_ ## width ## _ ## depth ## _ ## cf_hv(int16_t *dst, ptrdiff_t dststride, \
|
||||||
uint8_t *src, ptrdiff_t srcstride, \
|
uint8_t *src, ptrdiff_t srcstride, \
|
||||||
|
@ -143,7 +143,7 @@ static void hevc_epel_hv_ ## width ## _ ## depth ## _ ## cf_hv(int16_t *dst, ptr
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define EPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv)
|
#define EPEL_FUNC_HV(width, depth, cf_h, cf_v, cf_hv)
|
||||||
#endif
|
#endif /* ARCH_X86_64 && HAVE_AVX_EXTERNAL */
|
||||||
|
|
||||||
#define EPEL_FUNCS(width, depth, cf_h, cf_v, cf_hv) \
|
#define EPEL_FUNCS(width, depth, cf_h, cf_v, cf_hv) \
|
||||||
void ff_hevc_epel_h_ ## width ## _ ## depth ## _ ## cf_h(int16_t *dst, ptrdiff_t dststride, \
|
void ff_hevc_epel_h_ ## width ## _ ## depth ## _ ## cf_h(int16_t *dst, ptrdiff_t dststride, \
|
||||||
|
@ -277,8 +277,10 @@ void ff_hevc_dsp_init_x86(HEVCDSPContext *c, const int bit_depth)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EXTERNAL_AVX(cpu_flags)) {
|
if (EXTERNAL_AVX(cpu_flags)) {
|
||||||
|
#if HAVE_AVX_EXTERNAL
|
||||||
SET_QPEL_FUNCS(1, 1, 8, avx, hevc_qpel_hv);
|
SET_QPEL_FUNCS(1, 1, 8, avx, hevc_qpel_hv);
|
||||||
SET_EPEL_FUNCS(1, 1, 8, avx, hevc_epel_hv);
|
SET_EPEL_FUNCS(1, 1, 8, avx, hevc_epel_hv);
|
||||||
|
#endif /* HAVE_AVX_EXTERNAL */
|
||||||
}
|
}
|
||||||
} else if (bit_depth == 10) {
|
} else if (bit_depth == 10) {
|
||||||
if (EXTERNAL_SSSE3(cpu_flags)) {
|
if (EXTERNAL_SSSE3(cpu_flags)) {
|
||||||
|
@ -292,12 +294,14 @@ void ff_hevc_dsp_init_x86(HEVCDSPContext *c, const int bit_depth)
|
||||||
SET_CHROMA_FUNCS(weighted_pred_avg_chroma, ff_hevc_put_weighted_pred_avg, 10, sse4);
|
SET_CHROMA_FUNCS(weighted_pred_avg_chroma, ff_hevc_put_weighted_pred_avg, 10, sse4);
|
||||||
}
|
}
|
||||||
if (EXTERNAL_AVX(cpu_flags)) {
|
if (EXTERNAL_AVX(cpu_flags)) {
|
||||||
|
#if HAVE_AVX_EXTERNAL
|
||||||
SET_QPEL_FUNCS(0, 1, 10, avx, ff_hevc_qpel_h);
|
SET_QPEL_FUNCS(0, 1, 10, avx, ff_hevc_qpel_h);
|
||||||
SET_QPEL_FUNCS(1, 0, 10, avx, ff_hevc_qpel_v);
|
SET_QPEL_FUNCS(1, 0, 10, avx, ff_hevc_qpel_v);
|
||||||
SET_QPEL_FUNCS(1, 1, 10, avx, hevc_qpel_hv);
|
SET_QPEL_FUNCS(1, 1, 10, avx, hevc_qpel_hv);
|
||||||
SET_EPEL_FUNCS(0, 1, 10, avx, ff_hevc_epel_h);
|
SET_EPEL_FUNCS(0, 1, 10, avx, ff_hevc_epel_h);
|
||||||
SET_EPEL_FUNCS(1, 0, 10, avx, ff_hevc_epel_v);
|
SET_EPEL_FUNCS(1, 0, 10, avx, ff_hevc_epel_v);
|
||||||
SET_EPEL_FUNCS(1, 1, 10, avx, hevc_epel_hv);
|
SET_EPEL_FUNCS(1, 1, 10, avx, hevc_epel_hv);
|
||||||
|
#endif /* HAVE_AVX_EXTERNAL */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* ARCH_X86_64 */
|
#endif /* ARCH_X86_64 */
|
||||||
|
|
Loading…
Reference in New Issue