|
|
|
@@ -26,21 +26,31 @@ |
|
|
|
void ff_prores_idct_put_10_sse2(uint16_t *dst, int linesize, |
|
|
|
int16_t *block, int16_t *qmat); |
|
|
|
|
|
|
|
static void ff_prores_idct_put_10_sse2_wrap(int16_t *dst){ |
|
|
|
DECLARE_ALIGNED(16, static int16_t, qmat)[64]; |
|
|
|
DECLARE_ALIGNED(16, static int16_t, tmp)[64]; |
|
|
|
int i; |
|
|
|
#define PR_WRAP(INSN) \ |
|
|
|
static void ff_prores_idct_put_10_##INSN##_wrap(int16_t *dst){ \ |
|
|
|
DECLARE_ALIGNED(16, static int16_t, qmat)[64]; \ |
|
|
|
DECLARE_ALIGNED(16, static int16_t, tmp)[64]; \ |
|
|
|
int i; \ |
|
|
|
\ |
|
|
|
for(i=0; i<64; i++){ \ |
|
|
|
qmat[i]=4; \ |
|
|
|
tmp[i]= dst[i]; \ |
|
|
|
} \ |
|
|
|
ff_prores_idct_put_10_##INSN (dst, 16, tmp, qmat); \ |
|
|
|
\ |
|
|
|
for(i=0; i<64; i++) { \ |
|
|
|
dst[i] -= 512; \ |
|
|
|
} \ |
|
|
|
} |
|
|
|
|
|
|
|
for(i=0; i<64; i++){ |
|
|
|
qmat[i]=4; |
|
|
|
tmp[i]= dst[i]; |
|
|
|
} |
|
|
|
ff_prores_idct_put_10_sse2(dst, 16, tmp, qmat); |
|
|
|
PR_WRAP(sse2) |
|
|
|
|
|
|
|
# if HAVE_AVX_EXTERNAL |
|
|
|
void ff_prores_idct_put_10_avx(uint16_t *dst, int linesize, |
|
|
|
int16_t *block, int16_t *qmat); |
|
|
|
PR_WRAP(avx) |
|
|
|
# endif |
|
|
|
|
|
|
|
for(i=0; i<64; i++) { |
|
|
|
dst[i] -= 512; |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
static const struct algo fdct_tab_arch[] = { |
|
|
|
@@ -71,6 +81,9 @@ static const struct algo idct_tab_arch[] = { |
|
|
|
#endif /* CONFIG_MPEG4_DECODER && HAVE_YASM */ |
|
|
|
#if (CONFIG_PRORES_DECODER || CONFIG_PRORES_LGPL_DECODER) && ARCH_X86_64 && HAVE_YASM |
|
|
|
{ "PR-SSE2", ff_prores_idct_put_10_sse2_wrap, FF_IDCT_PERM_TRANSPOSE, AV_CPU_FLAG_SSE2, 1 }, |
|
|
|
# if HAVE_AVX_EXTERNAL |
|
|
|
{ "PR-AVX", ff_prores_idct_put_10_avx_wrap, FF_IDCT_PERM_TRANSPOSE, AV_CPU_FLAG_AVX, 1 }, |
|
|
|
# endif |
|
|
|
#endif |
|
|
|
{ 0 } |
|
|
|
}; |
|
|
|
|