|
|
|
@ -474,6 +474,12 @@ static void avg_cavs_qpel8_mc00_mmx(uint8_t *dst, uint8_t *src, |
|
|
|
|
ff_avg_pixels8_mmx(dst, src, stride, 8); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void avg_cavs_qpel8_mc00_mmxext(uint8_t *dst, uint8_t *src, |
|
|
|
|
ptrdiff_t stride) |
|
|
|
|
{ |
|
|
|
|
ff_avg_pixels8_mmxext(dst, src, stride, 8); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void put_cavs_qpel16_mc00_mmx(uint8_t *dst, uint8_t *src, |
|
|
|
|
ptrdiff_t stride) |
|
|
|
|
{ |
|
|
|
@ -485,6 +491,24 @@ static void avg_cavs_qpel16_mc00_mmx(uint8_t *dst, uint8_t *src, |
|
|
|
|
{ |
|
|
|
|
ff_avg_pixels16_mmx(dst, src, stride, 16); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void avg_cavs_qpel16_mc00_mmxext(uint8_t *dst, uint8_t *src, |
|
|
|
|
ptrdiff_t stride) |
|
|
|
|
{ |
|
|
|
|
ff_avg_pixels16_mmxext(dst, src, stride, 16); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void put_cavs_qpel16_mc00_sse2(uint8_t *dst, uint8_t *src, |
|
|
|
|
ptrdiff_t stride) |
|
|
|
|
{ |
|
|
|
|
ff_put_pixels16_sse2(dst, src, stride, 16); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void avg_cavs_qpel16_mc00_sse2(uint8_t *dst, uint8_t *src, |
|
|
|
|
ptrdiff_t stride) |
|
|
|
|
{ |
|
|
|
|
ff_avg_pixels16_sse2(dst, src, stride, 16); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
static av_cold void cavsdsp_init_mmx(CAVSDSPContext *c, |
|
|
|
@ -517,15 +541,6 @@ CAVS_MC(put_, 8, mmxext) |
|
|
|
|
CAVS_MC(put_, 16, mmxext) |
|
|
|
|
CAVS_MC(avg_, 8, mmxext) |
|
|
|
|
CAVS_MC(avg_, 16, mmxext) |
|
|
|
|
|
|
|
|
|
static av_cold void cavsdsp_init_mmxext(CAVSDSPContext *c, |
|
|
|
|
AVCodecContext *avctx) |
|
|
|
|
{ |
|
|
|
|
DSPFUNC(put, 0, 16, mmxext); |
|
|
|
|
DSPFUNC(put, 1, 8, mmxext); |
|
|
|
|
DSPFUNC(avg, 0, 16, mmxext); |
|
|
|
|
DSPFUNC(avg, 1, 8, mmxext); |
|
|
|
|
} |
|
|
|
|
#endif /* HAVE_MMXEXT_INLINE */ |
|
|
|
|
|
|
|
|
|
#if HAVE_AMD3DNOW_INLINE |
|
|
|
@ -557,7 +572,23 @@ av_cold void ff_cavsdsp_init_x86(CAVSDSPContext *c, AVCodecContext *avctx) |
|
|
|
|
cavsdsp_init_3dnow(c, avctx); |
|
|
|
|
#endif /* HAVE_AMD3DNOW_INLINE */ |
|
|
|
|
#if HAVE_MMXEXT_INLINE |
|
|
|
|
if (INLINE_MMXEXT(cpu_flags)) |
|
|
|
|
cavsdsp_init_mmxext(c, avctx); |
|
|
|
|
#endif /* HAVE_MMXEXT_INLINE */ |
|
|
|
|
if (INLINE_MMXEXT(cpu_flags)) { |
|
|
|
|
DSPFUNC(put, 0, 16, mmxext); |
|
|
|
|
DSPFUNC(put, 1, 8, mmxext); |
|
|
|
|
DSPFUNC(avg, 0, 16, mmxext); |
|
|
|
|
DSPFUNC(avg, 1, 8, mmxext); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#if HAVE_MMX_EXTERNAL |
|
|
|
|
if (EXTERNAL_MMXEXT(cpu_flags)) { |
|
|
|
|
c->avg_cavs_qpel_pixels_tab[0][0] = avg_cavs_qpel16_mc00_mmxext; |
|
|
|
|
c->avg_cavs_qpel_pixels_tab[1][0] = avg_cavs_qpel8_mc00_mmxext; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#if HAVE_SSE2_EXTERNAL |
|
|
|
|
if (EXTERNAL_SSE2(cpu_flags)) { |
|
|
|
|
c->put_cavs_qpel_pixels_tab[0][0] = put_cavs_qpel16_mc00_sse2; |
|
|
|
|
c->avg_cavs_qpel_pixels_tab[0][0] = avg_cavs_qpel16_mc00_sse2; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|