FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
arm
dsputil_init_armv6.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 Mans Rullgard <mans@mansr.com>
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include <stdint.h>
22
23
#include "
libavcodec/avcodec.h
"
24
#include "
libavcodec/dsputil.h
"
25
#include "
dsputil_arm.h
"
26
27
void
ff_simple_idct_armv6
(
DCTELEM
*
data
);
28
void
ff_simple_idct_put_armv6
(
uint8_t
*dest,
int
line_size,
DCTELEM
*
data
);
29
void
ff_simple_idct_add_armv6
(
uint8_t
*dest,
int
line_size,
DCTELEM
*
data
);
30
31
void
ff_put_pixels16_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
32
void
ff_put_pixels16_x2_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
33
void
ff_put_pixels16_y2_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
34
35
void
ff_put_pixels16_x2_no_rnd_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
36
void
ff_put_pixels16_y2_no_rnd_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
37
38
void
ff_avg_pixels16_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
39
40
void
ff_put_pixels8_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
41
void
ff_put_pixels8_x2_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
42
void
ff_put_pixels8_y2_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
43
44
void
ff_put_pixels8_x2_no_rnd_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
45
void
ff_put_pixels8_y2_no_rnd_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
46
47
void
ff_avg_pixels8_armv6
(
uint8_t
*,
const
uint8_t
*,
int
,
int
);
48
49
void
ff_add_pixels_clamped_armv6
(
const
DCTELEM
*
block
,
50
uint8_t
*
av_restrict
pixels,
51
int
line_size);
52
53
void
ff_get_pixels_armv6
(
DCTELEM
*
block
,
const
uint8_t
*pixels,
int
stride
);
54
void
ff_diff_pixels_armv6
(
DCTELEM
*
block
,
const
uint8_t
*
s1
,
55
const
uint8_t
*
s2
,
int
stride
);
56
57
int
ff_pix_abs16_armv6
(
void
*s,
uint8_t
*blk1,
uint8_t
*blk2,
58
int
line_size,
int
h);
59
int
ff_pix_abs16_x2_armv6
(
void
*s,
uint8_t
*blk1,
uint8_t
*blk2,
60
int
line_size,
int
h);
61
int
ff_pix_abs16_y2_armv6
(
void
*s,
uint8_t
*blk1,
uint8_t
*blk2,
62
int
line_size,
int
h);
63
64
int
ff_pix_abs8_armv6
(
void
*s,
uint8_t
*blk1,
uint8_t
*blk2,
65
int
line_size,
int
h);
66
67
int
ff_sse16_armv6
(
void
*s,
uint8_t
*blk1,
uint8_t
*blk2,
68
int
line_size,
int
h);
69
70
int
ff_pix_norm1_armv6
(
uint8_t
*pix,
int
line_size);
71
int
ff_pix_sum_armv6
(
uint8_t
*pix,
int
line_size);
72
73
av_cold
void
ff_dsputil_init_armv6
(
DSPContext
*
c
,
AVCodecContext
*avctx)
74
{
75
const
int
high_bit_depth = avctx->
bits_per_raw_sample
> 8;
76
77
if
(!avctx->
lowres
&& avctx->
bits_per_raw_sample
<= 8 &&
78
(avctx->
idct_algo
==
FF_IDCT_AUTO
||
79
avctx->
idct_algo
==
FF_IDCT_SIMPLEARMV6
)) {
80
c->
idct_put
=
ff_simple_idct_put_armv6
;
81
c->
idct_add
=
ff_simple_idct_add_armv6
;
82
c->
idct
=
ff_simple_idct_armv6
;
83
c->
idct_permutation_type
=
FF_LIBMPEG2_IDCT_PERM
;
84
}
85
86
if
(!high_bit_depth) {
87
c->
put_pixels_tab
[0][0] =
ff_put_pixels16_armv6
;
88
c->
put_pixels_tab
[0][1] =
ff_put_pixels16_x2_armv6
;
89
c->
put_pixels_tab
[0][2] =
ff_put_pixels16_y2_armv6
;
90
/* c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_armv6; */
91
c->
put_pixels_tab
[1][0] =
ff_put_pixels8_armv6
;
92
c->
put_pixels_tab
[1][1] =
ff_put_pixels8_x2_armv6
;
93
c->
put_pixels_tab
[1][2] =
ff_put_pixels8_y2_armv6
;
94
/* c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_armv6; */
95
96
c->
put_no_rnd_pixels_tab
[0][0] =
ff_put_pixels16_armv6
;
97
c->
put_no_rnd_pixels_tab
[0][1] =
ff_put_pixels16_x2_no_rnd_armv6
;
98
c->
put_no_rnd_pixels_tab
[0][2] =
ff_put_pixels16_y2_no_rnd_armv6
;
99
/* c->put_no_rnd_pixels_tab[0][3] = ff_put_pixels16_xy2_no_rnd_armv6; */
100
c->
put_no_rnd_pixels_tab
[1][0] =
ff_put_pixels8_armv6
;
101
c->
put_no_rnd_pixels_tab
[1][1] =
ff_put_pixels8_x2_no_rnd_armv6
;
102
c->
put_no_rnd_pixels_tab
[1][2] =
ff_put_pixels8_y2_no_rnd_armv6
;
103
/* c->put_no_rnd_pixels_tab[1][3] = ff_put_pixels8_xy2_no_rnd_armv6; */
104
105
c->
avg_pixels_tab
[0][0] =
ff_avg_pixels16_armv6
;
106
c->
avg_pixels_tab
[1][0] =
ff_avg_pixels8_armv6
;
107
}
108
109
if
(!high_bit_depth)
110
c->
get_pixels
=
ff_get_pixels_armv6
;
111
c->
add_pixels_clamped
=
ff_add_pixels_clamped_armv6
;
112
c->
diff_pixels
=
ff_diff_pixels_armv6
;
113
114
c->
pix_abs
[0][0] =
ff_pix_abs16_armv6
;
115
c->
pix_abs
[0][1] =
ff_pix_abs16_x2_armv6
;
116
c->
pix_abs
[0][2] =
ff_pix_abs16_y2_armv6
;
117
118
c->
pix_abs
[1][0] =
ff_pix_abs8_armv6
;
119
120
c->
sad
[0] =
ff_pix_abs16_armv6
;
121
c->
sad
[1] =
ff_pix_abs8_armv6
;
122
123
c->
sse
[0] =
ff_sse16_armv6
;
124
125
c->
pix_norm1
=
ff_pix_norm1_armv6
;
126
c->
pix_sum
=
ff_pix_sum_armv6
;
127
}
Generated on Sat May 25 2013 03:58:31 for FFmpeg by
1.8.2