FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
x86
lossless_audiodsp_init.c
Go to the documentation of this file.
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 "
libavutil/attributes.h
"
20
#include "
libavutil/cpu.h
"
21
#include "
libavutil/x86/cpu.h
"
22
#include "
libavcodec/lossless_audiodsp.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_llauddsp_init_x86
(
LLAudDSPContext
*
c
)
35
{
36
#if HAVE_YASM
37
int
cpu_flags =
av_get_cpu_flags
();
38
39
if
(
EXTERNAL_MMXEXT
(cpu_flags))
40
c->
scalarproduct_and_madd_int16
=
ff_scalarproduct_and_madd_int16_mmxext
;
41
42
if
(
EXTERNAL_SSE2
(cpu_flags))
43
c->
scalarproduct_and_madd_int16
=
ff_scalarproduct_and_madd_int16_sse2
;
44
45
if
(
EXTERNAL_SSSE3
(cpu_flags) &&
46
!(cpu_flags & (
AV_CPU_FLAG_SSE42
|
AV_CPU_FLAG_3DNOW
)))
// cachesplit
47
c->
scalarproduct_and_madd_int16
=
ff_scalarproduct_and_madd_int16_ssse3
;
48
#endif
49
}
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.
av_cold
#define av_cold
Definition:
attributes.h:74
EXTERNAL_SSE2
#define EXTERNAL_SSE2(flags)
Definition:
cpu.h:56
AV_CPU_FLAG_SSE42
#define AV_CPU_FLAG_SSE42
Nehalem SSE4.2 functions.
Definition:
cpu.h:44
LLAudDSPContext
Definition:
lossless_audiodsp.h:28
lossless_audiodsp.h
int32_t
int32_t
Definition:
audio_convert.c:194
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)
AV_CPU_FLAG_3DNOW
#define AV_CPU_FLAG_3DNOW
AMD 3DNOW.
Definition:
cpu.h:32
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)
cpu.h
EXTERNAL_SSSE3
#define EXTERNAL_SSSE3(flags)
Definition:
cpu.h:62
LLAudDSPContext::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:
lossless_audiodsp.h:35
av_get_cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
Definition:
cpu.c:76
ff_llauddsp_init_x86
av_cold void ff_llauddsp_init_x86(LLAudDSPContext *c)
Definition:
lossless_audiodsp_init.c:34
EXTERNAL_MMXEXT
#define EXTERNAL_MMXEXT(flags)
Definition:
cpu.h:54
c
static double c[64]
Definition:
vsrc_mptestsrc.c:87
Generated on Wed Jun 10 2015 01:56:52 for FFmpeg by
1.8.6