1/*
2 * Copyright (c) 2015 Parag Salasakar (Parag.Salasakar@imgtec.com)
3                      Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
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#ifndef AVCODEC_MIPS_H264DSP_MIPS_H
23#define AVCODEC_MIPS_H264DSP_MIPS_H
24
25#include "libavcodec/h264dec.h"
26#include "constants.h"
27
28void ff_h264_h_lpf_luma_inter_msa(uint8_t *src, ptrdiff_t stride,
29                                  int alpha, int beta, int8_t *tc0);
30void ff_h264_v_lpf_luma_inter_msa(uint8_t *src, ptrdiff_t stride,
31                                  int alpha, int beta, int8_t *tc0);
32void ff_h264_h_lpf_chroma_inter_msa(uint8_t *src, ptrdiff_t stride,
33                                    int alpha, int beta, int8_t *tc0);
34void ff_h264_v_lpf_chroma_inter_msa(uint8_t *src, ptrdiff_t stride,
35                                    int alpha, int beta, int8_t *tc0);
36void ff_h264_h_loop_filter_chroma422_msa(uint8_t *src, ptrdiff_t stride,
37                                         int32_t alpha, int32_t beta,
38                                         int8_t *tc0);
39void ff_h264_h_loop_filter_chroma422_mbaff_msa(uint8_t *src, ptrdiff_t stride,
40                                               int32_t alpha, int32_t beta,
41                                               int8_t *tc0);
42void ff_h264_h_loop_filter_luma_mbaff_msa(uint8_t *src, ptrdiff_t stride,
43                                          int32_t alpha, int32_t beta,
44                                          int8_t *tc0);
45
46void ff_h264_idct_add_msa(uint8_t *dst, int16_t *src, int32_t dst_stride);
47void ff_h264_idct4x4_addblk_dc_msa(uint8_t *dst, int16_t *src,
48                                   int32_t dst_stride);
49void ff_h264_deq_idct_luma_dc_msa(int16_t *dst, int16_t *src,
50                                  int32_t de_q_val);
51void ff_h264_idct_add16_msa(uint8_t *dst, const int32_t *blk_offset,
52                            int16_t *block, int32_t stride,
53                            const uint8_t nnzc[5 * 8]);
54void ff_h264_idct_add16_intra_msa(uint8_t *dst, const int32_t *blk_offset,
55                                  int16_t *block, int32_t dst_stride,
56                                  const uint8_t nnzc[5 * 8]);
57void ff_h264_idct_add8_msa(uint8_t **dst, const int32_t *blk_offset,
58                           int16_t *block, int32_t dst_stride,
59                           const uint8_t nnzc[15 * 8]);
60void ff_h264_idct_add8_422_msa(uint8_t **dst, const int32_t *blk_offset,
61                               int16_t *block, int32_t dst_stride,
62                               const uint8_t nnzc[15 * 8]);
63void ff_h264_idct8_addblk_msa(uint8_t *dst, int16_t *src, int32_t dst_stride);
64void ff_h264_idct8_dc_addblk_msa(uint8_t *dst, int16_t *src,
65                                 int32_t dst_stride);
66void ff_h264_idct8_add4_msa(uint8_t *dst, const int *blk_offset,
67                            int16_t *blk, int dst_stride,
68                            const uint8_t nnzc[5 * 8]);
69
70void ff_h264_h_lpf_luma_intra_msa(uint8_t *src, ptrdiff_t stride,
71                                  int alpha, int beta);
72void ff_h264_v_lpf_luma_intra_msa(uint8_t *src, ptrdiff_t stride,
73                                  int alpha, int beta);
74void ff_h264_h_lpf_chroma_intra_msa(uint8_t *src, ptrdiff_t stride,
75                                    int alpha, int beta);
76void ff_h264_v_lpf_chroma_intra_msa(uint8_t *src, ptrdiff_t stride,
77                                    int alpha, int beta);
78void ff_h264_h_loop_filter_luma_mbaff_intra_msa(uint8_t *src, ptrdiff_t stride,
79                                                int alpha, int beta);
80
81void ff_biweight_h264_pixels16_8_msa(uint8_t *dst, uint8_t *src,
82                                     ptrdiff_t stride, int height, int log2_denom,
83                                     int weightd, int weights, int offset);
84void ff_biweight_h264_pixels8_8_msa(uint8_t *dst, uint8_t *src,
85                                    ptrdiff_t stride, int height, int log2_denom,
86                                    int weightd, int weights, int offset);
87void ff_biweight_h264_pixels4_8_msa(uint8_t *dst, uint8_t *src,
88                                    ptrdiff_t stride, int height, int log2_denom,
89                                    int weightd, int weights, int offset);
90void ff_weight_h264_pixels16_8_msa(uint8_t *src, ptrdiff_t stride, int height,
91                                   int log2_denom, int weight, int offset);
92void ff_weight_h264_pixels8_8_msa(uint8_t *src, ptrdiff_t stride, int height,
93                                  int log2_denom, int weight, int offset);
94void ff_weight_h264_pixels4_8_msa(uint8_t *src, ptrdiff_t stride, int height,
95                                  int log2_denom, int weight, int offset);
96
97void ff_put_h264_qpel16_mc00_msa(uint8_t *dst, const uint8_t *src,
98                                 ptrdiff_t dst_stride);
99void ff_put_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src,
100                                 ptrdiff_t dst_stride);
101void ff_put_h264_qpel16_mc20_msa(uint8_t *dst, const uint8_t *src,
102                                 ptrdiff_t dst_stride);
103void ff_put_h264_qpel16_mc30_msa(uint8_t *dst, const uint8_t *src,
104                                 ptrdiff_t dst_stride);
105void ff_put_h264_qpel16_mc01_msa(uint8_t *dst, const uint8_t *src,
106                                 ptrdiff_t dst_stride);
107void ff_put_h264_qpel16_mc11_msa(uint8_t *dst, const uint8_t *src,
108                                 ptrdiff_t dst_stride);
109void ff_put_h264_qpel16_mc21_msa(uint8_t *dst, const uint8_t *src,
110                                 ptrdiff_t dst_stride);
111void ff_put_h264_qpel16_mc31_msa(uint8_t *dst, const uint8_t *src,
112                                 ptrdiff_t dst_stride);
113void ff_put_h264_qpel16_mc02_msa(uint8_t *dst, const uint8_t *src,
114                                 ptrdiff_t dst_stride);
115void ff_put_h264_qpel16_mc12_msa(uint8_t *dst, const uint8_t *src,
116                                 ptrdiff_t dst_stride);
117void ff_put_h264_qpel16_mc22_msa(uint8_t *dst, const uint8_t *src,
118                                 ptrdiff_t dst_stride);
119void ff_put_h264_qpel16_mc32_msa(uint8_t *dst, const uint8_t *src,
120                                 ptrdiff_t dst_stride);
121void ff_put_h264_qpel16_mc03_msa(uint8_t *dst, const uint8_t *src,
122                                 ptrdiff_t dst_stride);
123void ff_put_h264_qpel16_mc13_msa(uint8_t *dst, const uint8_t *src,
124                                 ptrdiff_t dst_stride);
125void ff_put_h264_qpel16_mc23_msa(uint8_t *dst, const uint8_t *src,
126                                 ptrdiff_t dst_stride);
127void ff_put_h264_qpel16_mc33_msa(uint8_t *dst, const uint8_t *src,
128                                 ptrdiff_t dst_stride);
129
130void ff_put_h264_qpel8_mc00_msa(uint8_t *dst, const uint8_t *src,
131                                ptrdiff_t dst_stride);
132void ff_put_h264_qpel8_mc10_msa(uint8_t *dst, const uint8_t *src,
133                                ptrdiff_t dst_stride);
134void ff_put_h264_qpel8_mc20_msa(uint8_t *dst, const uint8_t *src,
135                                ptrdiff_t dst_stride);
136void ff_put_h264_qpel8_mc30_msa(uint8_t *dst, const uint8_t *src,
137                                ptrdiff_t dst_stride);
138void ff_put_h264_qpel8_mc01_msa(uint8_t *dst, const uint8_t *src,
139                                ptrdiff_t dst_stride);
140void ff_put_h264_qpel8_mc11_msa(uint8_t *dst, const uint8_t *src,
141                                ptrdiff_t dst_stride);
142void ff_put_h264_qpel8_mc21_msa(uint8_t *dst, const uint8_t *src,
143                                ptrdiff_t dst_stride);
144void ff_put_h264_qpel8_mc31_msa(uint8_t *dst, const uint8_t *src,
145                                ptrdiff_t dst_stride);
146void ff_put_h264_qpel8_mc02_msa(uint8_t *dst, const uint8_t *src,
147                                ptrdiff_t dst_stride);
148void ff_put_h264_qpel8_mc12_msa(uint8_t *dst, const uint8_t *src,
149                                ptrdiff_t dst_stride);
150void ff_put_h264_qpel8_mc22_msa(uint8_t *dst, const uint8_t *src,
151                                ptrdiff_t dst_stride);
152void ff_put_h264_qpel8_mc32_msa(uint8_t *dst, const uint8_t *src,
153                                ptrdiff_t dst_stride);
154void ff_put_h264_qpel8_mc03_msa(uint8_t *dst, const uint8_t *src,
155                                ptrdiff_t dst_stride);
156void ff_put_h264_qpel8_mc13_msa(uint8_t *dst, const uint8_t *src,
157                                ptrdiff_t dst_stride);
158void ff_put_h264_qpel8_mc23_msa(uint8_t *dst, const uint8_t *src,
159                                ptrdiff_t dst_stride);
160void ff_put_h264_qpel8_mc33_msa(uint8_t *dst, const uint8_t *src,
161                                ptrdiff_t dst_stride);
162
163void ff_put_h264_qpel4_mc00_msa(uint8_t *dst, const uint8_t *src,
164                                ptrdiff_t dst_stride);
165void ff_put_h264_qpel4_mc10_msa(uint8_t *dst, const uint8_t *src,
166                                ptrdiff_t dst_stride);
167void ff_put_h264_qpel4_mc20_msa(uint8_t *dst, const uint8_t *src,
168                                ptrdiff_t dst_stride);
169void ff_put_h264_qpel4_mc30_msa(uint8_t *dst, const uint8_t *src,
170                                ptrdiff_t dst_stride);
171void ff_put_h264_qpel4_mc01_msa(uint8_t *dst, const uint8_t *src,
172                                ptrdiff_t dst_stride);
173void ff_put_h264_qpel4_mc11_msa(uint8_t *dst, const uint8_t *src,
174                                ptrdiff_t dst_stride);
175void ff_put_h264_qpel4_mc21_msa(uint8_t *dst, const uint8_t *src,
176                                ptrdiff_t dst_stride);
177void ff_put_h264_qpel4_mc31_msa(uint8_t *dst, const uint8_t *src,
178                                ptrdiff_t dst_stride);
179void ff_put_h264_qpel4_mc02_msa(uint8_t *dst, const uint8_t *src,
180                                ptrdiff_t dst_stride);
181void ff_put_h264_qpel4_mc12_msa(uint8_t *dst, const uint8_t *src,
182                                ptrdiff_t dst_stride);
183void ff_put_h264_qpel4_mc22_msa(uint8_t *dst, const uint8_t *src,
184                                ptrdiff_t dst_stride);
185void ff_put_h264_qpel4_mc32_msa(uint8_t *dst, const uint8_t *src,
186                                ptrdiff_t dst_stride);
187void ff_put_h264_qpel4_mc03_msa(uint8_t *dst, const uint8_t *src,
188                                ptrdiff_t dst_stride);
189void ff_put_h264_qpel4_mc13_msa(uint8_t *dst, const uint8_t *src,
190                                ptrdiff_t dst_stride);
191void ff_put_h264_qpel4_mc23_msa(uint8_t *dst, const uint8_t *src,
192                                ptrdiff_t dst_stride);
193void ff_put_h264_qpel4_mc33_msa(uint8_t *dst, const uint8_t *src,
194                                ptrdiff_t dst_stride);
195
196void ff_avg_h264_qpel16_mc00_msa(uint8_t *dst, const uint8_t *src,
197                                 ptrdiff_t dst_stride);
198void ff_avg_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src,
199                                 ptrdiff_t dst_stride);
200void ff_avg_h264_qpel16_mc20_msa(uint8_t *dst, const uint8_t *src,
201                                 ptrdiff_t dst_stride);
202void ff_avg_h264_qpel16_mc30_msa(uint8_t *dst, const uint8_t *src,
203                                 ptrdiff_t dst_stride);
204void ff_avg_h264_qpel16_mc01_msa(uint8_t *dst, const uint8_t *src,
205                                 ptrdiff_t dst_stride);
206void ff_avg_h264_qpel16_mc11_msa(uint8_t *dst, const uint8_t *src,
207                                 ptrdiff_t dst_stride);
208void ff_avg_h264_qpel16_mc21_msa(uint8_t *dst, const uint8_t *src,
209                                 ptrdiff_t dst_stride);
210void ff_avg_h264_qpel16_mc31_msa(uint8_t *dst, const uint8_t *src,
211                                 ptrdiff_t dst_stride);
212void ff_avg_h264_qpel16_mc02_msa(uint8_t *dst, const uint8_t *src,
213                                 ptrdiff_t dst_stride);
214void ff_avg_h264_qpel16_mc12_msa(uint8_t *dst, const uint8_t *src,
215                                 ptrdiff_t dst_stride);
216void ff_avg_h264_qpel16_mc22_msa(uint8_t *dst, const uint8_t *src,
217                                 ptrdiff_t dst_stride);
218void ff_avg_h264_qpel16_mc32_msa(uint8_t *dst, const uint8_t *src,
219                                 ptrdiff_t dst_stride);
220void ff_avg_h264_qpel16_mc03_msa(uint8_t *dst, const uint8_t *src,
221                                 ptrdiff_t dst_stride);
222void ff_avg_h264_qpel16_mc13_msa(uint8_t *dst, const uint8_t *src,
223                                 ptrdiff_t dst_stride);
224void ff_avg_h264_qpel16_mc23_msa(uint8_t *dst, const uint8_t *src,
225                                 ptrdiff_t dst_stride);
226void ff_avg_h264_qpel16_mc33_msa(uint8_t *dst, const uint8_t *src,
227                                 ptrdiff_t dst_stride);
228
229void ff_avg_h264_qpel8_mc00_msa(uint8_t *dst, const uint8_t *src,
230                                ptrdiff_t dst_stride);
231void ff_avg_h264_qpel8_mc10_msa(uint8_t *dst, const uint8_t *src,
232                                ptrdiff_t dst_stride);
233void ff_avg_h264_qpel8_mc20_msa(uint8_t *dst, const uint8_t *src,
234                                ptrdiff_t dst_stride);
235void ff_avg_h264_qpel8_mc30_msa(uint8_t *dst, const uint8_t *src,
236                                ptrdiff_t dst_stride);
237void ff_avg_h264_qpel8_mc01_msa(uint8_t *dst, const uint8_t *src,
238                                ptrdiff_t dst_stride);
239void ff_avg_h264_qpel8_mc11_msa(uint8_t *dst, const uint8_t *src,
240                                ptrdiff_t dst_stride);
241void ff_avg_h264_qpel8_mc21_msa(uint8_t *dst, const uint8_t *src,
242                                ptrdiff_t dst_stride);
243void ff_avg_h264_qpel8_mc31_msa(uint8_t *dst, const uint8_t *src,
244                                ptrdiff_t dst_stride);
245void ff_avg_h264_qpel8_mc02_msa(uint8_t *dst, const uint8_t *src,
246                                ptrdiff_t dst_stride);
247void ff_avg_h264_qpel8_mc12_msa(uint8_t *dst, const uint8_t *src,
248                                ptrdiff_t dst_stride);
249void ff_avg_h264_qpel8_mc22_msa(uint8_t *dst, const uint8_t *src,
250                                ptrdiff_t dst_stride);
251void ff_avg_h264_qpel8_mc32_msa(uint8_t *dst, const uint8_t *src,
252                                ptrdiff_t dst_stride);
253void ff_avg_h264_qpel8_mc03_msa(uint8_t *dst, const uint8_t *src,
254                                ptrdiff_t dst_stride);
255void ff_avg_h264_qpel8_mc13_msa(uint8_t *dst, const uint8_t *src,
256                                ptrdiff_t dst_stride);
257void ff_avg_h264_qpel8_mc23_msa(uint8_t *dst, const uint8_t *src,
258                                ptrdiff_t dst_stride);
259void ff_avg_h264_qpel8_mc33_msa(uint8_t *dst, const uint8_t *src,
260                                ptrdiff_t dst_stride);
261
262void ff_avg_h264_qpel4_mc00_msa(uint8_t *dst, const uint8_t *src,
263                                ptrdiff_t dst_stride);
264void ff_avg_h264_qpel4_mc10_msa(uint8_t *dst, const uint8_t *src,
265                                ptrdiff_t dst_stride);
266void ff_avg_h264_qpel4_mc20_msa(uint8_t *dst, const uint8_t *src,
267                                ptrdiff_t dst_stride);
268void ff_avg_h264_qpel4_mc30_msa(uint8_t *dst, const uint8_t *src,
269                                ptrdiff_t dst_stride);
270void ff_avg_h264_qpel4_mc01_msa(uint8_t *dst, const uint8_t *src,
271                                ptrdiff_t dst_stride);
272void ff_avg_h264_qpel4_mc11_msa(uint8_t *dst, const uint8_t *src,
273                                ptrdiff_t dst_stride);
274void ff_avg_h264_qpel4_mc21_msa(uint8_t *dst, const uint8_t *src,
275                                ptrdiff_t dst_stride);
276void ff_avg_h264_qpel4_mc31_msa(uint8_t *dst, const uint8_t *src,
277                                ptrdiff_t dst_stride);
278void ff_avg_h264_qpel4_mc02_msa(uint8_t *dst, const uint8_t *src,
279                                ptrdiff_t dst_stride);
280void ff_avg_h264_qpel4_mc12_msa(uint8_t *dst, const uint8_t *src,
281                                ptrdiff_t dst_stride);
282void ff_avg_h264_qpel4_mc22_msa(uint8_t *dst, const uint8_t *src,
283                                ptrdiff_t dst_stride);
284void ff_avg_h264_qpel4_mc32_msa(uint8_t *dst, const uint8_t *src,
285                                ptrdiff_t dst_stride);
286void ff_avg_h264_qpel4_mc03_msa(uint8_t *dst, const uint8_t *src,
287                                ptrdiff_t dst_stride);
288void ff_avg_h264_qpel4_mc13_msa(uint8_t *dst, const uint8_t *src,
289                                ptrdiff_t dst_stride);
290void ff_avg_h264_qpel4_mc23_msa(uint8_t *dst, const uint8_t *src,
291                                ptrdiff_t dst_stride);
292void ff_avg_h264_qpel4_mc33_msa(uint8_t *dst, const uint8_t *src,
293                                ptrdiff_t dst_stride);
294
295void ff_h264_intra_predict_plane_8x8_msa(uint8_t *src, ptrdiff_t stride);
296void ff_h264_intra_predict_dc_4blk_8x8_msa(uint8_t *src, ptrdiff_t stride);
297void ff_h264_intra_predict_hor_dc_8x8_msa(uint8_t *src, ptrdiff_t stride);
298void ff_h264_intra_predict_vert_dc_8x8_msa(uint8_t *src, ptrdiff_t stride);
299void ff_h264_intra_predict_mad_cow_dc_l0t_8x8_msa(uint8_t *src,
300                                                  ptrdiff_t stride);
301void ff_h264_intra_predict_mad_cow_dc_0lt_8x8_msa(uint8_t *src,
302                                                  ptrdiff_t stride);
303void ff_h264_intra_predict_mad_cow_dc_l00_8x8_msa(uint8_t *src,
304                                                  ptrdiff_t stride);
305void ff_h264_intra_predict_mad_cow_dc_0l0_8x8_msa(uint8_t *src,
306                                                  ptrdiff_t stride);
307void ff_h264_intra_predict_plane_16x16_msa(uint8_t *src, ptrdiff_t stride);
308void ff_h264_intra_pred_vert_8x8_msa(uint8_t *src, ptrdiff_t stride);
309void ff_h264_intra_pred_horiz_8x8_msa(uint8_t *src, ptrdiff_t stride);
310void ff_h264_intra_pred_dc_16x16_msa(uint8_t *src, ptrdiff_t stride);
311void ff_h264_intra_pred_vert_16x16_msa(uint8_t *src, ptrdiff_t stride);
312void ff_h264_intra_pred_horiz_16x16_msa(uint8_t *src, ptrdiff_t stride);
313void ff_h264_intra_pred_dc_left_16x16_msa(uint8_t *src, ptrdiff_t stride);
314void ff_h264_intra_pred_dc_top_16x16_msa(uint8_t *src, ptrdiff_t stride);
315void ff_h264_intra_pred_dc_128_8x8_msa(uint8_t *src, ptrdiff_t stride);
316void ff_h264_intra_pred_dc_128_16x16_msa(uint8_t *src, ptrdiff_t stride);
317void ff_vp8_pred8x8_127_dc_8_msa(uint8_t *src, ptrdiff_t stride);
318void ff_vp8_pred8x8_129_dc_8_msa(uint8_t *src, ptrdiff_t stride);
319void ff_vp8_pred16x16_127_dc_8_msa(uint8_t *src, ptrdiff_t stride);
320void ff_vp8_pred16x16_129_dc_8_msa(uint8_t *src, ptrdiff_t stride);
321
322void ff_h264_loop_filter_strength_msa(int16_t bS[2][4][4], uint8_t nnz[40],
323        int8_t ref[2][40], int16_t mv[2][40][2], int bidir, int edges,
324        int step, int mask_mv0, int mask_mv1, int field);
325
326void ff_h264_add_pixels4_8_mmi(uint8_t *_dst, int16_t *_src, int stride);
327void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
328void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
329void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
330void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
331void ff_h264_idct_add16_8_mmi(uint8_t *dst, const int *block_offset,
332        int16_t *block, int stride, const uint8_t nnzc[5 * 8]);
333void ff_h264_idct_add16intra_8_mmi(uint8_t *dst, const int *block_offset,
334        int16_t *block, int stride, const uint8_t nnzc[5 * 8]);
335void ff_h264_idct8_add4_8_mmi(uint8_t *dst, const int *block_offset,
336        int16_t *block, int stride, const uint8_t nnzc[5 * 8]);
337void ff_h264_idct_add8_8_mmi(uint8_t **dest, const int *block_offset,
338        int16_t *block, int stride, const uint8_t nnzc[15*8]);
339void ff_h264_idct_add8_422_8_mmi(uint8_t **dest, const int *block_offset,
340        int16_t *block, int stride, const uint8_t nnzc[15*8]);
341void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
342        int qmul);
343void ff_h264_chroma_dc_dequant_idct_8_mmi(int16_t *block, int qmul);
344void ff_h264_chroma422_dc_dequant_idct_8_mmi(int16_t *block, int qmul);
345
346void ff_h264_weight_pixels16_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
347        int log2_denom, int weight, int offset);
348void ff_h264_biweight_pixels16_8_mmi(uint8_t *dst, uint8_t *src,
349        ptrdiff_t stride, int height, int log2_denom, int weightd, int weights,
350        int offset);
351void ff_h264_weight_pixels8_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
352        int log2_denom, int weight, int offset);
353void ff_h264_biweight_pixels8_8_mmi(uint8_t *dst, uint8_t *src,
354        ptrdiff_t stride, int height, int log2_denom, int weightd, int weights,
355        int offset);
356void ff_h264_weight_pixels4_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
357        int log2_denom, int weight, int offset);
358void ff_h264_biweight_pixels4_8_mmi(uint8_t *dst, uint8_t *src,
359        ptrdiff_t stride, int height, int log2_denom, int weightd, int weights,
360        int offset);
361
362void ff_deblock_v_chroma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int beta,
363        int8_t *tc0);
364void ff_deblock_v_chroma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
365        int beta);
366void ff_deblock_h_chroma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int beta,
367        int8_t *tc0);
368void ff_deblock_h_chroma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
369        int beta);
370void ff_deblock_v_luma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int beta,
371        int8_t *tc0);
372void ff_deblock_v_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
373        int beta);
374void ff_deblock_h_luma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int beta,
375        int8_t *tc0);
376void ff_deblock_h_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
377        int beta);
378void ff_deblock_v8_luma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int beta,
379        int8_t *tc0);
380void ff_deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
381        int beta);
382
383void ff_put_h264_qpel16_mc00_mmi(uint8_t *dst, const uint8_t *src,
384        ptrdiff_t dst_stride);
385void ff_put_h264_qpel16_mc10_mmi(uint8_t *dst, const uint8_t *src,
386        ptrdiff_t dst_stride);
387void ff_put_h264_qpel16_mc20_mmi(uint8_t *dst, const uint8_t *src,
388        ptrdiff_t dst_stride);
389void ff_put_h264_qpel16_mc30_mmi(uint8_t *dst, const uint8_t *src,
390        ptrdiff_t dst_stride);
391void ff_put_h264_qpel16_mc01_mmi(uint8_t *dst, const uint8_t *src,
392        ptrdiff_t dst_stride);
393void ff_put_h264_qpel16_mc11_mmi(uint8_t *dst, const uint8_t *src,
394        ptrdiff_t dst_stride);
395void ff_put_h264_qpel16_mc21_mmi(uint8_t *dst, const uint8_t *src,
396        ptrdiff_t dst_stride);
397void ff_put_h264_qpel16_mc31_mmi(uint8_t *dst, const uint8_t *src,
398        ptrdiff_t dst_stride);
399void ff_put_h264_qpel16_mc02_mmi(uint8_t *dst, const uint8_t *src,
400        ptrdiff_t dst_stride);
401void ff_put_h264_qpel16_mc12_mmi(uint8_t *dst, const uint8_t *src,
402        ptrdiff_t dst_stride);
403void ff_put_h264_qpel16_mc22_mmi(uint8_t *dst, const uint8_t *src,
404        ptrdiff_t dst_stride);
405void ff_put_h264_qpel16_mc32_mmi(uint8_t *dst, const uint8_t *src,
406        ptrdiff_t dst_stride);
407void ff_put_h264_qpel16_mc03_mmi(uint8_t *dst, const uint8_t *src,
408        ptrdiff_t dst_stride);
409void ff_put_h264_qpel16_mc13_mmi(uint8_t *dst, const uint8_t *src,
410        ptrdiff_t dst_stride);
411void ff_put_h264_qpel16_mc23_mmi(uint8_t *dst, const uint8_t *src,
412        ptrdiff_t dst_stride);
413void ff_put_h264_qpel16_mc33_mmi(uint8_t *dst, const uint8_t *src,
414        ptrdiff_t dst_stride);
415
416void ff_put_h264_qpel8_mc00_mmi(uint8_t *dst, const uint8_t *src,
417        ptrdiff_t dst_stride);
418void ff_put_h264_qpel8_mc10_mmi(uint8_t *dst, const uint8_t *src,
419        ptrdiff_t dst_stride);
420void ff_put_h264_qpel8_mc20_mmi(uint8_t *dst, const uint8_t *src,
421        ptrdiff_t dst_stride);
422void ff_put_h264_qpel8_mc30_mmi(uint8_t *dst, const uint8_t *src,
423        ptrdiff_t dst_stride);
424void ff_put_h264_qpel8_mc01_mmi(uint8_t *dst, const uint8_t *src,
425        ptrdiff_t dst_stride);
426void ff_put_h264_qpel8_mc11_mmi(uint8_t *dst, const uint8_t *src,
427        ptrdiff_t dst_stride);
428void ff_put_h264_qpel8_mc21_mmi(uint8_t *dst, const uint8_t *src,
429        ptrdiff_t dst_stride);
430void ff_put_h264_qpel8_mc31_mmi(uint8_t *dst, const uint8_t *src,
431        ptrdiff_t dst_stride);
432void ff_put_h264_qpel8_mc02_mmi(uint8_t *dst, const uint8_t *src,
433        ptrdiff_t dst_stride);
434void ff_put_h264_qpel8_mc12_mmi(uint8_t *dst, const uint8_t *src,
435        ptrdiff_t dst_stride);
436void ff_put_h264_qpel8_mc22_mmi(uint8_t *dst, const uint8_t *src,
437        ptrdiff_t dst_stride);
438void ff_put_h264_qpel8_mc32_mmi(uint8_t *dst, const uint8_t *src,
439        ptrdiff_t dst_stride);
440void ff_put_h264_qpel8_mc03_mmi(uint8_t *dst, const uint8_t *src,
441        ptrdiff_t dst_stride);
442void ff_put_h264_qpel8_mc13_mmi(uint8_t *dst, const uint8_t *src,
443        ptrdiff_t dst_stride);
444void ff_put_h264_qpel8_mc23_mmi(uint8_t *dst, const uint8_t *src,
445        ptrdiff_t dst_stride);
446void ff_put_h264_qpel8_mc33_mmi(uint8_t *dst, const uint8_t *src,
447        ptrdiff_t dst_stride);
448
449void ff_put_h264_qpel4_mc00_mmi(uint8_t *dst, const uint8_t *src,
450        ptrdiff_t dst_stride);
451void ff_put_h264_qpel4_mc10_mmi(uint8_t *dst, const uint8_t *src,
452        ptrdiff_t dst_stride);
453void ff_put_h264_qpel4_mc20_mmi(uint8_t *dst, const uint8_t *src,
454        ptrdiff_t dst_stride);
455void ff_put_h264_qpel4_mc30_mmi(uint8_t *dst, const uint8_t *src,
456        ptrdiff_t dst_stride);
457void ff_put_h264_qpel4_mc01_mmi(uint8_t *dst, const uint8_t *src,
458        ptrdiff_t dst_stride);
459void ff_put_h264_qpel4_mc11_mmi(uint8_t *dst, const uint8_t *src,
460        ptrdiff_t dst_stride);
461void ff_put_h264_qpel4_mc21_mmi(uint8_t *dst, const uint8_t *src,
462        ptrdiff_t dst_stride);
463void ff_put_h264_qpel4_mc31_mmi(uint8_t *dst, const uint8_t *src,
464        ptrdiff_t dst_stride);
465void ff_put_h264_qpel4_mc02_mmi(uint8_t *dst, const uint8_t *src,
466        ptrdiff_t dst_stride);
467void ff_put_h264_qpel4_mc12_mmi(uint8_t *dst, const uint8_t *src,
468        ptrdiff_t dst_stride);
469void ff_put_h264_qpel4_mc22_mmi(uint8_t *dst, const uint8_t *src,
470        ptrdiff_t dst_stride);
471void ff_put_h264_qpel4_mc32_mmi(uint8_t *dst, const uint8_t *src,
472        ptrdiff_t dst_stride);
473void ff_put_h264_qpel4_mc03_mmi(uint8_t *dst, const uint8_t *src,
474        ptrdiff_t dst_stride);
475void ff_put_h264_qpel4_mc13_mmi(uint8_t *dst, const uint8_t *src,
476        ptrdiff_t dst_stride);
477void ff_put_h264_qpel4_mc23_mmi(uint8_t *dst, const uint8_t *src,
478        ptrdiff_t dst_stride);
479void ff_put_h264_qpel4_mc33_mmi(uint8_t *dst, const uint8_t *src,
480        ptrdiff_t dst_stride);
481
482void ff_avg_h264_qpel16_mc00_mmi(uint8_t *dst, const uint8_t *src,
483        ptrdiff_t dst_stride);
484void ff_avg_h264_qpel16_mc10_mmi(uint8_t *dst, const uint8_t *src,
485        ptrdiff_t dst_stride);
486void ff_avg_h264_qpel16_mc20_mmi(uint8_t *dst, const uint8_t *src,
487        ptrdiff_t dst_stride);
488void ff_avg_h264_qpel16_mc30_mmi(uint8_t *dst, const uint8_t *src,
489        ptrdiff_t dst_stride);
490void ff_avg_h264_qpel16_mc01_mmi(uint8_t *dst, const uint8_t *src,
491        ptrdiff_t dst_stride);
492void ff_avg_h264_qpel16_mc11_mmi(uint8_t *dst, const uint8_t *src,
493        ptrdiff_t dst_stride);
494void ff_avg_h264_qpel16_mc21_mmi(uint8_t *dst, const uint8_t *src,
495        ptrdiff_t dst_stride);
496void ff_avg_h264_qpel16_mc31_mmi(uint8_t *dst, const uint8_t *src,
497        ptrdiff_t dst_stride);
498void ff_avg_h264_qpel16_mc02_mmi(uint8_t *dst, const uint8_t *src,
499        ptrdiff_t dst_stride);
500void ff_avg_h264_qpel16_mc12_mmi(uint8_t *dst, const uint8_t *src,
501        ptrdiff_t dst_stride);
502void ff_avg_h264_qpel16_mc22_mmi(uint8_t *dst, const uint8_t *src,
503        ptrdiff_t dst_stride);
504void ff_avg_h264_qpel16_mc32_mmi(uint8_t *dst, const uint8_t *src,
505        ptrdiff_t dst_stride);
506void ff_avg_h264_qpel16_mc03_mmi(uint8_t *dst, const uint8_t *src,
507        ptrdiff_t dst_stride);
508void ff_avg_h264_qpel16_mc13_mmi(uint8_t *dst, const uint8_t *src,
509        ptrdiff_t dst_stride);
510void ff_avg_h264_qpel16_mc23_mmi(uint8_t *dst, const uint8_t *src,
511        ptrdiff_t dst_stride);
512void ff_avg_h264_qpel16_mc33_mmi(uint8_t *dst, const uint8_t *src,
513        ptrdiff_t dst_stride);
514
515void ff_avg_h264_qpel8_mc00_mmi(uint8_t *dst, const uint8_t *src,
516        ptrdiff_t dst_stride);
517void ff_avg_h264_qpel8_mc10_mmi(uint8_t *dst, const uint8_t *src,
518        ptrdiff_t dst_stride);
519void ff_avg_h264_qpel8_mc20_mmi(uint8_t *dst, const uint8_t *src,
520        ptrdiff_t dst_stride);
521void ff_avg_h264_qpel8_mc30_mmi(uint8_t *dst, const uint8_t *src,
522        ptrdiff_t dst_stride);
523void ff_avg_h264_qpel8_mc01_mmi(uint8_t *dst, const uint8_t *src,
524        ptrdiff_t dst_stride);
525void ff_avg_h264_qpel8_mc11_mmi(uint8_t *dst, const uint8_t *src,
526        ptrdiff_t dst_stride);
527void ff_avg_h264_qpel8_mc21_mmi(uint8_t *dst, const uint8_t *src,
528        ptrdiff_t dst_stride);
529void ff_avg_h264_qpel8_mc31_mmi(uint8_t *dst, const uint8_t *src,
530        ptrdiff_t dst_stride);
531void ff_avg_h264_qpel8_mc02_mmi(uint8_t *dst, const uint8_t *src,
532        ptrdiff_t dst_stride);
533void ff_avg_h264_qpel8_mc12_mmi(uint8_t *dst, const uint8_t *src,
534        ptrdiff_t dst_stride);
535void ff_avg_h264_qpel8_mc22_mmi(uint8_t *dst, const uint8_t *src,
536        ptrdiff_t dst_stride);
537void ff_avg_h264_qpel8_mc32_mmi(uint8_t *dst, const uint8_t *src,
538        ptrdiff_t dst_stride);
539void ff_avg_h264_qpel8_mc03_mmi(uint8_t *dst, const uint8_t *src,
540        ptrdiff_t dst_stride);
541void ff_avg_h264_qpel8_mc13_mmi(uint8_t *dst, const uint8_t *src,
542        ptrdiff_t dst_stride);
543void ff_avg_h264_qpel8_mc23_mmi(uint8_t *dst, const uint8_t *src,
544        ptrdiff_t dst_stride);
545void ff_avg_h264_qpel8_mc33_mmi(uint8_t *dst, const uint8_t *src,
546        ptrdiff_t dst_stride);
547
548void ff_avg_h264_qpel4_mc00_mmi(uint8_t *dst, const uint8_t *src,
549        ptrdiff_t dst_stride);
550void ff_avg_h264_qpel4_mc10_mmi(uint8_t *dst, const uint8_t *src,
551        ptrdiff_t dst_stride);
552void ff_avg_h264_qpel4_mc20_mmi(uint8_t *dst, const uint8_t *src,
553        ptrdiff_t dst_stride);
554void ff_avg_h264_qpel4_mc30_mmi(uint8_t *dst, const uint8_t *src,
555        ptrdiff_t dst_stride);
556void ff_avg_h264_qpel4_mc01_mmi(uint8_t *dst, const uint8_t *src,
557        ptrdiff_t dst_stride);
558void ff_avg_h264_qpel4_mc11_mmi(uint8_t *dst, const uint8_t *src,
559        ptrdiff_t dst_stride);
560void ff_avg_h264_qpel4_mc21_mmi(uint8_t *dst, const uint8_t *src,
561        ptrdiff_t dst_stride);
562void ff_avg_h264_qpel4_mc31_mmi(uint8_t *dst, const uint8_t *src,
563        ptrdiff_t dst_stride);
564void ff_avg_h264_qpel4_mc02_mmi(uint8_t *dst, const uint8_t *src,
565        ptrdiff_t dst_stride);
566void ff_avg_h264_qpel4_mc12_mmi(uint8_t *dst, const uint8_t *src,
567        ptrdiff_t dst_stride);
568void ff_avg_h264_qpel4_mc22_mmi(uint8_t *dst, const uint8_t *src,
569        ptrdiff_t dst_stride);
570void ff_avg_h264_qpel4_mc32_mmi(uint8_t *dst, const uint8_t *src,
571        ptrdiff_t dst_stride);
572void ff_avg_h264_qpel4_mc03_mmi(uint8_t *dst, const uint8_t *src,
573        ptrdiff_t dst_stride);
574void ff_avg_h264_qpel4_mc13_mmi(uint8_t *dst, const uint8_t *src,
575        ptrdiff_t dst_stride);
576void ff_avg_h264_qpel4_mc23_mmi(uint8_t *dst, const uint8_t *src,
577        ptrdiff_t dst_stride);
578void ff_avg_h264_qpel4_mc33_mmi(uint8_t *dst, const uint8_t *src,
579        ptrdiff_t dst_stride);
580
581#endif  // #ifndef AVCODEC_MIPS_H264DSP_MIPS_H
582