Fixes various runtime failures with manually set flags that represent no
existing CPU
Fixes Ticket3653
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6310eb8010b7a3b3016e297132380cbd4e3d2d10)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -23,6 +23,24 @@ |
23 | 23 |
static int flags, checked; |
24 | 24 |
|
25 | 25 |
void av_force_cpu_flags(int arg){ |
26 |
+ if ( (arg & ( AV_CPU_FLAG_3DNOW | |
|
27 |
+ AV_CPU_FLAG_3DNOWEXT | |
|
28 |
+ AV_CPU_FLAG_SSE | |
|
29 |
+ AV_CPU_FLAG_SSE2 | |
|
30 |
+ AV_CPU_FLAG_SSE2SLOW | |
|
31 |
+ AV_CPU_FLAG_SSE3 | |
|
32 |
+ AV_CPU_FLAG_SSE3SLOW | |
|
33 |
+ AV_CPU_FLAG_SSSE3 | |
|
34 |
+ AV_CPU_FLAG_SSE4 | |
|
35 |
+ AV_CPU_FLAG_SSE42 | |
|
36 |
+ AV_CPU_FLAG_AVX | |
|
37 |
+ AV_CPU_FLAG_XOP | |
|
38 |
+ AV_CPU_FLAG_FMA4 )) |
|
39 |
+ && !(arg & AV_CPU_FLAG_MMX)) { |
|
40 |
+ av_log(NULL, AV_LOG_WARNING, "MMX implied by specified flags\n"); |
|
41 |
+ arg |= AV_CPU_FLAG_MMX; |
|
42 |
+ } |
|
43 |
+ |
|
26 | 44 |
flags = arg; |
27 | 45 |
checked = arg != -1; |
28 | 46 |
} |