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
arm
dsputil_init_neon.c
Go to the documentation of this file.
1
/*
2
* ARM NEON optimised DSP functions
3
* Copyright (c) 2008 Mans Rullgard <mans@mansr.com>
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#include <stdint.h>
23
24
#include "
libavutil/attributes.h
"
25
#include "
libavcodec/avcodec.h
"
26
#include "
dsputil_arm.h
"
27
28
void
ff_simple_idct_neon
(int16_t *
data
);
29
void
ff_simple_idct_put_neon
(
uint8_t
*dest,
int
line_size, int16_t *
data
);
30
void
ff_simple_idct_add_neon
(
uint8_t
*dest,
int
line_size, int16_t *
data
);
31
32
void
ff_clear_block_neon
(int16_t *
block
);
33
void
ff_clear_blocks_neon
(int16_t *blocks);
34
35
void
ff_add_pixels_clamped_neon
(
const
int16_t *,
uint8_t
*,
int
);
36
void
ff_put_pixels_clamped_neon
(
const
int16_t *,
uint8_t
*,
int
);
37
void
ff_put_signed_pixels_clamped_neon
(
const
int16_t *,
uint8_t
*,
int
);
38
39
void
ff_vector_clipf_neon
(
float
*dst,
const
float
*
src
,
float
min
,
float
max,
40
int
len
);
41
void
ff_vector_clip_int32_neon
(
int32_t
*dst,
const
int32_t
*
src
,
int32_t
min
,
42
int32_t
max,
unsigned
int
len
);
43
44
int32_t
ff_scalarproduct_int16_neon
(
const
int16_t *v1,
const
int16_t *v2,
int
len
);
45
int32_t
ff_scalarproduct_and_madd_int16_neon
(int16_t *v1,
const
int16_t *v2,
46
const
int16_t *v3,
int
len
,
int
mul);
47
48
void
ff_apply_window_int16_neon
(int16_t *dst,
const
int16_t *
src
,
49
const
int16_t *window,
unsigned
n
);
50
51
av_cold
void
ff_dsputil_init_neon
(
DSPContext
*
c
,
AVCodecContext
*
avctx
)
52
{
53
const
int
high_bit_depth = avctx->
bits_per_raw_sample
> 8;
54
55
if
(!avctx->
lowres
&& avctx->
bits_per_raw_sample
<= 8) {
56
if
(avctx->
idct_algo
==
FF_IDCT_AUTO
||
57
avctx->
idct_algo
==
FF_IDCT_SIMPLENEON
) {
58
c->
idct_put
=
ff_simple_idct_put_neon
;
59
c->
idct_add
=
ff_simple_idct_add_neon
;
60
c->
idct
=
ff_simple_idct_neon
;
61
c->
idct_permutation_type
=
FF_PARTTRANS_IDCT_PERM
;
62
}
63
}
64
65
if
(!high_bit_depth) {
66
c->
clear_block
=
ff_clear_block_neon
;
67
c->
clear_blocks
=
ff_clear_blocks_neon
;
68
}
69
70
c->
add_pixels_clamped
=
ff_add_pixels_clamped_neon
;
71
c->
put_pixels_clamped
=
ff_put_pixels_clamped_neon
;
72
c->
put_signed_pixels_clamped
=
ff_put_signed_pixels_clamped_neon
;
73
74
c->
vector_clipf
=
ff_vector_clipf_neon
;
75
c->
vector_clip_int32
=
ff_vector_clip_int32_neon
;
76
77
c->
scalarproduct_int16
=
ff_scalarproduct_int16_neon
;
78
c->
scalarproduct_and_madd_int16
=
ff_scalarproduct_and_madd_int16_neon
;
79
80
c->
apply_window_int16
=
ff_apply_window_int16_neon
;
81
}
Generated on Wed Jul 10 2013 23:47:55 for FFmpeg by
1.8.2