summaryrefslogtreecommitdiffstats
path: root/common/x86/ihevc_func_selector.h
blob: 52023c22e9b2f7a2ac086342a5c4d3769c54f2c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
/******************************************************************************
*
* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
/**
*******************************************************************************
* @file
*  ihevc_func_selector.h
*
* @brief
*  For each function decide whether to use C function,  or Neon intrinsics
* or Cortex A8 intrinsics or Neon  assembly or cortex a8 assembly
*
* @author
*  Harish
*
* @remarks
*  None
*
*******************************************************************************
*/

#ifndef __IHEVC_FUNC_SELECTOR_H__
#define __IHEVC_FUNC_SELECTOR_H__


#include "ihevc_func_types.h"

#define     INTER_PRED_LUMA_COPY                    C
#define     INTER_PRED_LUMA_HORZ                    C
#define     INTER_PRED_LUMA_VERT                    C
#define     INTER_PRED_LUMA_COPY_W16OUT             C
#define     INTER_PRED_LUMA_HORZ_W16OUT             C
#define     INTER_PRED_LUMA_VERT_W16OUT             C
#define     INTER_PRED_LUMA_VERT_W16INP             C
#define     INTER_PRED_LUMA_VERT_W16INP_W16OUT      C

#define     INTER_PRED_CHROMA_COPY                  C
#define     INTER_PRED_CHROMA_HORZ                  C
#define     INTER_PRED_CHROMA_VERT                  C
#define     INTER_PRED_CHROMA_COPY_W16OUT           C
#define     INTER_PRED_CHROMA_HORZ_W16OUT           C
#define     INTER_PRED_CHROMA_VERT_W16OUT           C
#define     INTER_PRED_CHROMA_VERT_W16INP           C
#define     INTER_PRED_CHROMA_VERT_W16INP_W16OUT    C

#define     WEIGHTED_PRED_UNI                       C
#define     WEIGHTED_PRED_BI                        C
#define     WEIGHTED_PRED_BI_DEFAULT                C
#define    WEIGHTED_PRED_CHROMA_UNI                 C
#define    WEIGHTED_PRED_CHROMA_BI                  C
#define    WEIGHTED_PRED_CHROMA_BI_DEFAULT          C

#define     INTRA_PRED_LUMA_REF_SUBSTITUTION        C
#define     INTRA_PRED_REF_FILTERING                C
#define     INTRA_PRED_LUMA_PLANAR                  C
#define     INTRA_PRED_LUMA_DC                      C
#define     INTRA_PRED_LUMA_HORZ                    C
#define     INTRA_PRED_LUMA_VER                     C
#define     INTRA_PRED_LUMA_MODE_2                  C
#define     INTRA_PRED_LUMA_MODE_18_34              C
#define     INTRA_PRED_LUMA_MODE_3_TO_9             C
#define     INTRA_PRED_LUMA_MODE_11_TO_17           C
#define     INTRA_PRED_LUMA_MODE_19_TO_25           C
#define     INTRA_PRED_LUMA_MODE_27_TO_33           C


#define     INTRA_PRED_CHROMA_PLANAR                C
#define     INTRA_PRED_CHROMA_DC                    C
#define     INTRA_PRED_CHROMA_HOR                   C
#define     INTRA_PRED_CHROMA_VER                   C
#define     INTRA_PRED_CHROMA_MODE_2                C
#define     INTRA_PRED_CHROMA_18_34                 C
#define     INTRA_PRED_CHROMA_3_T0_9                C
#define     INTRA_PRED_CHROMA_11_T0_17              C
#define     INTRA_PRED_CHROMA_19_T0_25              C
#define     INTRA_PRED_CHROMA_27_T0_33              C
#define     INTRA_PRED_CHROMA_REF_SUBSTITUTION      C

#define     PAD_VERT                                C
#define     PAD_HORZ                                C

#define     DEBLK_LUMA_HORZ                         C
#define     DEBLK_LUMA_VERT                         C
#define     DEBLK_CHROMA_HORZ                       C
#define     DEBLK_CHROMA_VERT                       C

#define     SAO_BAND_OFFSET_LUMA                    C
#define     SAO_BAND_OFFSET_CHROMA                  C
#define     SAO_EDGE_OFFSET_CLASS0_LUMA             C
#define     SAO_EDGE_OFFSET_CLASS1_LUMA             C
#define     SAO_EDGE_OFFSET_CLASS2_LUMA             C
#define     SAO_EDGE_OFFSET_CLASS3_LUMA             C
#define     SAO_EDGE_OFFSET_CLASS0_CHROMA           C
#define     SAO_EDGE_OFFSET_CLASS1_CHROMA           C
#define     SAO_EDGE_OFFSET_CLASS2_CHROMA           C
#define     SAO_EDGE_OFFSET_CLASS3_CHROMA           C

/* Forward transform functions */
/* Luma */
#define RESI_TRANS_QUANT_4X4_TTYPE1                 C
#define RESI_TRANS_QUANT_4X4                        C
#define RESI_TRANS_QUANT_8X8                        C
#define RESI_TRANS_QUANT_16X16                      C
#define RESI_TRANS_QUANT_32X32                      C

#define RESI_QUANT_4X4_TTYPE1                       C
#define RESI_QUANT_4X4                              C
#define RESI_QUANT_8X8                              C
#define RESI_QUANT_16X16                            C
#define RESI_QUANT_32X32                            C

#define RESI_TRANS_4X4_TTYPE1                       C
#define RESI_TRANS_4X4                              C
#define RESI_TRANS_8X8                              C
#define RESI_TRANS_16X16                            C
#define RESI_TRANS_32X32                            C

#define RESI_4X4_TTYPE1                             C
#define RESI_4X4                                    C
#define RESI_8X8                                    C
#define RESI_16X16                                  C
#define RESI_32X32                                  C

#define TRANS_4X4_TTYPE1                            C
#define TRANS_4X4                                   C
#define TRANS_8X8                                   C
#define TRANS_16X16                                 C
#define TRANS_32X32                                 C

#define QUANT_4X4_TTYPE1                            C
#define QUANT_4X4                                   C
#define QUANT_8X8                                   C
#define QUANT_16X16                                 C
#define QUANT_32X32                                 C

/* Chroma interleaved*/
#define CHROMA_RESI_TRANS_QUANT_4X4                        C
#define CHROMA_RESI_TRANS_QUANT_8X8                        C
#define CHROMA_RESI_TRANS_QUANT_16X16                      C

#define CHROMA_RESI_QUANT_4X4                              C
#define CHROMA_RESI_QUANT_8X8                              C
#define CHROMA_RESI_QUANT_16X16                            C

#define CHROMA_RESI_TRANS_4X4                              C
#define CHROMA_RESI_TRANS_8X8                              C
#define CHROMA_RESI_TRANS_16X16                            C

#define CHROMA_RESI_4X4                                    C
#define CHROMA_RESI_8X8                                    C
#define CHROMA_RESI_16X16                                  C

/* Inverse transform functions */
/* Luma */
#define IQUANT_ITRANS_RECON_4X4_TTYPE1              C
#define IQUANT_ITRANS_RECON_4X4                     C
#define IQUANT_ITRANS_RECON_8X8                     C
#define IQUANT_ITRANS_RECON_16X16                   C
#define IQUANT_ITRANS_RECON_32X32                   C

#define IQUANT_RECON_4X4_TTYPE1                     C
#define IQUANT_RECON_4X4                            C
#define IQUANT_RECON_8X8                            C
#define IQUANT_RECON_16X16                          C
#define IQUANT_RECON_32X32                          C

#define ITRANS_RECON_4X4_TTYPE1                     C
#define ITRANS_RECON_4X4                            C
#define ITRANS_RECON_8X8                            C
#define ITRANS_RECON_16X16                          C
#define ITRANS_RECON_32X32                          C

#define RECON_4X4_TTYPE1                            C
#define RECON_4X4                                   C
#define RECON_8X8                                   C
#define RECON_16X16                                 C
#define RECON_32X32                                 C

#define ITRANS_4X4_TTYPE1                           C
#define ITRANS_4X4                                  C
#define ITRANS_8X8                                  C
#define ITRANS_16X16                                C
#define ITRANS_32X32                                C

/* Chroma interleaved */
#define CHROMA_IQUANT_ITRANS_RECON_4X4                     C
#define CHROMA_IQUANT_ITRANS_RECON_8X8                     C
#define CHROMA_IQUANT_ITRANS_RECON_16X16                   C

#define CHROMA_IQUANT_RECON_4X4                            C
#define CHROMA_IQUANT_RECON_8X8                            C
#define CHROMA_IQUANT_RECON_16X16                          C

#define CHROMA_ITRANS_RECON_4X4                            C
#define CHROMA_ITRANS_RECON_8X8                            C
#define CHROMA_ITRANS_RECON_16X16                          C

#define CHROMA_RECON_4X4                                   C
#define CHROMA_RECON_8X8                                   C
#define CHROMA_RECON_16X16                                 C

#define IHEVC_MEMCPY                                C
#define IHEVC_MEMSET                                C
#define IHEVC_MEMSET_16BIT                          C
#define IHEVC_MEMCPY_MUL_8                          C
#define IHEVC_MEMSET_MUL_8                          C
#define IHEVC_MEMSET_16BIT_MUL_8                    C

#endif /* __IHEVC_FUNC_SELECTOR_H__ */