• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_func_selector.h
22 *
23 * @brief
24 *  For each function decide whether to use C function,  or Neon intrinsics
25 * or Cortex A8 intrinsics or Neon  assembly or cortex a8 assembly
26 *
27 * @author
28 *  Harish
29 *
30 * @remarks
31 *  None
32 *
33 *******************************************************************************
34 */
35 
36 #ifndef __IHEVC_FUNC_SELECTOR_H__
37 #define __IHEVC_FUNC_SELECTOR_H__
38 
39 
40 #include "ihevc_func_types.h"
41 
42 #define     INTER_PRED_LUMA_COPY                    C
43 #define     INTER_PRED_LUMA_HORZ                    C
44 #define     INTER_PRED_LUMA_VERT                    C
45 #define     INTER_PRED_LUMA_COPY_W16OUT             C
46 #define     INTER_PRED_LUMA_HORZ_W16OUT             C
47 #define     INTER_PRED_LUMA_VERT_W16OUT             C
48 #define     INTER_PRED_LUMA_VERT_W16INP             C
49 #define     INTER_PRED_LUMA_VERT_W16INP_W16OUT      C
50 
51 #define     INTER_PRED_CHROMA_COPY                  C
52 #define     INTER_PRED_CHROMA_HORZ                  C
53 #define     INTER_PRED_CHROMA_VERT                  C
54 #define     INTER_PRED_CHROMA_COPY_W16OUT           C
55 #define     INTER_PRED_CHROMA_HORZ_W16OUT           C
56 #define     INTER_PRED_CHROMA_VERT_W16OUT           C
57 #define     INTER_PRED_CHROMA_VERT_W16INP           C
58 #define     INTER_PRED_CHROMA_VERT_W16INP_W16OUT    C
59 
60 #define     WEIGHTED_PRED_UNI                       C
61 #define     WEIGHTED_PRED_BI                        C
62 #define     WEIGHTED_PRED_BI_DEFAULT                C
63 #define    WEIGHTED_PRED_CHROMA_UNI                 C
64 #define    WEIGHTED_PRED_CHROMA_BI                  C
65 #define    WEIGHTED_PRED_CHROMA_BI_DEFAULT          C
66 
67 #define     INTRA_PRED_LUMA_REF_SUBSTITUTION        C
68 #define     INTRA_PRED_REF_FILTERING                C
69 #define     INTRA_PRED_LUMA_PLANAR                  C
70 #define     INTRA_PRED_LUMA_DC                      C
71 #define     INTRA_PRED_LUMA_HORZ                    C
72 #define     INTRA_PRED_LUMA_VER                     C
73 #define     INTRA_PRED_LUMA_MODE_2                  C
74 #define     INTRA_PRED_LUMA_MODE_18_34              C
75 #define     INTRA_PRED_LUMA_MODE_3_TO_9             C
76 #define     INTRA_PRED_LUMA_MODE_11_TO_17           C
77 #define     INTRA_PRED_LUMA_MODE_19_TO_25           C
78 #define     INTRA_PRED_LUMA_MODE_27_TO_33           C
79 
80 
81 #define     INTRA_PRED_CHROMA_PLANAR                C
82 #define     INTRA_PRED_CHROMA_DC                    C
83 #define     INTRA_PRED_CHROMA_HOR                   C
84 #define     INTRA_PRED_CHROMA_VER                   C
85 #define     INTRA_PRED_CHROMA_MODE_2                C
86 #define     INTRA_PRED_CHROMA_18_34                 C
87 #define     INTRA_PRED_CHROMA_3_T0_9                C
88 #define     INTRA_PRED_CHROMA_11_T0_17              C
89 #define     INTRA_PRED_CHROMA_19_T0_25              C
90 #define     INTRA_PRED_CHROMA_27_T0_33              C
91 #define     INTRA_PRED_CHROMA_REF_SUBSTITUTION      C
92 
93 #define     PAD_VERT                                C
94 #define     PAD_HORZ                                C
95 
96 #define     DEBLK_LUMA_HORZ                         C
97 #define     DEBLK_LUMA_VERT                         C
98 #define     DEBLK_CHROMA_HORZ                       C
99 #define     DEBLK_CHROMA_VERT                       C
100 
101 #define     SAO_BAND_OFFSET_LUMA                    C
102 #define     SAO_BAND_OFFSET_CHROMA                  C
103 #define     SAO_EDGE_OFFSET_CLASS0_LUMA             C
104 #define     SAO_EDGE_OFFSET_CLASS1_LUMA             C
105 #define     SAO_EDGE_OFFSET_CLASS2_LUMA             C
106 #define     SAO_EDGE_OFFSET_CLASS3_LUMA             C
107 #define     SAO_EDGE_OFFSET_CLASS0_CHROMA           C
108 #define     SAO_EDGE_OFFSET_CLASS1_CHROMA           C
109 #define     SAO_EDGE_OFFSET_CLASS2_CHROMA           C
110 #define     SAO_EDGE_OFFSET_CLASS3_CHROMA           C
111 
112 /* Forward transform functions */
113 /* Luma */
114 #define RESI_TRANS_QUANT_4X4_TTYPE1                 C
115 #define RESI_TRANS_QUANT_4X4                        C
116 #define RESI_TRANS_QUANT_8X8                        C
117 #define RESI_TRANS_QUANT_16X16                      C
118 #define RESI_TRANS_QUANT_32X32                      C
119 
120 #define RESI_QUANT_4X4_TTYPE1                       C
121 #define RESI_QUANT_4X4                              C
122 #define RESI_QUANT_8X8                              C
123 #define RESI_QUANT_16X16                            C
124 #define RESI_QUANT_32X32                            C
125 
126 #define RESI_TRANS_4X4_TTYPE1                       C
127 #define RESI_TRANS_4X4                              C
128 #define RESI_TRANS_8X8                              C
129 #define RESI_TRANS_16X16                            C
130 #define RESI_TRANS_32X32                            C
131 
132 #define RESI_4X4_TTYPE1                             C
133 #define RESI_4X4                                    C
134 #define RESI_8X8                                    C
135 #define RESI_16X16                                  C
136 #define RESI_32X32                                  C
137 
138 #define TRANS_4X4_TTYPE1                            C
139 #define TRANS_4X4                                   C
140 #define TRANS_8X8                                   C
141 #define TRANS_16X16                                 C
142 #define TRANS_32X32                                 C
143 
144 #define QUANT_4X4_TTYPE1                            C
145 #define QUANT_4X4                                   C
146 #define QUANT_8X8                                   C
147 #define QUANT_16X16                                 C
148 #define QUANT_32X32                                 C
149 
150 /* Chroma interleaved*/
151 #define CHROMA_RESI_TRANS_QUANT_4X4                        C
152 #define CHROMA_RESI_TRANS_QUANT_8X8                        C
153 #define CHROMA_RESI_TRANS_QUANT_16X16                      C
154 
155 #define CHROMA_RESI_QUANT_4X4                              C
156 #define CHROMA_RESI_QUANT_8X8                              C
157 #define CHROMA_RESI_QUANT_16X16                            C
158 
159 #define CHROMA_RESI_TRANS_4X4                              C
160 #define CHROMA_RESI_TRANS_8X8                              C
161 #define CHROMA_RESI_TRANS_16X16                            C
162 
163 #define CHROMA_RESI_4X4                                    C
164 #define CHROMA_RESI_8X8                                    C
165 #define CHROMA_RESI_16X16                                  C
166 
167 /* Inverse transform functions */
168 /* Luma */
169 #define IQUANT_ITRANS_RECON_4X4_TTYPE1              C
170 #define IQUANT_ITRANS_RECON_4X4                     C
171 #define IQUANT_ITRANS_RECON_8X8                     C
172 #define IQUANT_ITRANS_RECON_16X16                   C
173 #define IQUANT_ITRANS_RECON_32X32                   C
174 
175 #define IQUANT_RECON_4X4_TTYPE1                     C
176 #define IQUANT_RECON_4X4                            C
177 #define IQUANT_RECON_8X8                            C
178 #define IQUANT_RECON_16X16                          C
179 #define IQUANT_RECON_32X32                          C
180 
181 #define ITRANS_RECON_4X4_TTYPE1                     C
182 #define ITRANS_RECON_4X4                            C
183 #define ITRANS_RECON_8X8                            C
184 #define ITRANS_RECON_16X16                          C
185 #define ITRANS_RECON_32X32                          C
186 
187 #define RECON_4X4_TTYPE1                            C
188 #define RECON_4X4                                   C
189 #define RECON_8X8                                   C
190 #define RECON_16X16                                 C
191 #define RECON_32X32                                 C
192 
193 #define ITRANS_4X4_TTYPE1                           C
194 #define ITRANS_4X4                                  C
195 #define ITRANS_8X8                                  C
196 #define ITRANS_16X16                                C
197 #define ITRANS_32X32                                C
198 
199 /* Chroma interleaved */
200 #define CHROMA_IQUANT_ITRANS_RECON_4X4                     C
201 #define CHROMA_IQUANT_ITRANS_RECON_8X8                     C
202 #define CHROMA_IQUANT_ITRANS_RECON_16X16                   C
203 
204 #define CHROMA_IQUANT_RECON_4X4                            C
205 #define CHROMA_IQUANT_RECON_8X8                            C
206 #define CHROMA_IQUANT_RECON_16X16                          C
207 
208 #define CHROMA_ITRANS_RECON_4X4                            C
209 #define CHROMA_ITRANS_RECON_8X8                            C
210 #define CHROMA_ITRANS_RECON_16X16                          C
211 
212 #define CHROMA_RECON_4X4                                   C
213 #define CHROMA_RECON_8X8                                   C
214 #define CHROMA_RECON_16X16                                 C
215 
216 #define IHEVC_MEMCPY                                C
217 #define IHEVC_MEMSET                                C
218 #define IHEVC_MEMSET_16BIT                          C
219 #define IHEVC_MEMCPY_MUL_8                          C
220 #define IHEVC_MEMSET_MUL_8                          C
221 #define IHEVC_MEMSET_16BIT_MUL_8                    C
222 
223 #endif /* __IHEVC_FUNC_SELECTOR_H__ */
224 
225