Merge commit 'a6a750c7ef240b72ce01e9653343a0ddf247d196'
[ffmpeg.git] / libavcodec / mips / vp8dsp_mips.h
1 /*
2  * Copyright (c) 2015 Manojkumar Bhosale (Manojkumar.Bhosale@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_VP8DSP_MIPS_H
22 #define AVCODEC_MIPS_VP8DSP_MIPS_H
23
24 void ff_put_vp8_pixels4_msa(uint8_t *dst, ptrdiff_t dststride,
25                             uint8_t *src, ptrdiff_t srcstride,
26                             int h, int x, int y);
27 void ff_put_vp8_pixels8_msa(uint8_t *dst, ptrdiff_t dststride,
28                             uint8_t *src, ptrdiff_t srcstride,
29                             int h, int x, int y);
30 void ff_put_vp8_pixels16_msa(uint8_t *dst, ptrdiff_t dststride,
31                              uint8_t *src, ptrdiff_t srcstride,
32                              int h, int x, int y);
33
34 void ff_put_vp8_epel16_h4_msa(uint8_t *dst, ptrdiff_t dststride,
35                               uint8_t *src, ptrdiff_t srcstride,
36                               int h, int mx, int my);
37 void ff_put_vp8_epel16_h6_msa(uint8_t *dst, ptrdiff_t dststride,
38                               uint8_t *src, ptrdiff_t srcstride,
39                               int h, int mx, int my);
40 void ff_put_vp8_epel16_v4_msa(uint8_t *dst, ptrdiff_t dststride,
41                               uint8_t *src, ptrdiff_t srcstride,
42                               int h, int mx, int my);
43 void ff_put_vp8_epel16_v6_msa(uint8_t *dst, ptrdiff_t dststride,
44                               uint8_t *src, ptrdiff_t srcstride,
45                               int h, int mx, int my);
46 void ff_put_vp8_epel16_h4v4_msa(uint8_t *dst, ptrdiff_t dststride,
47                                 uint8_t *src, ptrdiff_t srcstride,
48                                 int h, int mx, int my);
49 void ff_put_vp8_epel16_h6v4_msa(uint8_t *dst, ptrdiff_t dststride,
50                                 uint8_t *src, ptrdiff_t srcstride,
51                                 int h, int mx, int my);
52 void ff_put_vp8_epel16_h4v6_msa(uint8_t *dst, ptrdiff_t dststride,
53                                 uint8_t *src, ptrdiff_t srcstride,
54                                 int h, int mx, int my);
55 void ff_put_vp8_epel16_h6v6_msa(uint8_t *dst, ptrdiff_t dststride,
56                                 uint8_t *src, ptrdiff_t srcstride,
57                                 int h, int mx, int my);
58
59 void ff_put_vp8_epel8_h4_msa(uint8_t *dst, ptrdiff_t dststride,
60                              uint8_t *src, ptrdiff_t srcstride,
61                              int h, int mx, int my);
62 void ff_put_vp8_epel8_h6_msa(uint8_t *dst, ptrdiff_t dststride,
63                              uint8_t *src, ptrdiff_t srcstride,
64                              int h, int mx, int my);
65 void ff_put_vp8_epel8_v4_msa(uint8_t *dst, ptrdiff_t dststride,
66                              uint8_t *src, ptrdiff_t srcstride,
67                              int h, int mx, int my);
68 void ff_put_vp8_epel8_v6_msa(uint8_t *dst, ptrdiff_t dststride,
69                              uint8_t *src, ptrdiff_t srcstride,
70                              int h, int mx, int my);
71 void ff_put_vp8_epel8_h4v4_msa(uint8_t *dst, ptrdiff_t dststride,
72                                uint8_t *src, ptrdiff_t srcstride,
73                                int h, int mx, int my);
74 void ff_put_vp8_epel8_h6v4_msa(uint8_t *dst, ptrdiff_t dststride,
75                                uint8_t *src, ptrdiff_t srcstride,
76                                int h, int mx, int my);
77 void ff_put_vp8_epel8_h4v6_msa(uint8_t *dst, ptrdiff_t dststride,
78                                uint8_t *src, ptrdiff_t srcstride,
79                                int h, int mx, int my);
80 void ff_put_vp8_epel8_h6v6_msa(uint8_t *dst, ptrdiff_t dststride,
81                                uint8_t *src, ptrdiff_t srcstride,
82                                int h, int mx, int my);
83
84 void ff_put_vp8_epel4_h4_msa(uint8_t *dst, ptrdiff_t dststride,
85                              uint8_t *src, ptrdiff_t srcstride,
86                              int h, int mx, int my);
87 void ff_put_vp8_epel4_h6_msa(uint8_t *dst, ptrdiff_t dststride,
88                              uint8_t *src, ptrdiff_t srcstride,
89                              int h, int mx, int my);
90 void ff_put_vp8_epel4_v4_msa(uint8_t *dst, ptrdiff_t dststride,
91                              uint8_t *src, ptrdiff_t srcstride,
92                              int h, int mx, int my);
93 void ff_put_vp8_epel4_v6_msa(uint8_t *dst, ptrdiff_t dststride,
94                              uint8_t *src, ptrdiff_t srcstride,
95                              int h, int mx, int my);
96 void ff_put_vp8_epel4_h4v4_msa(uint8_t *dst, ptrdiff_t dststride,
97                                uint8_t *src, ptrdiff_t srcstride,
98                                int h, int mx, int my);
99 void ff_put_vp8_epel4_h6v4_msa(uint8_t *dst, ptrdiff_t dststride,
100                                uint8_t *src, ptrdiff_t srcstride,
101                                int h, int mx, int my);
102 void ff_put_vp8_epel4_h4v6_msa(uint8_t *dst, ptrdiff_t dststride,
103                                uint8_t *src, ptrdiff_t srcstride,
104                                int h, int mx, int my);
105 void ff_put_vp8_epel4_h6v6_msa(uint8_t *dst, ptrdiff_t dststride,
106                                uint8_t *src, ptrdiff_t srcstride,
107                                int h, int mx, int my);
108
109 void ff_put_vp8_bilinear16_h_msa(uint8_t *dst, ptrdiff_t dststride,
110                                  uint8_t *src, ptrdiff_t srcstride,
111                                  int h, int mx, int my);
112 void ff_put_vp8_bilinear16_v_msa(uint8_t *dst, ptrdiff_t dststride,
113                                  uint8_t *src, ptrdiff_t srcstride,
114                                  int h, int mx, int my);
115 void ff_put_vp8_bilinear16_hv_msa(uint8_t *dst, ptrdiff_t dststride,
116                                   uint8_t *src, ptrdiff_t srcstride,
117                                   int h, int mx, int my);
118
119 void ff_put_vp8_bilinear8_h_msa(uint8_t *dst, ptrdiff_t dststride,
120                                 uint8_t *src, ptrdiff_t srcstride,
121                                 int h, int mx, int my);
122 void ff_put_vp8_bilinear8_v_msa(uint8_t *dst, ptrdiff_t dststride,
123                                 uint8_t *src, ptrdiff_t srcstride,
124                                 int h, int mx, int my);
125 void ff_put_vp8_bilinear8_hv_msa(uint8_t *dst, ptrdiff_t dststride,
126                                  uint8_t *src, ptrdiff_t srcstride,
127                                  int h, int mx, int my);
128
129 void ff_put_vp8_bilinear4_h_msa(uint8_t *dst, ptrdiff_t dststride,
130                                 uint8_t *src, ptrdiff_t srcstride,
131                                 int h, int mx, int my);
132 void ff_put_vp8_bilinear4_v_msa(uint8_t *dst, ptrdiff_t dststride,
133                                 uint8_t *src, ptrdiff_t srcstride,
134                                 int h, int mx, int my);
135 void ff_put_vp8_bilinear4_hv_msa(uint8_t *dst, ptrdiff_t dststride,
136                                  uint8_t *src, ptrdiff_t srcstride,
137                                  int h, int mx, int my);
138
139 /* loop filter */
140 void ff_vp8_h_loop_filter16_inner_msa(uint8_t *dst, ptrdiff_t stride,
141                                       int32_t e, int32_t i, int32_t h);
142 void ff_vp8_v_loop_filter16_inner_msa(uint8_t *dst, ptrdiff_t stride,
143                                       int32_t e, int32_t i, int32_t h);
144 void ff_vp8_h_loop_filter8uv_inner_msa(uint8_t *dst_u, uint8_t *dst_v,
145                                        ptrdiff_t stride,
146                                        int flim_e, int flim_i, int hev_thresh);
147 void ff_vp8_v_loop_filter8uv_inner_msa(uint8_t *dst_u, uint8_t *dst_v,
148                                        ptrdiff_t stride,
149                                        int flim_e, int flim_i, int hev_thresh);
150 void ff_vp8_h_loop_filter16_msa(uint8_t *dst, ptrdiff_t stride,
151                                 int flim_e, int flim_i, int hev_thresh);
152 void ff_vp8_v_loop_filter16_msa(uint8_t *dst, ptrdiff_t stride,
153                                 int flim_e, int flim_i, int hev_thresh);
154 void ff_vp8_h_loop_filter8uv_msa(uint8_t *dst_u, uint8_t *dst_v,
155                                  ptrdiff_t stride,
156                                  int flim_e, int flim_i, int hev_thresh);
157 void ff_vp8_v_loop_filter8uv_msa(uint8_t *dst_u, uint8_t *dst_v,
158                                  ptrdiff_t stride,
159                                  int flim_e, int flim_i, int hev_thresh);
160 void ff_vp8_h_loop_filter_simple_msa(uint8_t *dst, ptrdiff_t stride, int flim);
161 void ff_vp8_v_loop_filter_simple_msa(uint8_t *dst, ptrdiff_t stride, int flim);
162
163 /* Idct functions */
164 void ff_vp8_luma_dc_wht_msa(int16_t block[4][4][16], int16_t dc[16]);
165 void ff_vp8_idct_add_msa(uint8_t *dst, int16_t block[16], ptrdiff_t stride);
166 void ff_vp8_idct_dc_add_msa(uint8_t *dst, int16_t block[16], ptrdiff_t stride);
167 void ff_vp8_idct_dc_add4uv_msa(uint8_t *dst, int16_t block[4][16],
168                                ptrdiff_t stride);
169 void ff_vp8_idct_dc_add4y_msa(uint8_t *dst, int16_t block[4][16],
170                               ptrdiff_t stride);
171
172 #endif  // #ifndef AVCODEC_MIPS_VP8DSP_MIPS_H