FFmpeg
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cpudetect.h
Go to the documentation of this file.
1 /*
2  * This file is part of MPlayer.
3  *
4  * MPlayer is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * MPlayer 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
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with MPlayer; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #ifndef MPLAYER_CPUDETECT_H
20 #define MPLAYER_CPUDETECT_H
21 
22 #define CPUTYPE_I386 3
23 #define CPUTYPE_I486 4
24 #define CPUTYPE_I586 5
25 #define CPUTYPE_I686 6
26 
27 #include "libavutil/x86_cpu.h"
28 
29 typedef struct cpucaps_s {
30  int cpuType;
31  int cpuModel;
33  int hasMMX;
34  int hasMMX2;
35  int has3DNow;
37  int hasSSE;
38  int hasSSE2;
39  int hasSSE3;
40  int hasSSSE3;
41  int hasSSE4;
42  int hasSSE42;
43  int hasSSE4a;
44  int hasAVX;
45  int isX86;
46  unsigned cl_size; /* size of cache line */
48  int hasTSC;
49 } CpuCaps;
50 
51 extern CpuCaps ff_gCpuCaps;
52 
53 void ff_do_cpuid(unsigned int ax, unsigned int *p);
54 
55 void ff_GetCpuCaps(CpuCaps *caps);
56 
57 /* returned value is malloc()'ed so free() it after use */
58 char *ff_GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]);
59 
60 #endif /* MPLAYER_CPUDETECT_H */