Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2017-06-23 18:01:38 +0300
committerRonald S. Bultje <rsbultje@gmail.com>2017-06-24 14:53:15 +0300
commit97f7f831691f2a2bddbd258bcbe332516d64a91b (patch)
tree71c4c89911fab9c1bfb96e622a2829ed75e8c8da /libavfilter/x86
parent565dc0e283a8480327313ffa5c1dc1931c08c456 (diff)
vf_spp: only assign function pointers if permutation matches expectations.
Diffstat (limited to 'libavfilter/x86')
-rw-r--r--libavfilter/x86/vf_spp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libavfilter/x86/vf_spp.c b/libavfilter/x86/vf_spp.c
index 45a9eb068c..7d5da610da 100644
--- a/libavfilter/x86/vf_spp.c
+++ b/libavfilter/x86/vf_spp.c
@@ -21,6 +21,7 @@
#include "libavutil/attributes.h"
#include "libavutil/cpu.h"
+#include "libavutil/crc.h"
#include "libavutil/mem.h"
#include "libavutil/x86/asm.h"
#include "libavfilter/vf_spp.h"
@@ -223,10 +224,15 @@ av_cold void ff_spp_init_x86(SPPContext *s)
int cpu_flags = av_get_cpu_flags();
if (cpu_flags & AV_CPU_FLAG_MMX) {
+ static const uint32_t mmx_idct_perm_crc = 0xe5e8adc4;
+ uint32_t idct_perm_crc =
+ av_crc(av_crc_get_table(AV_CRC_32_IEEE), 0,
+ s->dct->idct_permutation,
+ sizeof(s->dct->idct_permutation));
int64_t bps;
s->store_slice = store_slice_mmx;
av_opt_get_int(s->dct, "bits_per_sample", 0, &bps);
- if (bps <= 8) {
+ if (bps <= 8 && idct_perm_crc == mmx_idct_perm_crc) {
switch (s->mode) {
case 0: s->requantize = hardthresh_mmx; break;
case 1: s->requantize = softthresh_mmx; break;