FFmpeg
Loading...
Searching...
No Matches
vp9dsp_mips.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 Shivraj Patil (Shivraj.Patil@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 AVCODEC_MIPS_VP9DSP_MIPS_H
22#define AVCODEC_MIPS_VP9DSP_MIPS_H
23
24#include <stddef.h>
25#include <stdint.h>
26
27#define VP9_8TAP_MIPS_MSA_FUNC(SIZE, type, type_idx) \
28void ff_put_8tap_##type##_##SIZE##h_msa(uint8_t *dst, ptrdiff_t dststride, \
29 const uint8_t *src, \
30 ptrdiff_t srcstride, \
31 int h, int mx, int my); \
32 \
33void ff_put_8tap_##type##_##SIZE##v_msa(uint8_t *dst, ptrdiff_t dststride, \
34 const uint8_t *src, \
35 ptrdiff_t srcstride, \
36 int h, int mx, int my); \
37 \
38void ff_put_8tap_##type##_##SIZE##hv_msa(uint8_t *dst, ptrdiff_t dststride, \
39 const uint8_t *src, \
40 ptrdiff_t srcstride, \
41 int h, int mx, int my); \
42 \
43void ff_avg_8tap_##type##_##SIZE##h_msa(uint8_t *dst, ptrdiff_t dststride, \
44 const uint8_t *src, \
45 ptrdiff_t srcstride, \
46 int h, int mx, int my); \
47 \
48void ff_avg_8tap_##type##_##SIZE##v_msa(uint8_t *dst, ptrdiff_t dststride, \
49 const uint8_t *src, \
50 ptrdiff_t srcstride, \
51 int h, int mx, int my); \
52 \
53void ff_avg_8tap_##type##_##SIZE##hv_msa(uint8_t *dst, ptrdiff_t dststride, \
54 const uint8_t *src, \
55 ptrdiff_t srcstride, \
56 int h, int mx, int my);
57
58#define VP9_BILINEAR_MIPS_MSA_FUNC(SIZE) \
59void ff_put_bilin_##SIZE##h_msa(uint8_t *dst, ptrdiff_t dststride, \
60 const uint8_t *src, ptrdiff_t srcstride, \
61 int h, int mx, int my); \
62 \
63void ff_put_bilin_##SIZE##v_msa(uint8_t *dst, ptrdiff_t dststride, \
64 const uint8_t *src, ptrdiff_t srcstride, \
65 int h, int mx, int my); \
66 \
67void ff_put_bilin_##SIZE##hv_msa(uint8_t *dst, ptrdiff_t dststride, \
68 const uint8_t *src, ptrdiff_t srcstride, \
69 int h, int mx, int my); \
70 \
71void ff_avg_bilin_##SIZE##h_msa(uint8_t *dst, ptrdiff_t dststride, \
72 const uint8_t *src, ptrdiff_t srcstride, \
73 int h, int mx, int my); \
74 \
75void ff_avg_bilin_##SIZE##v_msa(uint8_t *dst, ptrdiff_t dststride, \
76 const uint8_t *src, ptrdiff_t srcstride, \
77 int h, int mx, int my); \
78 \
79void ff_avg_bilin_##SIZE##hv_msa(uint8_t *dst, ptrdiff_t dststride, \
80 const uint8_t *src, ptrdiff_t srcstride, \
81 int h, int mx, int my);
82
83#define VP9_COPY_AVG_MIPS_MSA_FUNC(SIZE) \
84void ff_copy##SIZE##_msa(uint8_t *dst, ptrdiff_t dststride, \
85 const uint8_t *src, ptrdiff_t srcstride, \
86 int h, int mx, int my); \
87 \
88void ff_avg##SIZE##_msa(uint8_t *dst, ptrdiff_t dststride, \
89 const uint8_t *src, ptrdiff_t srcstride, \
90 int h, int mx, int my);
91
97
103
109
115
121
122#undef VP9_8TAP_MIPS_MSA_FUNC
123#undef VP9_BILINEAR_MIPS_MSA_FUNC
124#undef VP9_COPY_AVG_MIPS_MSA_FUNC
125
126void ff_loop_filter_h_4_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
127 int32_t i, int32_t h);
128void ff_loop_filter_h_8_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
129 int32_t i, int32_t h);
130void ff_loop_filter_h_16_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
131 int32_t i, int32_t h);
132void ff_loop_filter_v_4_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
133 int32_t i, int32_t h);
134void ff_loop_filter_v_8_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
135 int32_t i, int32_t h);
136void ff_loop_filter_v_16_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
137 int32_t i, int32_t h);
138void ff_loop_filter_h_44_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
139 int32_t i, int32_t h);
140void ff_loop_filter_h_88_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
141 int32_t i, int32_t h);
142void ff_loop_filter_h_16_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
143 int32_t i, int32_t h);
144void ff_loop_filter_v_44_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
145 int32_t i, int32_t h);
146void ff_loop_filter_v_88_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
147 int32_t i, int32_t h);
148void ff_loop_filter_v_16_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
149 int32_t i, int32_t h);
150void ff_loop_filter_h_48_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
151 int32_t i, int32_t h);
152void ff_loop_filter_h_84_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
153 int32_t i, int32_t h);
154void ff_loop_filter_v_48_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
155 int32_t i, int32_t h);
156void ff_loop_filter_v_84_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e,
157 int32_t i, int32_t h);
158void ff_idct_idct_4x4_add_msa(uint8_t *dst, ptrdiff_t stride,
159 int16_t *block, int eob);
160void ff_idct_idct_8x8_add_msa(uint8_t *dst, ptrdiff_t stride,
161 int16_t *block, int eob);
162void ff_idct_idct_16x16_add_msa(uint8_t *dst, ptrdiff_t stride,
163 int16_t *block, int eob);
164void ff_idct_idct_32x32_add_msa(uint8_t *dst, ptrdiff_t stride,
165 int16_t *block, int eob);
166void ff_iadst_iadst_4x4_add_msa(uint8_t *dst, ptrdiff_t stride,
167 int16_t *block, int eob);
168void ff_iadst_iadst_8x8_add_msa(uint8_t *dst, ptrdiff_t stride,
169 int16_t *block, int eob);
170void ff_iadst_iadst_16x16_add_msa(uint8_t *dst, ptrdiff_t stride,
171 int16_t *block, int eob);
172void ff_iadst_idct_4x4_add_msa(uint8_t *dst, ptrdiff_t stride,
173 int16_t *block, int eob);
174void ff_iadst_idct_8x8_add_msa(uint8_t *dst, ptrdiff_t stride,
175 int16_t *block, int eob);
176void ff_iadst_idct_16x16_add_msa(uint8_t *dst, ptrdiff_t stride,
177 int16_t *block, int eob);
178void ff_idct_iadst_4x4_add_msa(uint8_t *pu8Dest, ptrdiff_t stride,
179 int16_t *block, int eob);
180void ff_idct_iadst_8x8_add_msa(uint8_t *pu8Dest, ptrdiff_t stride,
181 int16_t *block, int eob);
182void ff_idct_iadst_16x16_add_msa(uint8_t *pu8Dest, ptrdiff_t stride,
183 int16_t *block, int eob);
184void ff_iwht_iwht_4x4_add_msa(uint8_t *dst, ptrdiff_t stride,
185 int16_t *block, int eob);
186
187void ff_vert_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
188 const uint8_t *top);
189void ff_vert_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
190 const uint8_t *top);
191void ff_hor_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
192 const uint8_t *top);
193void ff_hor_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
194 const uint8_t *top);
195void ff_dc_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
196 const uint8_t *top);
197void ff_dc_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
198 const uint8_t *top);
199void ff_dc_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
200 const uint8_t *top);
201void ff_dc_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
202 const uint8_t *top);
203void ff_dc_left_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
204 const uint8_t *top);
205void ff_dc_left_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
206 const uint8_t *top);
207void ff_dc_left_16x16_msa(uint8_t *dst, ptrdiff_t stride,
208 const uint8_t *left, const uint8_t *top);
209void ff_dc_left_32x32_msa(uint8_t *dst, ptrdiff_t stride,
210 const uint8_t *left, const uint8_t *top);
211void ff_dc_top_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
212 const uint8_t *top);
213void ff_dc_top_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
214 const uint8_t *top);
215void ff_dc_top_16x16_msa(uint8_t *dst, ptrdiff_t stride,
216 const uint8_t *left, const uint8_t *top);
217void ff_dc_top_32x32_msa(uint8_t *dst, ptrdiff_t stride,
218 const uint8_t *left, const uint8_t *top);
219void ff_dc_128_16x16_msa(uint8_t *dst, ptrdiff_t stride,
220 const uint8_t *left, const uint8_t *top);
221void ff_dc_128_32x32_msa(uint8_t *dst, ptrdiff_t stride,
222 const uint8_t *left, const uint8_t *top);
223void ff_dc_127_16x16_msa(uint8_t *dst, ptrdiff_t stride,
224 const uint8_t *left, const uint8_t *top);
225void ff_dc_127_32x32_msa(uint8_t *dst, ptrdiff_t stride,
226 const uint8_t *left, const uint8_t *top);
227void ff_dc_129_16x16_msa(uint8_t *dst, ptrdiff_t stride,
228 const uint8_t *left, const uint8_t *top);
229void ff_dc_129_32x32_msa(uint8_t *dst, ptrdiff_t stride,
230 const uint8_t *left, const uint8_t *top);
231void ff_tm_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
232 const uint8_t *top);
233void ff_tm_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
234 const uint8_t *top);
235void ff_tm_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
236 const uint8_t *top);
237void ff_tm_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
238 const uint8_t *top);
239
240#define VP9_8TAP_MIPS_MMI_FUNC(SIZE, type, type_idx) \
241void ff_put_8tap_##type##_##SIZE##h_mmi(uint8_t *dst, ptrdiff_t dststride, \
242 const uint8_t *src, \
243 ptrdiff_t srcstride, \
244 int h, int mx, int my); \
245 \
246void ff_put_8tap_##type##_##SIZE##v_mmi(uint8_t *dst, ptrdiff_t dststride, \
247 const uint8_t *src, \
248 ptrdiff_t srcstride, \
249 int h, int mx, int my); \
250 \
251void ff_put_8tap_##type##_##SIZE##hv_mmi(uint8_t *dst, ptrdiff_t dststride, \
252 const uint8_t *src, \
253 ptrdiff_t srcstride, \
254 int h, int mx, int my); \
255 \
256void ff_avg_8tap_##type##_##SIZE##h_mmi(uint8_t *dst, ptrdiff_t dststride, \
257 const uint8_t *src, \
258 ptrdiff_t srcstride, \
259 int h, int mx, int my); \
260 \
261void ff_avg_8tap_##type##_##SIZE##v_mmi(uint8_t *dst, ptrdiff_t dststride, \
262 const uint8_t *src, \
263 ptrdiff_t srcstride, \
264 int h, int mx, int my); \
265 \
266void ff_avg_8tap_##type##_##SIZE##hv_mmi(uint8_t *dst, ptrdiff_t dststride, \
267 const uint8_t *src, \
268 ptrdiff_t srcstride, \
269 int h, int mx, int my);
270
276
282
288#undef VP9_8TAP_MIPS_MMI_FUNC
289
290#endif // #ifndef AVCODEC_MIPS_VP9DSP_MIPS_H
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
int32_t
static int BS_FUNC left(const BSCTX *bc)
Return the number of the bits left in a buffer.
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
static int16_t block[64]
Definition dct.c:125
#define stride
static float smooth(DeshakeOpenCLContext *deshake_ctx, float *gauss_kernel, int length, float max_val, AVFifo *values)
@ FILTER_8TAP_REGULAR
Definition vp9.h:66
@ FILTER_8TAP_SHARP
Definition vp9.h:67
@ FILTER_8TAP_SMOOTH
Definition vp9.h:65
void ff_dc_left_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_loop_filter_h_4_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_dc_left_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_loop_filter_v_8_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_tm_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_top_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_loop_filter_v_48_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_iadst_idct_4x4_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_vert_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_iadst_idct_16x16_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_tm_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_iadst_iadst_4x4_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_loop_filter_h_88_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
#define VP9_BILINEAR_MIPS_MSA_FUNC(SIZE)
Definition vp9dsp_mips.h:58
void ff_iadst_idct_8x8_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_iadst_iadst_8x8_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_dc_129_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_128_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_loop_filter_v_44_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_dc_129_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_idct_iadst_16x16_add_msa(uint8_t *pu8Dest, ptrdiff_t stride, int16_t *block, int eob)
void ff_loop_filter_v_16_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_dc_left_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_top_8x8_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_127_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
#define VP9_8TAP_MIPS_MSA_FUNC(SIZE, type, type_idx)
Definition vp9dsp_mips.h:27
#define VP9_COPY_AVG_MIPS_MSA_FUNC(SIZE)
Definition vp9dsp_mips.h:83
void ff_loop_filter_h_16_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_loop_filter_h_84_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_iadst_iadst_16x16_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_loop_filter_h_8_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_loop_filter_v_4_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_loop_filter_h_44_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
#define VP9_8TAP_MIPS_MMI_FUNC(SIZE, type, type_idx)
void ff_iwht_iwht_4x4_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_idct_iadst_8x8_add_msa(uint8_t *pu8Dest, ptrdiff_t stride, int16_t *block, int eob)
void ff_hor_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_128_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_loop_filter_v_84_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_hor_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_left_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_tm_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_idct_idct_8x8_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_loop_filter_v_16_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_idct_idct_32x32_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_idct_idct_16x16_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_dc_32x32_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_idct_iadst_4x4_add_msa(uint8_t *pu8Dest, ptrdiff_t stride, int16_t *block, int eob)
void ff_loop_filter_h_16_8_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_dc_top_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_idct_idct_4x4_add_msa(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void ff_vert_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_top_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_tm_4x4_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_loop_filter_v_88_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_loop_filter_h_48_16_msa(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
void ff_dc_127_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void ff_dc_16x16_msa(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)