Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
eadac34c
Commit
eadac34c
authored
Apr 26, 2012
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmdutils/avutil: Move cpu caps parse code into av_parse_cpu_caps()
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
e738811c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
39 deletions
+53
-39
cmdutils.c
cmdutils.c
+2
-38
avutil.h
libavutil/avutil.h
+1
-1
cpu.c
libavutil/cpu.c
+43
-0
cpu.h
libavutil/cpu.h
+7
-0
No files found.
cmdutils.c
View file @
eadac34c
...
@@ -547,46 +547,10 @@ int opt_max_alloc(const char *opt, const char *arg)
...
@@ -547,46 +547,10 @@ int opt_max_alloc(const char *opt, const char *arg)
int
opt_cpuflags
(
const
char
*
opt
,
const
char
*
arg
)
int
opt_cpuflags
(
const
char
*
opt
,
const
char
*
arg
)
{
{
static
const
AVOption
cpuflags_opts
[]
=
{
{
"flags"
,
NULL
,
0
,
AV_OPT_TYPE_FLAGS
,
{
0
},
INT64_MIN
,
INT64_MAX
,
.
unit
=
"flags"
},
{
"altivec"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ALTIVEC
},
.
unit
=
"flags"
},
{
"mmx"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_MMX
},
.
unit
=
"flags"
},
{
"mmx2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_MMX2
},
.
unit
=
"flags"
},
{
"sse"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE
},
.
unit
=
"flags"
},
{
"sse2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE2
},
.
unit
=
"flags"
},
{
"sse2slow"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE2SLOW
},
.
unit
=
"flags"
},
{
"sse3"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE3
},
.
unit
=
"flags"
},
{
"sse3slow"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE3SLOW
},
.
unit
=
"flags"
},
{
"ssse3"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSSE3
},
.
unit
=
"flags"
},
{
"atom"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ATOM
},
.
unit
=
"flags"
},
{
"sse4.1"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE4
},
.
unit
=
"flags"
},
{
"sse4.2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE42
},
.
unit
=
"flags"
},
{
"avx"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_AVX
},
.
unit
=
"flags"
},
{
"xop"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_XOP
},
.
unit
=
"flags"
},
{
"fma4"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_FMA4
},
.
unit
=
"flags"
},
{
"3dnow"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_3DNOW
},
.
unit
=
"flags"
},
{
"3dnowext"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_3DNOWEXT
},
.
unit
=
"flags"
},
{
"armv5te"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ARMV5TE
},
.
unit
=
"flags"
},
{
"armv6"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ARMV6
},
.
unit
=
"flags"
},
{
"armv6t2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ARMV6T2
},
.
unit
=
"flags"
},
{
"vfp"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_VFP
},
.
unit
=
"flags"
},
{
"vfpv3"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_VFPV3
},
.
unit
=
"flags"
},
{
"neon"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_NEON
},
.
unit
=
"flags"
},
{
NULL
},
};
static
const
AVClass
class
=
{
.
class_name
=
"cpuflags"
,
.
item_name
=
av_default_item_name
,
.
option
=
cpuflags_opts
,
.
version
=
LIBAVUTIL_VERSION_INT
,
};
int
flags
=
av_get_cpu_flags
();
int
ret
;
int
ret
;
const
AVClass
*
pclass
=
&
class
;
unsigned
flags
=
av_get_cpu_flags
()
;
if
((
ret
=
av_
opt_eval_flags
(
&
pclass
,
&
cpuflags_opts
[
0
],
arg
,
&
flags
))
<
0
)
if
((
ret
=
av_
parse_cpu_caps
(
&
flags
,
arg
))
<
0
)
return
ret
;
return
ret
;
av_force_cpu_flags
(
flags
);
av_force_cpu_flags
(
flags
);
...
...
libavutil/avutil.h
View file @
eadac34c
...
@@ -153,7 +153,7 @@
...
@@ -153,7 +153,7 @@
*/
*/
#define LIBAVUTIL_VERSION_MAJOR 51
#define LIBAVUTIL_VERSION_MAJOR 51
#define LIBAVUTIL_VERSION_MINOR 4
8
#define LIBAVUTIL_VERSION_MINOR 4
9
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
...
...
libavutil/cpu.c
View file @
eadac34c
...
@@ -110,6 +110,49 @@ int av_parse_cpu_flags(const char *s)
...
@@ -110,6 +110,49 @@ int av_parse_cpu_flags(const char *s)
return
flags
&
INT_MAX
;
return
flags
&
INT_MAX
;
}
}
int
av_parse_cpu_caps
(
unsigned
*
flags
,
const
char
*
s
)
{
static
const
AVOption
cpuflags_opts
[]
=
{
{
"flags"
,
NULL
,
0
,
AV_OPT_TYPE_FLAGS
,
{
0
},
INT64_MIN
,
INT64_MAX
,
.
unit
=
"flags"
},
#if ARCH_PPC
{
"altivec"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ALTIVEC
},
.
unit
=
"flags"
},
#elif ARCH_X86
{
"mmx"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_MMX
},
.
unit
=
"flags"
},
{
"mmx2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_MMX2
},
.
unit
=
"flags"
},
{
"sse"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE
},
.
unit
=
"flags"
},
{
"sse2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE2
},
.
unit
=
"flags"
},
{
"sse2slow"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE2SLOW
},
.
unit
=
"flags"
},
{
"sse3"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE3
},
.
unit
=
"flags"
},
{
"sse3slow"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE3SLOW
},
.
unit
=
"flags"
},
{
"ssse3"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSSE3
},
.
unit
=
"flags"
},
{
"atom"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ATOM
},
.
unit
=
"flags"
},
{
"sse4.1"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE4
},
.
unit
=
"flags"
},
{
"sse4.2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_SSE42
},
.
unit
=
"flags"
},
{
"avx"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_AVX
},
.
unit
=
"flags"
},
{
"xop"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_XOP
},
.
unit
=
"flags"
},
{
"fma4"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_FMA4
},
.
unit
=
"flags"
},
{
"3dnow"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_3DNOW
},
.
unit
=
"flags"
},
{
"3dnowext"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_3DNOWEXT
},
.
unit
=
"flags"
},
#elif ARCH_ARM
{
"armv5te"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ARMV5TE
},
.
unit
=
"flags"
},
{
"armv6"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ARMV6
},
.
unit
=
"flags"
},
{
"armv6t2"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_ARMV6T2
},
.
unit
=
"flags"
},
{
"vfp"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_VFP
},
.
unit
=
"flags"
},
{
"vfpv3"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_VFPV3
},
.
unit
=
"flags"
},
{
"neon"
,
NULL
,
0
,
AV_OPT_TYPE_CONST
,
{
AV_CPU_FLAG_NEON
},
.
unit
=
"flags"
},
#endif
{
NULL
},
};
static
const
AVClass
class
=
{
.
class_name
=
"cpuflags"
,
.
item_name
=
av_default_item_name
,
.
option
=
cpuflags_opts
,
.
version
=
LIBAVUTIL_VERSION_INT
,
};
const
AVClass
*
pclass
=
&
class
;
return
av_opt_eval_flags
(
&
pclass
,
&
cpuflags_opts
[
0
],
s
,
flags
);
}
#ifdef TEST
#ifdef TEST
#undef printf
#undef printf
...
...
libavutil/cpu.h
View file @
eadac34c
...
@@ -79,6 +79,13 @@ attribute_deprecated void av_set_cpu_flags_mask(int mask);
...
@@ -79,6 +79,13 @@ attribute_deprecated void av_set_cpu_flags_mask(int mask);
*/
*/
int
av_parse_cpu_flags
(
const
char
*
s
);
int
av_parse_cpu_flags
(
const
char
*
s
);
/**
* Parse CPU caps from a string and update the given AV_CPU_* flags based on that.
*
* @return negative on error.
*/
int
av_parse_cpu_caps
(
unsigned
*
flags
,
const
char
*
s
);
/* The following CPU-specific functions shall not be called directly. */
/* The following CPU-specific functions shall not be called directly. */
int
ff_get_cpu_flags_arm
(
void
);
int
ff_get_cpu_flags_arm
(
void
);
int
ff_get_cpu_flags_ppc
(
void
);
int
ff_get_cpu_flags_ppc
(
void
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment