Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
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)
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
;
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
;
av_force_cpu_flags
(
flags
);
...
...
libavutil/avutil.h
View file @
eadac34c
...
...
@@ -153,7 +153,7 @@
*/
#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_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)
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
#undef printf
...
...
libavutil/cpu.h
View file @
eadac34c
...
...
@@ -79,6 +79,13 @@ attribute_deprecated void av_set_cpu_flags_mask(int mask);
*/
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. */
int
ff_get_cpu_flags_arm
(
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