]> git.sesse.net Git - ffmpeg/blob - libavcodec/mips/h264dsp_mips.h
avcodec/hevc_ps: Remove gotos from ff_hevc_parse_sps()
[ffmpeg] / libavcodec / mips / h264dsp_mips.h
1 /*
2  * Copyright (c) 2015 Parag Salasakar (Parag.Salasakar@imgtec.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 #ifndef H264_DSP_MIPS_H
22 #define H264_DSP_MIPS_H
23
24 #include "libavcodec/h264.h"
25
26 void ff_h264_h_lpf_luma_inter_msa(uint8_t *src, int stride,
27                                   int alpha, int beta, int8_t *tc0);
28 void ff_h264_v_lpf_luma_inter_msa(uint8_t *src, int stride,
29                                   int alpha, int beta, int8_t *tc0);
30 void ff_h264_h_lpf_chroma_inter_msa(uint8_t *src, int stride,
31                                     int alpha, int beta, int8_t *tc0);
32 void ff_h264_v_lpf_chroma_inter_msa(uint8_t *src, int stride,
33                                     int alpha, int beta, int8_t *tc0);
34 void ff_h264_h_loop_filter_chroma422_msa(uint8_t *src, int32_t stride,
35                                          int32_t alpha, int32_t beta,
36                                          int8_t *tc0);
37 void ff_h264_h_loop_filter_chroma422_mbaff_msa(uint8_t *src, int32_t stride,
38                                                int32_t alpha, int32_t beta,
39                                                int8_t *tc0);
40 void ff_h264_h_loop_filter_luma_mbaff_msa(uint8_t *src, int32_t stride,
41                                           int32_t alpha, int32_t beta,
42                                           int8_t *tc0);
43
44 void ff_h264_idct_add_msa(uint8_t *dst, int16_t *src, int32_t dst_stride);
45 void ff_h264_idct4x4_addblk_dc_msa(uint8_t *dst, int16_t *src,
46                                    int32_t dst_stride);
47 void ff_h264_deq_idct_luma_dc_msa(int16_t *dst, int16_t *src,
48                                   int32_t de_q_val);
49 void ff_h264_idct_add16_msa(uint8_t *dst, const int32_t *blk_offset,
50                             int16_t *block, int32_t stride,
51                             const uint8_t nnzc[15 * 8]);
52 void ff_h264_idct_add16_intra_msa(uint8_t *dst, const int32_t *blk_offset,
53                                   int16_t *block, int32_t dst_stride,
54                                   const uint8_t nnzc[15 * 8]);
55 void ff_h264_idct_add8_msa(uint8_t **dst, const int32_t *blk_offset,
56                            int16_t *block, int32_t dst_stride,
57                            const uint8_t nnzc[15 * 8]);
58 void ff_h264_idct_add8_422_msa(uint8_t **dst, const int32_t *blk_offset,
59                                int16_t *block, int32_t dst_stride,
60                                const uint8_t nnzc[15 * 8]);
61 void ff_h264_idct8_addblk_msa(uint8_t *dst, int16_t *src, int32_t dst_stride);
62 void ff_h264_idct8_dc_addblk_msa(uint8_t *dst, int16_t *src,
63                                  int32_t dst_stride);
64 void ff_h264_idct8_add4_msa(uint8_t *dst, const int *blk_offset,
65                             int16_t *blk, int dst_stride,
66                             const uint8_t nnzc[15 * 8]);
67
68 void ff_h264_h_lpf_luma_intra_msa(uint8_t *src, int stride,
69                                   int alpha, int beta);
70 void ff_h264_v_lpf_luma_intra_msa(uint8_t *src, int stride,
71                                   int alpha, int beta);
72 void ff_h264_h_lpf_chroma_intra_msa(uint8_t *src, int stride,
73                                     int alpha, int beta);
74 void ff_h264_v_lpf_chroma_intra_msa(uint8_t *src, int stride,
75                                     int alpha, int beta);
76 void ff_h264_h_loop_filter_luma_mbaff_intra_msa(uint8_t *src, int stride,
77                                                 int alpha, int beta);
78
79 void ff_biweight_h264_pixels16_8_msa(uint8_t *dst, uint8_t *src,
80                                      int stride, int height, int log2_denom,
81                                      int weightd, int weights, int offset);
82 void ff_biweight_h264_pixels8_8_msa(uint8_t *dst, uint8_t *src,
83                                     int stride, int height, int log2_denom,
84                                     int weightd, int weights, int offset);
85 void ff_biweight_h264_pixels4_8_msa(uint8_t *dst, uint8_t *src,
86                                     int stride, int height, int log2_denom,
87                                     int weightd, int weights, int offset);
88 void ff_weight_h264_pixels16_8_msa(uint8_t *src, int stride, int height,
89                                    int log2_denom, int weight, int offset);
90 void ff_weight_h264_pixels8_8_msa(uint8_t *src, int stride, int height,
91                                   int log2_denom, int weight, int offset);
92 void ff_weight_h264_pixels4_8_msa(uint8_t *src, int stride, int height,
93                                   int log2_denom, int weight, int offset);
94
95 void ff_put_h264_qpel16_mc00_msa(uint8_t *dst, const uint8_t *src,
96                                  ptrdiff_t dst_stride);
97 void ff_put_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src,
98                                  ptrdiff_t dst_stride);
99 void ff_put_h264_qpel16_mc20_msa(uint8_t *dst, const uint8_t *src,
100                                  ptrdiff_t dst_stride);
101 void ff_put_h264_qpel16_mc30_msa(uint8_t *dst, const uint8_t *src,
102                                  ptrdiff_t dst_stride);
103 void ff_put_h264_qpel16_mc01_msa(uint8_t *dst, const uint8_t *src,
104                                  ptrdiff_t dst_stride);
105 void ff_put_h264_qpel16_mc11_msa(uint8_t *dst, const uint8_t *src,
106                                  ptrdiff_t dst_stride);
107 void ff_put_h264_qpel16_mc21_msa(uint8_t *dst, const uint8_t *src,
108                                  ptrdiff_t dst_stride);
109 void ff_put_h264_qpel16_mc31_msa(uint8_t *dst, const uint8_t *src,
110                                  ptrdiff_t dst_stride);
111 void ff_put_h264_qpel16_mc02_msa(uint8_t *dst, const uint8_t *src,
112                                  ptrdiff_t dst_stride);
113 void ff_put_h264_qpel16_mc12_msa(uint8_t *dst, const uint8_t *src,
114                                  ptrdiff_t dst_stride);
115 void ff_put_h264_qpel16_mc22_msa(uint8_t *dst, const uint8_t *src,
116                                  ptrdiff_t dst_stride);
117 void ff_put_h264_qpel16_mc32_msa(uint8_t *dst, const uint8_t *src,
118                                  ptrdiff_t dst_stride);
119 void ff_put_h264_qpel16_mc03_msa(uint8_t *dst, const uint8_t *src,
120                                  ptrdiff_t dst_stride);
121 void ff_put_h264_qpel16_mc13_msa(uint8_t *dst, const uint8_t *src,
122                                  ptrdiff_t dst_stride);
123 void ff_put_h264_qpel16_mc23_msa(uint8_t *dst, const uint8_t *src,
124                                  ptrdiff_t dst_stride);
125 void ff_put_h264_qpel16_mc33_msa(uint8_t *dst, const uint8_t *src,
126                                  ptrdiff_t dst_stride);
127
128 void ff_put_h264_qpel8_mc00_msa(uint8_t *dst, const uint8_t *src,
129                                 ptrdiff_t dst_stride);
130 void ff_put_h264_qpel8_mc10_msa(uint8_t *dst, const uint8_t *src,
131                                 ptrdiff_t dst_stride);
132 void ff_put_h264_qpel8_mc20_msa(uint8_t *dst, const uint8_t *src,
133                                 ptrdiff_t dst_stride);
134 void ff_put_h264_qpel8_mc30_msa(uint8_t *dst, const uint8_t *src,
135                                 ptrdiff_t dst_stride);
136 void ff_put_h264_qpel8_mc01_msa(uint8_t *dst, const uint8_t *src,
137                                 ptrdiff_t dst_stride);
138 void ff_put_h264_qpel8_mc11_msa(uint8_t *dst, const uint8_t *src,
139                                 ptrdiff_t dst_stride);
140 void ff_put_h264_qpel8_mc21_msa(uint8_t *dst, const uint8_t *src,
141                                 ptrdiff_t dst_stride);
142 void ff_put_h264_qpel8_mc31_msa(uint8_t *dst, const uint8_t *src,
143                                 ptrdiff_t dst_stride);
144 void ff_put_h264_qpel8_mc02_msa(uint8_t *dst, const uint8_t *src,
145                                 ptrdiff_t dst_stride);
146 void ff_put_h264_qpel8_mc12_msa(uint8_t *dst, const uint8_t *src,
147                                 ptrdiff_t dst_stride);
148 void ff_put_h264_qpel8_mc22_msa(uint8_t *dst, const uint8_t *src,
149                                 ptrdiff_t dst_stride);
150 void ff_put_h264_qpel8_mc32_msa(uint8_t *dst, const uint8_t *src,
151                                 ptrdiff_t dst_stride);
152 void ff_put_h264_qpel8_mc03_msa(uint8_t *dst, const uint8_t *src,
153                                 ptrdiff_t dst_stride);
154 void ff_put_h264_qpel8_mc13_msa(uint8_t *dst, const uint8_t *src,
155                                 ptrdiff_t dst_stride);
156 void ff_put_h264_qpel8_mc23_msa(uint8_t *dst, const uint8_t *src,
157                                 ptrdiff_t dst_stride);
158 void ff_put_h264_qpel8_mc33_msa(uint8_t *dst, const uint8_t *src,
159                                 ptrdiff_t dst_stride);
160
161 void ff_put_h264_qpel4_mc00_msa(uint8_t *dst, const uint8_t *src,
162                                 ptrdiff_t dst_stride);
163 void ff_put_h264_qpel4_mc10_msa(uint8_t *dst, const uint8_t *src,
164                                 ptrdiff_t dst_stride);
165 void ff_put_h264_qpel4_mc20_msa(uint8_t *dst, const uint8_t *src,
166                                 ptrdiff_t dst_stride);
167 void ff_put_h264_qpel4_mc30_msa(uint8_t *dst, const uint8_t *src,
168                                 ptrdiff_t dst_stride);
169 void ff_put_h264_qpel4_mc01_msa(uint8_t *dst, const uint8_t *src,
170                                 ptrdiff_t dst_stride);
171 void ff_put_h264_qpel4_mc11_msa(uint8_t *dst, const uint8_t *src,
172                                 ptrdiff_t dst_stride);
173 void ff_put_h264_qpel4_mc21_msa(uint8_t *dst, const uint8_t *src,
174                                 ptrdiff_t dst_stride);
175 void ff_put_h264_qpel4_mc31_msa(uint8_t *dst, const uint8_t *src,
176                                 ptrdiff_t dst_stride);
177 void ff_put_h264_qpel4_mc02_msa(uint8_t *dst, const uint8_t *src,
178                                 ptrdiff_t dst_stride);
179 void ff_put_h264_qpel4_mc12_msa(uint8_t *dst, const uint8_t *src,
180                                 ptrdiff_t dst_stride);
181 void ff_put_h264_qpel4_mc22_msa(uint8_t *dst, const uint8_t *src,
182                                 ptrdiff_t dst_stride);
183 void ff_put_h264_qpel4_mc32_msa(uint8_t *dst, const uint8_t *src,
184                                 ptrdiff_t dst_stride);
185 void ff_put_h264_qpel4_mc03_msa(uint8_t *dst, const uint8_t *src,
186                                 ptrdiff_t dst_stride);
187 void ff_put_h264_qpel4_mc13_msa(uint8_t *dst, const uint8_t *src,
188                                 ptrdiff_t dst_stride);
189 void ff_put_h264_qpel4_mc23_msa(uint8_t *dst, const uint8_t *src,
190                                 ptrdiff_t dst_stride);
191 void ff_put_h264_qpel4_mc33_msa(uint8_t *dst, const uint8_t *src,
192                                 ptrdiff_t dst_stride);
193
194 void ff_avg_h264_qpel16_mc00_msa(uint8_t *dst, const uint8_t *src,
195                                  ptrdiff_t dst_stride);
196 void ff_avg_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src,
197                                  ptrdiff_t dst_stride);
198 void ff_avg_h264_qpel16_mc20_msa(uint8_t *dst, const uint8_t *src,
199                                  ptrdiff_t dst_stride);
200 void ff_avg_h264_qpel16_mc30_msa(uint8_t *dst, const uint8_t *src,
201                                  ptrdiff_t dst_stride);
202 void ff_avg_h264_qpel16_mc01_msa(uint8_t *dst, const uint8_t *src,
203                                  ptrdiff_t dst_stride);
204 void ff_avg_h264_qpel16_mc11_msa(uint8_t *dst, const uint8_t *src,
205                                  ptrdiff_t dst_stride);
206 void ff_avg_h264_qpel16_mc21_msa(uint8_t *dst, const uint8_t *src,
207                                  ptrdiff_t dst_stride);
208 void ff_avg_h264_qpel16_mc31_msa(uint8_t *dst, const uint8_t *src,
209                                  ptrdiff_t dst_stride);
210 void ff_avg_h264_qpel16_mc02_msa(uint8_t *dst, const uint8_t *src,
211                                  ptrdiff_t dst_stride);
212 void ff_avg_h264_qpel16_mc12_msa(uint8_t *dst, const uint8_t *src,
213                                  ptrdiff_t dst_stride);
214 void ff_avg_h264_qpel16_mc22_msa(uint8_t *dst, const uint8_t *src,
215                                  ptrdiff_t dst_stride);
216 void ff_avg_h264_qpel16_mc32_msa(uint8_t *dst, const uint8_t *src,
217                                  ptrdiff_t dst_stride);
218 void ff_avg_h264_qpel16_mc03_msa(uint8_t *dst, const uint8_t *src,
219                                  ptrdiff_t dst_stride);
220 void ff_avg_h264_qpel16_mc13_msa(uint8_t *dst, const uint8_t *src,
221                                  ptrdiff_t dst_stride);
222 void ff_avg_h264_qpel16_mc23_msa(uint8_t *dst, const uint8_t *src,
223                                  ptrdiff_t dst_stride);
224 void ff_avg_h264_qpel16_mc33_msa(uint8_t *dst, const uint8_t *src,
225                                  ptrdiff_t dst_stride);
226
227 void ff_avg_h264_qpel8_mc00_msa(uint8_t *dst, const uint8_t *src,
228                                 ptrdiff_t dst_stride);
229 void ff_avg_h264_qpel8_mc10_msa(uint8_t *dst, const uint8_t *src,
230                                 ptrdiff_t dst_stride);
231 void ff_avg_h264_qpel8_mc20_msa(uint8_t *dst, const uint8_t *src,
232                                 ptrdiff_t dst_stride);
233 void ff_avg_h264_qpel8_mc30_msa(uint8_t *dst, const uint8_t *src,
234                                 ptrdiff_t dst_stride);
235 void ff_avg_h264_qpel8_mc01_msa(uint8_t *dst, const uint8_t *src,
236                                 ptrdiff_t dst_stride);
237 void ff_avg_h264_qpel8_mc11_msa(uint8_t *dst, const uint8_t *src,
238                                 ptrdiff_t dst_stride);
239 void ff_avg_h264_qpel8_mc21_msa(uint8_t *dst, const uint8_t *src,
240                                 ptrdiff_t dst_stride);
241 void ff_avg_h264_qpel8_mc31_msa(uint8_t *dst, const uint8_t *src,
242                                 ptrdiff_t dst_stride);
243 void ff_avg_h264_qpel8_mc02_msa(uint8_t *dst, const uint8_t *src,
244                                 ptrdiff_t dst_stride);
245 void ff_avg_h264_qpel8_mc12_msa(uint8_t *dst, const uint8_t *src,
246                                 ptrdiff_t dst_stride);
247 void ff_avg_h264_qpel8_mc22_msa(uint8_t *dst, const uint8_t *src,
248                                 ptrdiff_t dst_stride);
249 void ff_avg_h264_qpel8_mc32_msa(uint8_t *dst, const uint8_t *src,
250                                 ptrdiff_t dst_stride);
251 void ff_avg_h264_qpel8_mc03_msa(uint8_t *dst, const uint8_t *src,
252                                 ptrdiff_t dst_stride);
253 void ff_avg_h264_qpel8_mc13_msa(uint8_t *dst, const uint8_t *src,
254                                 ptrdiff_t dst_stride);
255 void ff_avg_h264_qpel8_mc23_msa(uint8_t *dst, const uint8_t *src,
256                                 ptrdiff_t dst_stride);
257 void ff_avg_h264_qpel8_mc33_msa(uint8_t *dst, const uint8_t *src,
258                                 ptrdiff_t dst_stride);
259
260 void ff_avg_h264_qpel4_mc00_msa(uint8_t *dst, const uint8_t *src,
261                                 ptrdiff_t dst_stride);
262 void ff_avg_h264_qpel4_mc10_msa(uint8_t *dst, const uint8_t *src,
263                                 ptrdiff_t dst_stride);
264 void ff_avg_h264_qpel4_mc20_msa(uint8_t *dst, const uint8_t *src,
265                                 ptrdiff_t dst_stride);
266 void ff_avg_h264_qpel4_mc30_msa(uint8_t *dst, const uint8_t *src,
267                                 ptrdiff_t dst_stride);
268 void ff_avg_h264_qpel4_mc01_msa(uint8_t *dst, const uint8_t *src,
269                                 ptrdiff_t dst_stride);
270 void ff_avg_h264_qpel4_mc11_msa(uint8_t *dst, const uint8_t *src,
271                                 ptrdiff_t dst_stride);
272 void ff_avg_h264_qpel4_mc21_msa(uint8_t *dst, const uint8_t *src,
273                                 ptrdiff_t dst_stride);
274 void ff_avg_h264_qpel4_mc31_msa(uint8_t *dst, const uint8_t *src,
275                                 ptrdiff_t dst_stride);
276 void ff_avg_h264_qpel4_mc02_msa(uint8_t *dst, const uint8_t *src,
277                                 ptrdiff_t dst_stride);
278 void ff_avg_h264_qpel4_mc12_msa(uint8_t *dst, const uint8_t *src,
279                                 ptrdiff_t dst_stride);
280 void ff_avg_h264_qpel4_mc22_msa(uint8_t *dst, const uint8_t *src,
281                                 ptrdiff_t dst_stride);
282 void ff_avg_h264_qpel4_mc32_msa(uint8_t *dst, const uint8_t *src,
283                                 ptrdiff_t dst_stride);
284 void ff_avg_h264_qpel4_mc03_msa(uint8_t *dst, const uint8_t *src,
285                                 ptrdiff_t dst_stride);
286 void ff_avg_h264_qpel4_mc13_msa(uint8_t *dst, const uint8_t *src,
287                                 ptrdiff_t dst_stride);
288 void ff_avg_h264_qpel4_mc23_msa(uint8_t *dst, const uint8_t *src,
289                                 ptrdiff_t dst_stride);
290 void ff_avg_h264_qpel4_mc33_msa(uint8_t *dst, const uint8_t *src,
291                                 ptrdiff_t dst_stride);
292
293 void ff_h264_intra_predict_plane_8x8_msa(uint8_t *src, ptrdiff_t stride);
294 void ff_h264_intra_predict_dc_4blk_8x8_msa(uint8_t *src, ptrdiff_t stride);
295 void ff_h264_intra_predict_hor_dc_8x8_msa(uint8_t *src, ptrdiff_t stride);
296 void ff_h264_intra_predict_vert_dc_8x8_msa(uint8_t *src, ptrdiff_t stride);
297 void ff_h264_intra_predict_mad_cow_dc_l0t_8x8_msa(uint8_t *src,
298                                                   ptrdiff_t stride);
299 void ff_h264_intra_predict_mad_cow_dc_0lt_8x8_msa(uint8_t *src,
300                                                   ptrdiff_t stride);
301 void ff_h264_intra_predict_mad_cow_dc_l00_8x8_msa(uint8_t *src,
302                                                   ptrdiff_t stride);
303 void ff_h264_intra_predict_mad_cow_dc_0l0_8x8_msa(uint8_t *src,
304                                                   ptrdiff_t stride);
305 void ff_h264_intra_predict_plane_16x16_msa(uint8_t *src, ptrdiff_t stride);
306 void ff_h264_intra_pred_vert_8x8_msa(uint8_t *src, ptrdiff_t stride);
307 void ff_h264_intra_pred_horiz_8x8_msa(uint8_t *src, ptrdiff_t stride);
308 void ff_h264_intra_pred_dc_16x16_msa(uint8_t *src, ptrdiff_t stride);
309 void ff_h264_intra_pred_vert_16x16_msa(uint8_t *src, ptrdiff_t stride);
310 void ff_h264_intra_pred_horiz_16x16_msa(uint8_t *src, ptrdiff_t stride);
311 void ff_h264_intra_pred_dc_left_16x16_msa(uint8_t *src, ptrdiff_t stride);
312 void ff_h264_intra_pred_dc_top_16x16_msa(uint8_t *src, ptrdiff_t stride);
313 void ff_h264_intra_pred_dc_128_8x8_msa(uint8_t *src, ptrdiff_t stride);
314 void ff_h264_intra_pred_dc_128_16x16_msa(uint8_t *src, ptrdiff_t stride);
315 void ff_vp8_pred8x8_127_dc_8_msa(uint8_t *src, ptrdiff_t stride);
316 void ff_vp8_pred8x8_129_dc_8_msa(uint8_t *src, ptrdiff_t stride);
317 void ff_vp8_pred16x16_127_dc_8_msa(uint8_t *src, ptrdiff_t stride);
318 void ff_vp8_pred16x16_129_dc_8_msa(uint8_t *src, ptrdiff_t stride);
319
320 void ff_h264_weight_pixels16_8_mmi(uint8_t *block, int stride, int height,
321         int log2_denom, int weight, int offset);
322 void ff_h264_biweight_pixels16_8_mmi(uint8_t *dst, uint8_t *src,
323         int stride, int height, int log2_denom, int weightd, int weights,
324         int offset);
325 void ff_h264_weight_pixels8_8_mmi(uint8_t *block, int stride, int height,
326         int log2_denom, int weight, int offset);
327 void ff_h264_biweight_pixels8_8_mmi(uint8_t *dst, uint8_t *src,
328         int stride, int height, int log2_denom, int weightd, int weights,
329         int offset);
330 void ff_h264_weight_pixels4_8_mmi(uint8_t *block, int stride, int height,
331         int log2_denom, int weight, int offset);
332 void ff_h264_biweight_pixels4_8_mmi(uint8_t *dst, uint8_t *src,
333         int stride, int height, int log2_denom, int weightd, int weights,
334         int offset);
335
336 #endif  // #ifndef H264_DSP_MIPS_H