aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/x86/rv34dsp_init.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2017-02-02 17:51:21 -0300
committerJames Almer <jamrial@gmail.com>2017-02-02 17:51:21 -0300
commitc8467abbadab424757ea23f71a1036abfb7f14b4 (patch)
tree41a4db9cdb0453253f65df734df858cf0e08ca7a /libavcodec/x86/rv34dsp_init.c
parentab5c4d006da0b3e7aea6fddcebdf5d3d9ad7fd30 (diff)
downloadffmpeg-c8467abbadab424757ea23f71a1036abfb7f14b4.tar.gz
x86/rv34dsp: add ff_rv34_idct_dc_add_sse2
Also disable ff_rv34_idct_dc_add_mmx on x86_64 as the presence of sse2 is guaranteed in such builds. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/x86/rv34dsp_init.c')
-rw-r--r--libavcodec/x86/rv34dsp_init.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/x86/rv34dsp_init.c b/libavcodec/x86/rv34dsp_init.c
index d417dac45b..7310122458 100644
--- a/libavcodec/x86/rv34dsp_init.c
+++ b/libavcodec/x86/rv34dsp_init.c
@@ -27,6 +27,7 @@
void ff_rv34_idct_dc_mmxext(int16_t *block);
void ff_rv34_idct_dc_noround_mmxext(int16_t *block);
void ff_rv34_idct_dc_add_mmx(uint8_t *dst, ptrdiff_t stride, int dc);
+void ff_rv34_idct_dc_add_sse2(uint8_t *dst, ptrdiff_t stride, int dc);
void ff_rv34_idct_dc_add_sse4(uint8_t *dst, ptrdiff_t stride, int dc);
void ff_rv34_idct_add_mmxext(uint8_t *dst, ptrdiff_t stride, int16_t *block);
@@ -34,12 +35,14 @@ av_cold void ff_rv34dsp_init_x86(RV34DSPContext* c)
{
int cpu_flags = av_get_cpu_flags();
- if (EXTERNAL_MMX(cpu_flags))
+ if (ARCH_X86_32 && EXTERNAL_MMX(cpu_flags))
c->rv34_idct_dc_add = ff_rv34_idct_dc_add_mmx;
if (EXTERNAL_MMXEXT(cpu_flags)) {
c->rv34_inv_transform_dc = ff_rv34_idct_dc_noround_mmxext;
c->rv34_idct_add = ff_rv34_idct_add_mmxext;
}
+ if (EXTERNAL_SSE2(cpu_flags))
+ c->rv34_idct_dc_add = ff_rv34_idct_dc_add_sse2;
if (EXTERNAL_SSE4(cpu_flags))
c->rv34_idct_dc_add = ff_rv34_idct_dc_add_sse4;
}