Merge commit '42cf7f91f1e9dabf494ff469d8f67ac8b33b0f63'
[ffmpeg.git] / libavcodec / mips / vc1dsp_mips.h
1 /*
2  * Copyright (c) 2016 Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
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_VC1DSP_MIPS_H
22 #define AVCODEC_MIPS_VC1DSP_MIPS_H
23
24 #include "libavcodec/vc1dsp.h"
25
26 void ff_put_vc1_mspel_mc00_mmi(uint8_t *dst, const uint8_t *src,
27                                ptrdiff_t stride, int rnd);
28 void ff_put_vc1_mspel_mc01_mmi(uint8_t *dst, const uint8_t *src,
29                                ptrdiff_t stride, int rnd);
30 void ff_put_vc1_mspel_mc02_mmi(uint8_t *dst, const uint8_t *src,
31                                ptrdiff_t stride, int rnd);
32 void ff_put_vc1_mspel_mc03_mmi(uint8_t *dst, const uint8_t *src,
33                                ptrdiff_t stride, int rnd);
34 void ff_put_vc1_mspel_mc10_mmi(uint8_t *dst, const uint8_t *src,
35                                ptrdiff_t stride, int rnd);
36 void ff_put_vc1_mspel_mc11_mmi(uint8_t *dst, const uint8_t *src,
37                                ptrdiff_t stride, int rnd);
38 void ff_put_vc1_mspel_mc12_mmi(uint8_t *dst, const uint8_t *src,
39                                ptrdiff_t stride, int rnd);
40 void ff_put_vc1_mspel_mc13_mmi(uint8_t *dst, const uint8_t *src,
41                                ptrdiff_t stride, int rnd);
42 void ff_put_vc1_mspel_mc20_mmi(uint8_t *dst, const uint8_t *src,
43                                ptrdiff_t stride, int rnd);
44 void ff_put_vc1_mspel_mc21_mmi(uint8_t *dst, const uint8_t *src,
45                                ptrdiff_t stride, int rnd);
46 void ff_put_vc1_mspel_mc22_mmi(uint8_t *dst, const uint8_t *src,
47                                ptrdiff_t stride, int rnd);
48 void ff_put_vc1_mspel_mc23_mmi(uint8_t *dst, const uint8_t *src,
49                                ptrdiff_t stride, int rnd);
50 void ff_put_vc1_mspel_mc30_mmi(uint8_t *dst, const uint8_t *src,
51                                ptrdiff_t stride, int rnd);
52 void ff_put_vc1_mspel_mc31_mmi(uint8_t *dst, const uint8_t *src,
53                                ptrdiff_t stride, int rnd);
54 void ff_put_vc1_mspel_mc32_mmi(uint8_t *dst, const uint8_t *src,
55                                ptrdiff_t stride, int rnd);
56 void ff_put_vc1_mspel_mc33_mmi(uint8_t *dst, const uint8_t *src,
57                                ptrdiff_t stride, int rnd);
58
59 void ff_avg_vc1_mspel_mc00_mmi(uint8_t *dst, const uint8_t *src,
60                                ptrdiff_t stride, int rnd);
61 void ff_avg_vc1_mspel_mc01_mmi(uint8_t *dst, const uint8_t *src,
62                                ptrdiff_t stride, int rnd);
63 void ff_avg_vc1_mspel_mc02_mmi(uint8_t *dst, const uint8_t *src,
64                                ptrdiff_t stride, int rnd);
65 void ff_avg_vc1_mspel_mc03_mmi(uint8_t *dst, const uint8_t *src,
66                                ptrdiff_t stride, int rnd);
67 void ff_avg_vc1_mspel_mc10_mmi(uint8_t *dst, const uint8_t *src,
68                                ptrdiff_t stride, int rnd);
69 void ff_avg_vc1_mspel_mc11_mmi(uint8_t *dst, const uint8_t *src,
70                                ptrdiff_t stride, int rnd);
71 void ff_avg_vc1_mspel_mc12_mmi(uint8_t *dst, const uint8_t *src,
72                                ptrdiff_t stride, int rnd);
73 void ff_avg_vc1_mspel_mc13_mmi(uint8_t *dst, const uint8_t *src,
74                                ptrdiff_t stride, int rnd);
75 void ff_avg_vc1_mspel_mc20_mmi(uint8_t *dst, const uint8_t *src,
76                                ptrdiff_t stride, int rnd);
77 void ff_avg_vc1_mspel_mc21_mmi(uint8_t *dst, const uint8_t *src,
78                                ptrdiff_t stride, int rnd);
79 void ff_avg_vc1_mspel_mc22_mmi(uint8_t *dst, const uint8_t *src,
80                                ptrdiff_t stride, int rnd);
81 void ff_avg_vc1_mspel_mc23_mmi(uint8_t *dst, const uint8_t *src,
82                                ptrdiff_t stride, int rnd);
83 void ff_avg_vc1_mspel_mc30_mmi(uint8_t *dst, const uint8_t *src,
84                                ptrdiff_t stride, int rnd);
85 void ff_avg_vc1_mspel_mc31_mmi(uint8_t *dst, const uint8_t *src,
86                                ptrdiff_t stride, int rnd);
87 void ff_avg_vc1_mspel_mc32_mmi(uint8_t *dst, const uint8_t *src,
88                                ptrdiff_t stride, int rnd);
89 void ff_avg_vc1_mspel_mc33_mmi(uint8_t *dst, const uint8_t *src,
90                                ptrdiff_t stride, int rnd);
91
92
93 void ff_put_vc1_mspel_mc00_16_mmi(uint8_t *dst, const uint8_t *src,
94                                   ptrdiff_t stride, int rnd);
95 void ff_put_vc1_mspel_mc01_16_mmi(uint8_t *dst, const uint8_t *src,
96                                   ptrdiff_t stride, int rnd);
97 void ff_put_vc1_mspel_mc02_16_mmi(uint8_t *dst, const uint8_t *src,
98                                   ptrdiff_t stride, int rnd);
99 void ff_put_vc1_mspel_mc03_16_mmi(uint8_t *dst, const uint8_t *src,
100                                   ptrdiff_t stride, int rnd);
101 void ff_put_vc1_mspel_mc10_16_mmi(uint8_t *dst, const uint8_t *src,
102                                   ptrdiff_t stride, int rnd);
103 void ff_put_vc1_mspel_mc11_16_mmi(uint8_t *dst, const uint8_t *src,
104                                   ptrdiff_t stride, int rnd);
105 void ff_put_vc1_mspel_mc12_16_mmi(uint8_t *dst, const uint8_t *src,
106                                   ptrdiff_t stride, int rnd);
107 void ff_put_vc1_mspel_mc13_16_mmi(uint8_t *dst, const uint8_t *src,
108                                   ptrdiff_t stride, int rnd);
109 void ff_put_vc1_mspel_mc20_16_mmi(uint8_t *dst, const uint8_t *src,
110                                   ptrdiff_t stride, int rnd);
111 void ff_put_vc1_mspel_mc21_16_mmi(uint8_t *dst, const uint8_t *src,
112                                   ptrdiff_t stride, int rnd);
113 void ff_put_vc1_mspel_mc22_16_mmi(uint8_t *dst, const uint8_t *src,
114                                   ptrdiff_t stride, int rnd);
115 void ff_put_vc1_mspel_mc23_16_mmi(uint8_t *dst, const uint8_t *src,
116                                   ptrdiff_t stride, int rnd);
117 void ff_put_vc1_mspel_mc30_16_mmi(uint8_t *dst, const uint8_t *src,
118                                   ptrdiff_t stride, int rnd);
119 void ff_put_vc1_mspel_mc31_16_mmi(uint8_t *dst, const uint8_t *src,
120                                   ptrdiff_t stride, int rnd);
121 void ff_put_vc1_mspel_mc32_16_mmi(uint8_t *dst, const uint8_t *src,
122                                   ptrdiff_t stride, int rnd);
123 void ff_put_vc1_mspel_mc33_16_mmi(uint8_t *dst, const uint8_t *src,
124                                   ptrdiff_t stride, int rnd);
125
126 void ff_avg_vc1_mspel_mc00_16_mmi(uint8_t *dst, const uint8_t *src,
127                                   ptrdiff_t stride, int rnd);
128 void ff_avg_vc1_mspel_mc01_16_mmi(uint8_t *dst, const uint8_t *src,
129                                   ptrdiff_t stride, int rnd);
130 void ff_avg_vc1_mspel_mc02_16_mmi(uint8_t *dst, const uint8_t *src,
131                                   ptrdiff_t stride, int rnd);
132 void ff_avg_vc1_mspel_mc03_16_mmi(uint8_t *dst, const uint8_t *src,
133                                   ptrdiff_t stride, int rnd);
134 void ff_avg_vc1_mspel_mc10_16_mmi(uint8_t *dst, const uint8_t *src,
135                                   ptrdiff_t stride, int rnd);
136 void ff_avg_vc1_mspel_mc11_16_mmi(uint8_t *dst, const uint8_t *src,
137                                   ptrdiff_t stride, int rnd);
138 void ff_avg_vc1_mspel_mc12_16_mmi(uint8_t *dst, const uint8_t *src,
139                                   ptrdiff_t stride, int rnd);
140 void ff_avg_vc1_mspel_mc13_16_mmi(uint8_t *dst, const uint8_t *src,
141                                   ptrdiff_t stride, int rnd);
142 void ff_avg_vc1_mspel_mc20_16_mmi(uint8_t *dst, const uint8_t *src,
143                                   ptrdiff_t stride, int rnd);
144 void ff_avg_vc1_mspel_mc21_16_mmi(uint8_t *dst, const uint8_t *src,
145                                   ptrdiff_t stride, int rnd);
146 void ff_avg_vc1_mspel_mc22_16_mmi(uint8_t *dst, const uint8_t *src,
147                                   ptrdiff_t stride, int rnd);
148 void ff_avg_vc1_mspel_mc23_16_mmi(uint8_t *dst, const uint8_t *src,
149                                   ptrdiff_t stride, int rnd);
150 void ff_avg_vc1_mspel_mc30_16_mmi(uint8_t *dst, const uint8_t *src,
151                                   ptrdiff_t stride, int rnd);
152 void ff_avg_vc1_mspel_mc31_16_mmi(uint8_t *dst, const uint8_t *src,
153                                   ptrdiff_t stride, int rnd);
154 void ff_avg_vc1_mspel_mc32_16_mmi(uint8_t *dst, const uint8_t *src,
155                                   ptrdiff_t stride, int rnd);
156 void ff_avg_vc1_mspel_mc33_16_mmi(uint8_t *dst, const uint8_t *src,
157                                   ptrdiff_t stride, int rnd);
158
159 void ff_vc1_inv_trans_8x8_mmi(int16_t block[64]);
160 void ff_vc1_inv_trans_8x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
161 void ff_vc1_inv_trans_4x8_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
162 void ff_vc1_inv_trans_4x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
163
164 void ff_vc1_inv_trans_4x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
165 void ff_vc1_inv_trans_4x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
166 void ff_vc1_inv_trans_8x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
167 void ff_vc1_inv_trans_8x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
168
169 void ff_vc1_v_overlap_mmi(uint8_t *src, int stride);
170 void ff_vc1_h_overlap_mmi(uint8_t *src, int stride);
171 void ff_vc1_v_s_overlap_mmi(int16_t *top, int16_t *bottom);
172 void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right);
173
174 void ff_vc1_v_loop_filter4_mmi(uint8_t *src, int stride, int pq);
175 void ff_vc1_h_loop_filter4_mmi(uint8_t *src, int stride, int pq);
176 void ff_vc1_v_loop_filter8_mmi(uint8_t *src, int stride, int pq);
177 void ff_vc1_h_loop_filter8_mmi(uint8_t *src, int stride, int pq);
178 void ff_vc1_v_loop_filter16_mmi(uint8_t *src, int stride, int pq);
179 void ff_vc1_h_loop_filter16_mmi(uint8_t *src, int stride, int pq);
180
181 void ff_put_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
182                                       uint8_t *src /* align 1 */,
183                                       int stride, int h, int x, int y);
184 void ff_put_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
185                                       uint8_t *src /* align 1 */,
186                                       int stride, int h, int x, int y);
187 void ff_avg_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
188                                       uint8_t *src /* align 1 */,
189                                       int stride, int h, int x, int y);
190 void ff_avg_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
191                                       uint8_t *src /* align 1 */,
192                                       int stride, int h, int x, int y);
193
194 #endif /* AVCODEC_MIPS_VC1DSP_MIPS_H */