Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
52868 views
1
/*****************************************************************************
2
* pixel.h: msa pixel metrics
3
*****************************************************************************
4
* Copyright (C) 2015-2016 x264 project
5
*
6
* Authors: Mandar Sahastrabuddhe <[email protected]>
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
21
*
22
* This program is also available under a commercial proprietary license.
23
* For more information, contact us at [email protected].
24
*****************************************************************************/
25
26
#ifndef X264_MIPS_SAD_H
27
#define X264_MIPS_SAD_H
28
29
int32_t x264_pixel_sad_16x16_msa( uint8_t *p_src, intptr_t i_src_stride,
30
uint8_t *p_ref, intptr_t i_ref_stride );
31
int32_t x264_pixel_sad_16x8_msa( uint8_t *p_src, intptr_t i_src_stride,
32
uint8_t *p_ref, intptr_t i_ref_stride );
33
int32_t x264_pixel_sad_8x16_msa( uint8_t *p_src, intptr_t i_src_stride,
34
uint8_t *p_ref, intptr_t i_ref_stride );
35
int32_t x264_pixel_sad_8x8_msa( uint8_t *p_src, intptr_t i_src_stride,
36
uint8_t *p_ref, intptr_t i_ref_stride );
37
int32_t x264_pixel_sad_8x4_msa( uint8_t *p_src, intptr_t i_src_stride,
38
uint8_t *p_ref, intptr_t i_ref_stride );
39
int32_t x264_pixel_sad_4x16_msa( uint8_t *p_src, intptr_t i_src_stride,
40
uint8_t *p_ref, intptr_t i_ref_stride );
41
int32_t x264_pixel_sad_4x8_msa( uint8_t *p_src, intptr_t i_src_stride,
42
uint8_t *p_ref, intptr_t i_ref_stride );
43
int32_t x264_pixel_sad_4x4_msa( uint8_t *p_src, intptr_t i_src_stride,
44
uint8_t *p_ref, intptr_t i_ref_stride );
45
void x264_pixel_sad_x4_16x16_msa( uint8_t *p_src, uint8_t *p_ref0,
46
uint8_t *p_ref1, uint8_t *p_ref2,
47
uint8_t *p_ref3, intptr_t i_ref_stride,
48
int32_t p_sad_array[4] );
49
void x264_pixel_sad_x4_16x8_msa( uint8_t *p_src, uint8_t *p_ref0,
50
uint8_t *p_ref1, uint8_t *p_ref2,
51
uint8_t *p_ref3, intptr_t i_ref_stride,
52
int32_t p_sad_array[4] );
53
void x264_pixel_sad_x4_8x16_msa( uint8_t *p_src, uint8_t *p_ref0,
54
uint8_t *p_ref1, uint8_t *p_ref2,
55
uint8_t *p_ref3, intptr_t i_ref_stride,
56
int32_t p_sad_array[4] );
57
void x264_pixel_sad_x4_8x8_msa( uint8_t *p_src, uint8_t *p_ref0,
58
uint8_t *p_ref1, uint8_t *p_ref2,
59
uint8_t *p_ref3, intptr_t i_ref_stride,
60
int32_t p_sad_array[4] );
61
void x264_pixel_sad_x4_8x4_msa( uint8_t *p_src, uint8_t *p_ref0,
62
uint8_t *p_ref1, uint8_t *p_ref2,
63
uint8_t *p_ref3, intptr_t i_ref_stride,
64
int32_t p_sad_array[4] );
65
void x264_pixel_sad_x4_4x8_msa( uint8_t *p_src, uint8_t *p_ref0,
66
uint8_t *p_ref1, uint8_t *p_ref2,
67
uint8_t *p_ref3, intptr_t i_ref_stride,
68
int32_t p_sad_array[4] );
69
void x264_pixel_sad_x4_4x4_msa( uint8_t *p_src, uint8_t *p_ref0,
70
uint8_t *p_ref1, uint8_t *p_ref2,
71
uint8_t *p_ref3, intptr_t i_ref_stride,
72
int32_t p_sad_array[4] );
73
void x264_pixel_sad_x3_16x16_msa( uint8_t *p_src, uint8_t *p_ref0,
74
uint8_t *p_ref1, uint8_t *p_ref2,
75
intptr_t i_ref_stride,
76
int32_t p_sad_array[3] );
77
void x264_pixel_sad_x3_16x8_msa( uint8_t *p_src, uint8_t *p_ref0,
78
uint8_t *p_ref1, uint8_t *p_ref2,
79
intptr_t i_ref_stride,
80
int32_t p_sad_array[3] );
81
void x264_pixel_sad_x3_8x16_msa( uint8_t *p_src, uint8_t *p_ref0,
82
uint8_t *p_ref1, uint8_t *p_ref2,
83
intptr_t i_ref_stride,
84
int32_t p_sad_array[3] );
85
void x264_pixel_sad_x3_8x8_msa( uint8_t *p_src, uint8_t *p_ref0,
86
uint8_t *p_ref1, uint8_t *p_ref2,
87
intptr_t i_ref_stride,
88
int32_t p_sad_array[3] );
89
void x264_pixel_sad_x3_8x4_msa( uint8_t *p_src, uint8_t *p_ref0,
90
uint8_t *p_ref1, uint8_t *p_ref2,
91
intptr_t i_ref_stride,
92
int32_t p_sad_array[3] );
93
void x264_pixel_sad_x3_4x8_msa( uint8_t *p_src, uint8_t *p_ref0,
94
uint8_t *p_ref1, uint8_t *p_ref2,
95
intptr_t i_ref_stride,
96
int32_t p_sad_array[3] );
97
void x264_pixel_sad_x3_4x4_msa( uint8_t *p_src, uint8_t *p_ref0,
98
uint8_t *p_ref1, uint8_t *p_ref2,
99
intptr_t i_ref_stride,
100
int32_t p_sad_array[3] );
101
int32_t x264_pixel_ssd_16x16_msa( uint8_t *p_src, intptr_t i_src_stride,
102
uint8_t *p_ref, intptr_t i_ref_stride );
103
int32_t x264_pixel_ssd_16x8_msa( uint8_t *p_src, intptr_t i_src_stride,
104
uint8_t *p_ref, intptr_t i_ref_stride );
105
int32_t x264_pixel_ssd_8x16_msa( uint8_t *p_src, intptr_t i_src_stride,
106
uint8_t *p_ref, intptr_t i_ref_stride );
107
int32_t x264_pixel_ssd_8x8_msa( uint8_t *p_src, intptr_t i_src_stride,
108
uint8_t *p_ref, intptr_t i_ref_stride );
109
int32_t x264_pixel_ssd_8x4_msa( uint8_t *p_src, intptr_t i_src_stride,
110
uint8_t *p_ref, intptr_t i_ref_stride );
111
int32_t x264_pixel_ssd_4x16_msa( uint8_t *p_src, intptr_t i_src_stride,
112
uint8_t *p_ref, intptr_t i_ref_stride );
113
int32_t x264_pixel_ssd_4x8_msa( uint8_t *p_src, intptr_t i_src_stride,
114
uint8_t *p_ref, intptr_t i_ref_stride );
115
int32_t x264_pixel_ssd_4x4_msa( uint8_t *p_src, intptr_t i_src_stride,
116
uint8_t *p_ref, intptr_t i_ref_stride );
117
void x264_intra_sad_x3_4x4_msa( uint8_t *p_enc, uint8_t *p_dec,
118
int32_t p_sad_array[3] );
119
void x264_intra_sad_x3_16x16_msa( uint8_t *p_enc, uint8_t *p_dec,
120
int32_t p_sad_array[3] );
121
void x264_intra_sad_x3_8x8_msa( uint8_t *p_enc, uint8_t p_edge[36],
122
int32_t p_sad_array[3] );
123
void x264_intra_sad_x3_8x8c_msa( uint8_t *p_enc, uint8_t *p_dec,
124
int32_t p_sad_array[3] );
125
void x264_ssim_4x4x2_core_msa( const uint8_t *p_pix1, intptr_t i_stride1,
126
const uint8_t *p_pix2, intptr_t i_stride2,
127
int32_t i_sums[2][4] );
128
uint64_t x264_pixel_hadamard_ac_8x8_msa( uint8_t *p_pix, intptr_t i_stride );
129
uint64_t x264_pixel_hadamard_ac_8x16_msa( uint8_t *p_pix, intptr_t i_stride );
130
uint64_t x264_pixel_hadamard_ac_16x8_msa( uint8_t *p_pix, intptr_t i_stride );
131
uint64_t x264_pixel_hadamard_ac_16x16_msa( uint8_t *p_pix, intptr_t i_stride );
132
int32_t x264_pixel_satd_4x4_msa( uint8_t *p_pix1, intptr_t i_stride,
133
uint8_t *p_pix2, intptr_t i_stride2 );
134
int32_t x264_pixel_satd_4x8_msa( uint8_t *p_pix1, intptr_t i_stride,
135
uint8_t *p_pix2, intptr_t i_stride2 );
136
int32_t x264_pixel_satd_4x16_msa( uint8_t *p_pix1, intptr_t i_stride,
137
uint8_t *p_pix2, intptr_t i_stride2 );
138
int32_t x264_pixel_satd_8x4_msa( uint8_t *p_pix1, intptr_t i_stride,
139
uint8_t *p_pix2, intptr_t i_stride2 );
140
int32_t x264_pixel_satd_8x8_msa( uint8_t *p_pix1, intptr_t i_stride,
141
uint8_t *p_pix2, intptr_t i_stride2 );
142
int32_t x264_pixel_satd_8x16_msa( uint8_t *p_pix1, intptr_t i_stride,
143
uint8_t *p_pix2, intptr_t i_stride2 );
144
int32_t x264_pixel_satd_16x8_msa( uint8_t *p_pix1, intptr_t i_stride,
145
uint8_t *p_pix2, intptr_t i_stride2 );
146
int32_t x264_pixel_satd_16x16_msa( uint8_t *p_pix1, intptr_t i_stride,
147
uint8_t *p_pix2, intptr_t i_stride2 );
148
int32_t x264_pixel_sa8d_8x8_msa( uint8_t *p_pix1, intptr_t i_stride,
149
uint8_t *p_pix2, intptr_t i_stride2 );
150
int32_t x264_pixel_sa8d_16x16_msa( uint8_t *p_pix1, intptr_t i_stride,
151
uint8_t *p_pix2, intptr_t i_stride2 );
152
void x264_intra_satd_x3_4x4_msa( uint8_t *p_enc, uint8_t *p_dec,
153
int32_t p_sad_array[3] );
154
void x264_intra_satd_x3_16x16_msa( uint8_t *p_enc, uint8_t *p_dec,
155
int32_t p_sad_array[3] );
156
void x264_intra_sa8d_x3_8x8_msa( uint8_t *p_enc, uint8_t p_edge[36],
157
int32_t p_sad_array[3] );
158
void x264_intra_satd_x3_8x8c_msa( uint8_t *p_enc, uint8_t *p_dec,
159
int32_t p_sad_array[3] );
160
uint64_t x264_pixel_var_16x16_msa( uint8_t *p_pix, intptr_t i_stride );
161
uint64_t x264_pixel_var_8x16_msa( uint8_t *p_pix, intptr_t i_stride );
162
uint64_t x264_pixel_var_8x8_msa( uint8_t *p_pix, intptr_t i_stride );
163
int32_t x264_pixel_var2_8x16_msa( uint8_t *p_pix1, intptr_t i_stride1,
164
uint8_t *p_pix2, intptr_t i_stride2,
165
int32_t *p_ssd );
166
int32_t x264_pixel_var2_8x8_msa( uint8_t *p_pix1, intptr_t i_stride1,
167
uint8_t *p_pix2, intptr_t i_stride2,
168
int32_t *p_ssd );
169
170
#endif
171
172