diff options
author | Diego Biurrun <diego@biurrun.de> | 2014-08-08 03:10:05 -0700 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2014-08-08 11:13:29 -0700 |
commit | 84d173d3de97c753234ab0c0b50551d51413d663 (patch) | |
tree | 4301eb885aac7e4c06340a1d831898e58301bc9a /libavcodec/x86/xvididct_init.c | |
parent | 6f1960ab71b4f18551243ce22d01913108265233 (diff) | |
download | ffmpeg-84d173d3de97c753234ab0c0b50551d51413d663.tar.gz |
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.
Diffstat (limited to 'libavcodec/x86/xvididct_init.c')
-rw-r--r-- | libavcodec/x86/xvididct_init.c | 15 |
1 files changed, 2 insertions, 13 deletions
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); } } |