• 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 #include "ihevc_func_types.h"
40 
41 #define    INTER_PRED_LUMA_COPY                     C
42 #define    INTER_PRED_LUMA_HORZ                     C
43 #define    INTER_PRED_LUMA_VERT                     C
44 #define    INTER_PRED_LUMA_COPY_W16OUT              C
45 #define    INTER_PRED_LUMA_HORZ_W16OUT              C
46 
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    PAD_VERT                                 C
68 #define    PAD_HORZ                                 C
69 #define    PAD_LEFT_LUMA                            C
70 #define    PAD_LEFT_CHROMA                          C
71 #define    PAD_RIGHT_LUMA                           C
72 #define    PAD_RIGHT_CHROMA                         C
73 
74 #define     DEBLOCKING_ASM                          C
75 #define     DEBLK_LUMA_HORZ                         C
76 #define     DEBLK_LUMA_VERT                         C
77 #define     DEBLK_CHROMA_HORZ                       C
78 #define     DEBLK_CHROMA_VERT                       C
79 
80 #define     SAO_BAND_OFFSET_LUMA                    C
81 #define     SAO_BAND_OFFSET_CHROMA                  C
82 #define     SAO_EDGE_OFFSET_CLASS0_LUMA             C
83 #define     SAO_EDGE_OFFSET_CLASS1_LUMA             C
84 #define     SAO_EDGE_OFFSET_CLASS2_LUMA             C
85 #define     SAO_EDGE_OFFSET_CLASS3_LUMA             C
86 #define     SAO_EDGE_OFFSET_CLASS0_CHROMA           C
87 #define     SAO_EDGE_OFFSET_CLASS1_CHROMA           C
88 #define     SAO_EDGE_OFFSET_CLASS2_CHROMA           C
89 #define     SAO_EDGE_OFFSET_CLASS3_CHROMA           C
90 
91 #define     INTRA_PRED_LUMA_REF_SUBSTITUTION        C
92 #define     INTRA_PRED_REF_FILTERING                 C
93 #define     INTRA_PRED_LUMA_PLANAR                  C
94 #define     INTRA_PRED_LUMA_DC                      C
95 #define     INTRA_PRED_LUMA_HORZ                    C
96 #define     INTRA_PRED_LUMA_VER                     C
97 #define     INTRA_PRED_LUMA_MODE_2                  C
98 #define     INTRA_PRED_LUMA_MODE_18_34              C
99 #define     INTRA_PRED_LUMA_MODE_3_T0_9             C
100 #define     INTRA_PRED_LUMA_MODE_11_T0_17           C
101 #define     INTRA_PRED_LUMA_MODE_19_T0_25           C
102 #define     INTRA_PRED_LUMA_MODE_27_T0_33           C
103 
104 #define     INTRA_PRED_CHROMA_PLANAR                C
105 #define     INTRA_PRED_CHROMA_DC                    C
106 #define     INTRA_PRED_CHROMA_HOR                   C
107 #define     INTRA_PRED_CHROMA_VER                   C
108 #define     INTRA_PRED_CHROMA_MODE_2                C
109 #define     INTRA_PRED_CHROMA_18_34                 C
110 #define     INTRA_PRED_CHROMA_3_T0_9                C
111 #define     INTRA_PRED_CHROMA_11_T0_17              C
112 #define     INTRA_PRED_CHROMA_19_T0_25              C
113 #define     INTRA_PRED_CHROMA_27_T0_33              C
114 #define     INTRA_PRED_CHROMA_REF_SUBSTITUTION      C
115 
116 /* Forward transform functions */
117 /* Luma */
118 #define RESI_TRANS_QUANT_4X4_TTYPE1                 C
119 #define RESI_TRANS_QUANT_4X4                        C
120 #define RESI_TRANS_QUANT_8X8                        C
121 #define RESI_TRANS_QUANT_16X16                      C
122 #define RESI_TRANS_QUANT_32X32                      C
123 
124 #define RESI_QUANT_4X4_TTYPE1                       C
125 #define RESI_QUANT_4X4                              C
126 #define RESI_QUANT_8X8                              C
127 #define RESI_QUANT_16X16                            C
128 #define RESI_QUANT_32X32                            C
129 
130 #define RESI_TRANS_4X4_TTYPE1                       C
131 #define RESI_TRANS_4X4                              C
132 #define RESI_TRANS_8X8                              C
133 #define RESI_TRANS_16X16                            C
134 #define RESI_TRANS_32X32                            C
135 
136 #define RESI_4X4_TTYPE1                             C
137 #define RESI_4X4                                    C
138 #define RESI_8X8                                    C
139 #define RESI_16X16                                  C
140 #define RESI_32X32                                  C
141 
142 #define TRANS_4X4_TTYPE1                            C
143 #define TRANS_4X4                                   C
144 #define TRANS_8X8                                   C
145 #define TRANS_16X16                                 C
146 #define TRANS_32X32                                 C
147 
148 #define QUANT_4X4_TTYPE1                            C
149 #define QUANT_4X4                                   C
150 #define QUANT_8X8                                   C
151 #define QUANT_16X16                                 C
152 #define QUANT_32X32                                 C
153 
154 /* Chroma interleaved*/
155 #define CHROMA_RESI_TRANS_QUANT_4X4                        C
156 #define CHROMA_RESI_TRANS_QUANT_8X8                        C
157 #define CHROMA_RESI_TRANS_QUANT_16X16                      C
158 
159 #define CHROMA_RESI_QUANT_4X4                              C
160 #define CHROMA_RESI_QUANT_8X8                              C
161 #define CHROMA_RESI_QUANT_16X16                            C
162 
163 #define CHROMA_RESI_TRANS_4X4                              C
164 #define CHROMA_RESI_TRANS_8X8                              C
165 #define CHROMA_RESI_TRANS_16X16                            C
166 
167 #define CHROMA_RESI_4X4                                    C
168 #define CHROMA_RESI_8X8                                    C
169 #define CHROMA_RESI_16X16                                  C
170 
171 /* Inverse transform functions */
172 /* Luma */
173 #define IQUANT_ITRANS_RECON_4X4_TTYPE1              C
174 #define IQUANT_ITRANS_RECON_4X4                     C
175 #define IQUANT_ITRANS_RECON_8X8                     C
176 #define IQUANT_ITRANS_RECON_16X16                   C
177 #define IQUANT_ITRANS_RECON_32X32                   C
178 
179 #define IQUANT_RECON_4X4_TTYPE1                     C
180 #define IQUANT_RECON_4X4                            C
181 #define IQUANT_RECON_8X8                            C
182 #define IQUANT_RECON_16X16                          C
183 #define IQUANT_RECON_32X32                          C
184 
185 #define ITRANS_RECON_4X4_TTYPE1                     C
186 #define ITRANS_RECON_4X4                            C
187 #define ITRANS_RECON_8X8                            C
188 #define ITRANS_RECON_16X16                          C
189 #define ITRANS_RECON_32X32                          C
190 
191 #define RECON_4X4_TTYPE1                            C
192 #define RECON_4X4                                   C
193 #define RECON_8X8                                   C
194 #define RECON_16X16                                 C
195 #define RECON_32X32                                 C
196 
197 #define ITRANS_4X4_TTYPE1                           C
198 #define ITRANS_4X4                                  C
199 #define ITRANS_8X8                                  C
200 #define ITRANS_16X16                                C
201 #define ITRANS_32X32                                C
202 
203 /* Chroma interleaved */
204 #define CHROMA_IQUANT_ITRANS_RECON_4X4                     C
205 #define CHROMA_IQUANT_ITRANS_RECON_8X8                     C
206 #define CHROMA_IQUANT_ITRANS_RECON_16X16                   C
207 
208 #define CHROMA_IQUANT_RECON_4X4                            C
209 #define CHROMA_IQUANT_RECON_8X8                            C
210 #define CHROMA_IQUANT_RECON_16X16                          C
211 
212 #define CHROMA_ITRANS_RECON_4X4                            C
213 #define CHROMA_ITRANS_RECON_8X8                            C
214 #define CHROMA_ITRANS_RECON_16X16                          C
215 
216 #define CHROMA_RECON_4X4                                   C
217 #define CHROMA_RECON_8X8                                   C
218 #define CHROMA_RECON_16X16                                 C
219 
220 #define IHEVC_MEMCPY                                C
221 #define IHEVC_MEMSET                                C
222 #define IHEVC_MEMSET_16BIT                          C
223 #define IHEVC_MEMCPY_MUL_8                          C
224 #define IHEVC_MEMSET_MUL_8                          C
225 #define IHEVC_MEMSET_16BIT_MUL_8                    C
226 
227 #endif  /* __IHEVC_FUNC_SELECTOR_H__ */
228