2 * Copyright (c) 2016 Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
4 * This file is part of FFmpeg.
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.
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.
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
21 #ifndef AVCODEC_MIPS_VC1DSP_MIPS_H
22 #define AVCODEC_MIPS_VC1DSP_MIPS_H
24 #include "libavcodec/vc1dsp.h"
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);
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);
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);
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);
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);
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);
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);
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);
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);
194 #endif /* AVCODEC_MIPS_VC1DSP_MIPS_H */