1 /******************************************************************************
2 *
3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18 /**
19 *******************************************************************************
20 * @file
21 *  ihevc_padding.h
22 *
23 * @brief
24 *  Declarations for the fucntions defined in  ihevc_padding.c
25 *
26 * @author
27 *  Srinivas T
28 *
29 * @remarks
30 *  None
31 *
32 *******************************************************************************
33 */
34 #ifndef _IHEVC_PADDING_H_
35 #define _IHEVC_PADDING_H_
36 
37 /*****************************************************************************/
38 /* Function Declarations                                                     */
39 /*****************************************************************************/
40 
41 typedef void ihevc_pad_horz_luma_ft(
42                 UWORD8 *pu1_src,
43                 WORD32 src_strd,
44                 WORD32 ht,
45                 WORD32 wd,
46                 WORD32 pad_size);
47 
48 typedef void ihevc_hbd_pad_horz_luma_ft(
49                 UWORD16 *pu2_src,
50                 WORD32 src_strd,
51                 WORD32 ht,
52                 WORD32 wd,
53                 WORD32 pad_size);
54 
55 typedef void ihevc_pad_horz_chroma_ft(
56                 UWORD8 *pu1_src,
57                 WORD32 src_strd,
58                 WORD32 ht,
59                 WORD32 wd,
60                 WORD32 pad_size);
61 
62 typedef void ihevc_hbd_pad_horz_chroma_ft(
63                 UWORD16 *pu2_src,
64                 WORD32 src_strd,
65                 WORD32 ht,
66                 WORD32 wd,
67                 WORD32 pad_size);
68 
69 typedef void ihevc_pad_vert_ft(
70                 UWORD8 *pu1_src,
71                 WORD32 src_strd,
72                 WORD32 ht,
73                 WORD32 wd,
74                 WORD32 pad_size);
75 
76 typedef void ihevc_hbd_pad_vert_ft(
77                 UWORD16 *pu2_src,
78                 WORD32 src_strd,
79                 WORD32 ht,
80                 WORD32 wd,
81                 WORD32 pad_size);
82 
83 typedef void ihevc_pad_top_ft(UWORD8 *pu1_src,
84                               WORD32 src_strd,
85                               WORD32 wd,
86                               WORD32 pad_size);
87 
88 typedef void ihevc_hbd_pad_top_ft(UWORD16 *pu2_src,
89                                   WORD32 src_strd,
90                                   WORD32 wd,
91                                   WORD32 pad_size);
92 
93 typedef void ihevc_pad_bottom_ft(UWORD8 *pu1_src,
94                                  WORD32 src_strd,
95                                  WORD32 wd,
96                                  WORD32 pad_size);
97 
98 typedef void ihevc_hbd_pad_bottom_ft(UWORD16 *pu2_src,
99                                      WORD32 src_strd,
100                                      WORD32 wd,
101                                      WORD32 pad_size);
102 
103 typedef void ihevc_pad_left_luma_ft(UWORD8 *pu1_src,
104                                     WORD32 src_strd,
105                                     WORD32 ht,
106                                     WORD32 pad_size);
107 
108 typedef void ihevc_hbd_pad_left_luma_ft(UWORD16 *pu2_src,
109                                         WORD32 src_strd,
110                                         WORD32 ht,
111                                         WORD32 pad_size);
112 
113 typedef void ihevc_pad_left_chroma_ft(UWORD8 *pu1_src,
114                                       WORD32 src_strd,
115                                       WORD32 ht,
116                                       WORD32 pad_size);
117 
118 typedef void ihevc_hbd_pad_left_chroma_ft(UWORD16 *pu2_src,
119                                           WORD32 src_strd,
120                                           WORD32 ht,
121                                           WORD32 pad_size);
122 
123 typedef void ihevc_pad_right_luma_ft(UWORD8 *pu1_src,
124                                      WORD32 src_strd,
125                                      WORD32 ht,
126                                      WORD32 pad_size);
127 
128 typedef void ihevc_hbd_pad_right_luma_ft(UWORD16 *pu2_src,
129                                          WORD32 src_strd,
130                                          WORD32 ht,
131                                          WORD32 pad_size);
132 
133 typedef void ihevc_pad_right_chroma_ft(UWORD8 *pu1_src,
134                                        WORD32 src_strd,
135                                        WORD32 ht,
136                                        WORD32 pad_size);
137 
138 typedef void ihevc_hbd_pad_right_chroma_ft(UWORD16 *pu2_src,
139                                            WORD32 src_strd,
140                                            WORD32 ht,
141                                            WORD32 pad_size);
142 
143 /* C function declarations */
144 ihevc_pad_horz_luma_ft ihevc_pad_horz_luma;
145 ihevc_pad_horz_chroma_ft ihevc_pad_horz_chroma;
146 ihevc_pad_vert_ft ihevc_pad_vert;
147 ihevc_pad_top_ft ihevc_pad_top;
148 ihevc_pad_bottom_ft ihevc_pad_bottom;
149 ihevc_pad_left_luma_ft ihevc_pad_left_luma;
150 ihevc_pad_left_chroma_ft ihevc_pad_left_chroma;
151 ihevc_pad_right_luma_ft ihevc_pad_right_luma;
152 ihevc_pad_right_chroma_ft ihevc_pad_right_chroma;
153 
154 ihevc_hbd_pad_horz_luma_ft ihevc_hbd_pad_horz_luma;
155 ihevc_hbd_pad_horz_chroma_ft ihevc_hbd_pad_horz_chroma;
156 ihevc_hbd_pad_vert_ft ihevc_hbd_pad_vert;
157 ihevc_hbd_pad_top_ft ihevc_hbd_pad_top;
158 ihevc_hbd_pad_bottom_ft ihevc_hbd_pad_bottom;
159 ihevc_hbd_pad_left_luma_ft ihevc_hbd_pad_left_luma;
160 ihevc_hbd_pad_left_chroma_ft ihevc_hbd_pad_left_chroma;
161 ihevc_hbd_pad_right_luma_ft ihevc_hbd_pad_right_luma;
162 ihevc_hbd_pad_right_chroma_ft ihevc_hbd_pad_right_chroma;
163 
164 /* A9 Q function declarations */
165 ihevc_pad_horz_luma_ft ihevc_pad_horz_luma_a9q;
166 ihevc_pad_horz_chroma_ft ihevc_pad_horz_chroma_a9q;
167 ihevc_pad_vert_ft ihevc_pad_vert_a9q;
168 ihevc_pad_top_ft ihevc_pad_top_a9q;
169 ihevc_pad_bottom_ft ihevc_pad_bottom_a9q;
170 ihevc_pad_left_luma_ft ihevc_pad_left_luma_a9q;
171 ihevc_pad_left_chroma_ft ihevc_pad_left_chroma_a9q;
172 ihevc_pad_right_luma_ft ihevc_pad_right_luma_a9q;
173 ihevc_pad_right_chroma_ft ihevc_pad_right_chroma_a9q;
174 
175 /* A9 a function declarations */
176 ihevc_pad_horz_luma_ft ihevc_pad_horz_luma_a9a;
177 ihevc_pad_horz_chroma_ft ihevc_pad_horz_chroma_a9a;
178 ihevc_pad_vert_ft ihevc_pad_vert_a9a;
179 ihevc_pad_top_ft ihevc_pad_top_a9a;
180 ihevc_pad_bottom_ft ihevc_pad_bottom_a9a;
181 ihevc_pad_left_luma_ft ihevc_pad_left_luma_a9a;
182 ihevc_pad_left_chroma_ft ihevc_pad_left_chroma_a9a;
183 ihevc_pad_right_luma_ft ihevc_pad_right_luma_a9a;
184 ihevc_pad_right_chroma_ft ihevc_pad_right_chroma_a9a;
185 
186 /* NEONINTR function declarations */
187 ihevc_pad_horz_luma_ft ihevc_pad_horz_luma_neonintr;
188 ihevc_pad_horz_chroma_ft ihevc_pad_horz_chroma_neonintr;
189 ihevc_pad_vert_ft ihevc_pad_vert_neonintr;
190 ihevc_pad_top_ft ihevc_pad_top_neonintr;
191 ihevc_pad_bottom_ft ihevc_pad_bottom_neonintr;
192 /*SSSE3 functions declarations */
193 ihevc_pad_left_luma_ft ihevc_pad_left_luma_ssse3;
194 ihevc_pad_left_chroma_ft ihevc_pad_left_chroma_ssse3;
195 ihevc_pad_right_luma_ft ihevc_pad_right_luma_ssse3;
196 ihevc_pad_right_chroma_ft ihevc_pad_right_chroma_ssse3;
197 
198 /* armv8 function declarations */
199 ihevc_pad_horz_luma_ft ihevc_pad_horz_luma_av8;
200 ihevc_pad_horz_chroma_ft ihevc_pad_horz_chroma_av8;
201 ihevc_pad_vert_ft ihevc_pad_vert_av8;
202 ihevc_pad_top_ft ihevc_pad_top_av8;
203 ihevc_pad_bottom_ft ihevc_pad_bottom_av8;
204 ihevc_pad_left_luma_ft ihevc_pad_left_luma_av8;
205 ihevc_pad_left_chroma_ft ihevc_pad_left_chroma_av8;
206 ihevc_pad_right_luma_ft ihevc_pad_right_luma_av8;
207 ihevc_pad_right_chroma_ft ihevc_pad_right_chroma_av8;
208 
209 #endif /*_IHEVC_PADDING_H_*/
210