Libav
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
x86
apedsp_init.c
Go to the documentation of this file.
1
/*
2
* This file is part of Libav.
3
*
4
* Libav 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
* Libav 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 Libav; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
#include "
libavutil/attributes.h
"
20
#include "
libavutil/cpu.h
"
21
#include "
libavutil/x86/cpu.h
"
22
#include "
libavcodec/apedsp.h
"
23
24
int32_t
ff_scalarproduct_and_madd_int16_mmxext
(int16_t *v1,
const
int16_t *v2,
25
const
int16_t *v3,
26
int
order,
int
mul);
27
int32_t
ff_scalarproduct_and_madd_int16_sse2
(int16_t *v1,
const
int16_t *v2,
28
const
int16_t *v3,
29
int
order,
int
mul);
30
int32_t
ff_scalarproduct_and_madd_int16_ssse3
(int16_t *v1,
const
int16_t *v2,
31
const
int16_t *v3,
32
int
order,
int
mul);
33
34
av_cold
void
ff_apedsp_init_x86
(
APEDSPContext
*c)
35
{
36
int
cpu_flags =
av_get_cpu_flags
();
37
38
if
(
EXTERNAL_MMXEXT
(cpu_flags))
39
c->
scalarproduct_and_madd_int16
=
ff_scalarproduct_and_madd_int16_mmxext
;
40
41
if
(
EXTERNAL_SSE2
(cpu_flags))
42
c->
scalarproduct_and_madd_int16
=
ff_scalarproduct_and_madd_int16_sse2
;
43
44
if
(
EXTERNAL_SSSE3
(cpu_flags) &&
45
!(cpu_flags & (
AV_CPU_FLAG_SSE42
|
AV_CPU_FLAG_3DNOW
)))
// cachesplit
46
c->
scalarproduct_and_madd_int16
=
ff_scalarproduct_and_madd_int16_ssse3
;
47
}
apedsp.h
ff_apedsp_init_x86
av_cold void ff_apedsp_init_x86(APEDSPContext *c)
Definition:
apedsp_init.c:34
ff_scalarproduct_and_madd_int16_sse2
int32_t ff_scalarproduct_and_madd_int16_sse2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
cpu.h
attributes.h
Macro definitions for various function/variable attributes.
APEDSPContext::scalarproduct_and_madd_int16
int32_t(* scalarproduct_and_madd_int16)(int16_t *v1, const int16_t *v2, const int16_t *v3, int len, int mul)
Calculate scalar product of v1 and v2, and v1[i] += v3[i] * mul.
Definition:
apedsp.h:34
av_cold
#define av_cold
Definition:
attributes.h:66
EXTERNAL_SSE2
#define EXTERNAL_SSE2(flags)
Definition:
cpu.h:50
AV_CPU_FLAG_SSE42
#define AV_CPU_FLAG_SSE42
Nehalem SSE4.2 functions.
Definition:
cpu.h:46
ff_scalarproduct_and_madd_int16_mmxext
int32_t ff_scalarproduct_and_madd_int16_mmxext(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
int32_t
int32_t
Definition:
audio_convert.c:194
AV_CPU_FLAG_3DNOW
#define AV_CPU_FLAG_3DNOW
AMD 3DNOW.
Definition:
cpu.h:34
APEDSPContext
Definition:
apedsp.h:28
cpu.h
EXTERNAL_SSSE3
#define EXTERNAL_SSSE3(flags)
Definition:
cpu.h:52
av_get_cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
Definition:
cpu.c:47
EXTERNAL_MMXEXT
#define EXTERNAL_MMXEXT(flags)
Definition:
cpu.h:48
ff_scalarproduct_and_madd_int16_ssse3
int32_t ff_scalarproduct_and_madd_int16_ssse3(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
Generated on Mon Jul 27 2015 11:09:03 for Libav by
1.8.9.1