From 84d173d3de97c753234ab0c0b50551d51413d663 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Fri, 8 Aug 2014 03:10:05 -0700 Subject: xvididct: Ensure that the scantable permutation is always set correctly This fixes cases where the scantable permuation would get overwritten by the general idctdsp initialization. --- libavcodec/x86/xvididct_init.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'libavcodec/x86/xvididct_init.c') diff --git a/libavcodec/x86/xvididct_init.c b/libavcodec/x86/xvididct_init.c index 3112fb5e92..d5d8ac9630 100644 --- a/libavcodec/x86/xvididct_init.c +++ b/libavcodec/x86/xvididct_init.c @@ -25,17 +25,6 @@ #include "idct_xvid.h" #include "idctdsp.h" -static const uint8_t idct_sse2_row_perm[8] = { 0, 4, 1, 5, 2, 6, 3, 7 }; - -static av_cold void init_scantable_permutation_sse2(uint8_t *idct_permutation, - enum idct_permutation_type perm_type) -{ - int i; - - for (i = 0; i < 64; i++) - idct_permutation[i] = (i & 0x38) | idct_sse2_row_perm[i & 7]; -} - av_cold void ff_xvididct_init_x86(IDCTDSPContext *c) { int cpu_flags = av_get_cpu_flags(); @@ -44,12 +33,14 @@ av_cold void ff_xvididct_init_x86(IDCTDSPContext *c) c->idct_put = ff_idct_xvid_mmx_put; c->idct_add = ff_idct_xvid_mmx_add; c->idct = ff_idct_xvid_mmx; + c->perm_type = FF_IDCT_PERM_NONE; } if (INLINE_MMXEXT(cpu_flags)) { c->idct_put = ff_idct_xvid_mmxext_put; c->idct_add = ff_idct_xvid_mmxext_add; c->idct = ff_idct_xvid_mmxext; + c->perm_type = FF_IDCT_PERM_NONE; } if (INLINE_SSE2(cpu_flags)) { @@ -57,7 +48,5 @@ av_cold void ff_xvididct_init_x86(IDCTDSPContext *c) c->idct_add = ff_idct_xvid_sse2_add; c->idct = ff_idct_xvid_sse2; c->perm_type = FF_IDCT_PERM_SSE2; - - init_scantable_permutation_sse2(c->idct_permutation, c->perm_type); } } -- cgit v1.2.3