ffmpeg / libavutil / cpu.c @ ec5f5719
History | View | Annotate | Download (2.24 KB)
1 |
/*
|
---|---|
2 |
* This file is part of FFmpeg.
|
3 |
*
|
4 |
* FFmpeg is free software; you can redistribute it and/or
|
5 |
* modify it under the terms of the GNU Lesser General Public
|
6 |
* License as published by the Free Software Foundation; either
|
7 |
* version 2.1 of the License, or (at your option) any later version.
|
8 |
*
|
9 |
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
* Lesser General Public License for more details.
|
13 |
*
|
14 |
* You should have received a copy of the GNU Lesser General Public
|
15 |
* License along with FFmpeg; if not, write to the Free Software
|
16 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
*/
|
18 |
|
19 |
#include "cpu.h" |
20 |
#include "config.h" |
21 |
|
22 |
int av_get_cpu_flags(void) |
23 |
{ |
24 |
static int flags, checked; |
25 |
|
26 |
if (checked)
|
27 |
return flags;
|
28 |
|
29 |
if (ARCH_ARM) flags = ff_get_cpu_flags_arm();
|
30 |
if (ARCH_PPC) flags = ff_get_cpu_flags_ppc();
|
31 |
if (ARCH_X86) flags = ff_get_cpu_flags_x86();
|
32 |
|
33 |
checked = 1;
|
34 |
return flags;
|
35 |
} |
36 |
|
37 |
#ifdef TEST
|
38 |
|
39 |
#undef printf
|
40 |
#include <stdio.h> |
41 |
|
42 |
int main(void) |
43 |
{ |
44 |
int cpu_flags = av_get_cpu_flags();
|
45 |
|
46 |
printf("cpu_flags = 0x%08X\n", cpu_flags);
|
47 |
printf("cpu_flags = %s%s%s%s%s%s%s%s%s%s%s%s\n",
|
48 |
#if ARCH_ARM
|
49 |
cpu_flags & AV_CPU_FLAG_IWMMXT ? "IWMMXT " : "", |
50 |
#elif ARCH_PPC
|
51 |
cpu_flags & AV_CPU_FLAG_ALTIVEC ? "ALTIVEC " : "", |
52 |
#elif ARCH_X86
|
53 |
cpu_flags & AV_CPU_FLAG_MMX ? "MMX " : "", |
54 |
cpu_flags & AV_CPU_FLAG_MMX2 ? "MMX2 " : "", |
55 |
cpu_flags & AV_CPU_FLAG_SSE ? "SSE " : "", |
56 |
cpu_flags & AV_CPU_FLAG_SSE2 ? "SSE2 " : "", |
57 |
cpu_flags & AV_CPU_FLAG_SSE2SLOW ? "SSE2(slow) " : "", |
58 |
cpu_flags & AV_CPU_FLAG_SSE3 ? "SSE3 " : "", |
59 |
cpu_flags & AV_CPU_FLAG_SSE3SLOW ? "SSE3(slow) " : "", |
60 |
cpu_flags & AV_CPU_FLAG_SSSE3 ? "SSSE3 " : "", |
61 |
cpu_flags & AV_CPU_FLAG_SSE4 ? "SSE4.1 " : "", |
62 |
cpu_flags & AV_CPU_FLAG_SSE42 ? "SSE4.2 " : "", |
63 |
cpu_flags & AV_CPU_FLAG_3DNOW ? "3DNow " : "", |
64 |
cpu_flags & AV_CPU_FLAG_3DNOWEXT ? "3DNowExt " : ""); |
65 |
#endif
|
66 |
return 0; |
67 |
} |
68 |
|
69 |
#endif
|