xref: /aosp_15_r20/external/libaom/av1/encoder/enc_enums.h (revision 77c1e3ccc04c968bd2bc212e87364f250e820521)
1 /*
2  * Copyright (c) 2019, Alliance for Open Media. All rights reserved.
3  *
4  * This source code is subject to the terms of the BSD 2 Clause License and
5  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6  * was not distributed with this source code in the LICENSE file, you can
7  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8  * Media Patent License 1.0 was not distributed with this source code in the
9  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10  */
11 
12 #ifndef AOM_AV1_ENCODER_ENC_ENUMS_H_
13 #define AOM_AV1_ENCODER_ENC_ENUMS_H_
14 
15 #include "aom_ports/mem.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #define MAX_NUM_THREADS 64
22 
23 // This enumerator type needs to be kept aligned with the mode order in
24 // const MODE_DEFINITION av1_mode_defs[MAX_MODES] used in the rd code.
25 enum {
26   THR_NEARESTMV,
27   THR_NEARESTL2,
28   THR_NEARESTL3,
29   THR_NEARESTB,
30   THR_NEARESTA2,
31   THR_NEARESTA,
32   THR_NEARESTG,
33 
34   THR_NEWMV,
35   THR_NEWL2,
36   THR_NEWL3,
37   THR_NEWB,
38   THR_NEWA2,
39   THR_NEWA,
40   THR_NEWG,
41 
42   THR_NEARMV,
43   THR_NEARL2,
44   THR_NEARL3,
45   THR_NEARB,
46   THR_NEARA2,
47   THR_NEARA,
48   THR_NEARG,
49 
50   THR_GLOBALMV,
51   THR_GLOBALL2,
52   THR_GLOBALL3,
53   THR_GLOBALB,
54   THR_GLOBALA2,
55   THR_GLOBALA,
56   THR_GLOBALG,
57 
58   THR_COMP_NEAREST_NEARESTLA,
59   THR_COMP_NEAREST_NEARESTL2A,
60   THR_COMP_NEAREST_NEARESTL3A,
61   THR_COMP_NEAREST_NEARESTGA,
62   THR_COMP_NEAREST_NEARESTLB,
63   THR_COMP_NEAREST_NEARESTL2B,
64   THR_COMP_NEAREST_NEARESTL3B,
65   THR_COMP_NEAREST_NEARESTGB,
66   THR_COMP_NEAREST_NEARESTLA2,
67   THR_COMP_NEAREST_NEARESTL2A2,
68   THR_COMP_NEAREST_NEARESTL3A2,
69   THR_COMP_NEAREST_NEARESTGA2,
70   THR_COMP_NEAREST_NEARESTLL2,
71   THR_COMP_NEAREST_NEARESTLL3,
72   THR_COMP_NEAREST_NEARESTLG,
73   THR_COMP_NEAREST_NEARESTBA,
74 
75   THR_COMP_NEAR_NEARLB,
76   THR_COMP_NEW_NEWLB,
77   THR_COMP_NEW_NEARESTLB,
78   THR_COMP_NEAREST_NEWLB,
79   THR_COMP_NEW_NEARLB,
80   THR_COMP_NEAR_NEWLB,
81   THR_COMP_GLOBAL_GLOBALLB,
82 
83   THR_COMP_NEAR_NEARLA,
84   THR_COMP_NEW_NEWLA,
85   THR_COMP_NEW_NEARESTLA,
86   THR_COMP_NEAREST_NEWLA,
87   THR_COMP_NEW_NEARLA,
88   THR_COMP_NEAR_NEWLA,
89   THR_COMP_GLOBAL_GLOBALLA,
90 
91   THR_COMP_NEAR_NEARL2A,
92   THR_COMP_NEW_NEWL2A,
93   THR_COMP_NEW_NEARESTL2A,
94   THR_COMP_NEAREST_NEWL2A,
95   THR_COMP_NEW_NEARL2A,
96   THR_COMP_NEAR_NEWL2A,
97   THR_COMP_GLOBAL_GLOBALL2A,
98 
99   THR_COMP_NEAR_NEARL3A,
100   THR_COMP_NEW_NEWL3A,
101   THR_COMP_NEW_NEARESTL3A,
102   THR_COMP_NEAREST_NEWL3A,
103   THR_COMP_NEW_NEARL3A,
104   THR_COMP_NEAR_NEWL3A,
105   THR_COMP_GLOBAL_GLOBALL3A,
106 
107   THR_COMP_NEAR_NEARGA,
108   THR_COMP_NEW_NEWGA,
109   THR_COMP_NEW_NEARESTGA,
110   THR_COMP_NEAREST_NEWGA,
111   THR_COMP_NEW_NEARGA,
112   THR_COMP_NEAR_NEWGA,
113   THR_COMP_GLOBAL_GLOBALGA,
114 
115   THR_COMP_NEAR_NEARL2B,
116   THR_COMP_NEW_NEWL2B,
117   THR_COMP_NEW_NEARESTL2B,
118   THR_COMP_NEAREST_NEWL2B,
119   THR_COMP_NEW_NEARL2B,
120   THR_COMP_NEAR_NEWL2B,
121   THR_COMP_GLOBAL_GLOBALL2B,
122 
123   THR_COMP_NEAR_NEARL3B,
124   THR_COMP_NEW_NEWL3B,
125   THR_COMP_NEW_NEARESTL3B,
126   THR_COMP_NEAREST_NEWL3B,
127   THR_COMP_NEW_NEARL3B,
128   THR_COMP_NEAR_NEWL3B,
129   THR_COMP_GLOBAL_GLOBALL3B,
130 
131   THR_COMP_NEAR_NEARGB,
132   THR_COMP_NEW_NEWGB,
133   THR_COMP_NEW_NEARESTGB,
134   THR_COMP_NEAREST_NEWGB,
135   THR_COMP_NEW_NEARGB,
136   THR_COMP_NEAR_NEWGB,
137   THR_COMP_GLOBAL_GLOBALGB,
138 
139   THR_COMP_NEAR_NEARLA2,
140   THR_COMP_NEW_NEWLA2,
141   THR_COMP_NEW_NEARESTLA2,
142   THR_COMP_NEAREST_NEWLA2,
143   THR_COMP_NEW_NEARLA2,
144   THR_COMP_NEAR_NEWLA2,
145   THR_COMP_GLOBAL_GLOBALLA2,
146 
147   THR_COMP_NEAR_NEARL2A2,
148   THR_COMP_NEW_NEWL2A2,
149   THR_COMP_NEW_NEARESTL2A2,
150   THR_COMP_NEAREST_NEWL2A2,
151   THR_COMP_NEW_NEARL2A2,
152   THR_COMP_NEAR_NEWL2A2,
153   THR_COMP_GLOBAL_GLOBALL2A2,
154 
155   THR_COMP_NEAR_NEARL3A2,
156   THR_COMP_NEW_NEWL3A2,
157   THR_COMP_NEW_NEARESTL3A2,
158   THR_COMP_NEAREST_NEWL3A2,
159   THR_COMP_NEW_NEARL3A2,
160   THR_COMP_NEAR_NEWL3A2,
161   THR_COMP_GLOBAL_GLOBALL3A2,
162 
163   THR_COMP_NEAR_NEARGA2,
164   THR_COMP_NEW_NEWGA2,
165   THR_COMP_NEW_NEARESTGA2,
166   THR_COMP_NEAREST_NEWGA2,
167   THR_COMP_NEW_NEARGA2,
168   THR_COMP_NEAR_NEWGA2,
169   THR_COMP_GLOBAL_GLOBALGA2,
170 
171   THR_COMP_NEAR_NEARLL2,
172   THR_COMP_NEW_NEWLL2,
173   THR_COMP_NEW_NEARESTLL2,
174   THR_COMP_NEAREST_NEWLL2,
175   THR_COMP_NEW_NEARLL2,
176   THR_COMP_NEAR_NEWLL2,
177   THR_COMP_GLOBAL_GLOBALLL2,
178 
179   THR_COMP_NEAR_NEARLL3,
180   THR_COMP_NEW_NEWLL3,
181   THR_COMP_NEW_NEARESTLL3,
182   THR_COMP_NEAREST_NEWLL3,
183   THR_COMP_NEW_NEARLL3,
184   THR_COMP_NEAR_NEWLL3,
185   THR_COMP_GLOBAL_GLOBALLL3,
186 
187   THR_COMP_NEAR_NEARLG,
188   THR_COMP_NEW_NEWLG,
189   THR_COMP_NEW_NEARESTLG,
190   THR_COMP_NEAREST_NEWLG,
191   THR_COMP_NEW_NEARLG,
192   THR_COMP_NEAR_NEWLG,
193   THR_COMP_GLOBAL_GLOBALLG,
194 
195   THR_COMP_NEAR_NEARBA,
196   THR_COMP_NEW_NEWBA,
197   THR_COMP_NEW_NEARESTBA,
198   THR_COMP_NEAREST_NEWBA,
199   THR_COMP_NEW_NEARBA,
200   THR_COMP_NEAR_NEWBA,
201   THR_COMP_GLOBAL_GLOBALBA,
202 
203   THR_DC,
204   THR_PAETH,
205   THR_SMOOTH,
206   THR_SMOOTH_V,
207   THR_SMOOTH_H,
208   THR_H_PRED,
209   THR_V_PRED,
210   THR_D135_PRED,
211   THR_D203_PRED,
212   THR_D157_PRED,
213   THR_D67_PRED,
214   THR_D113_PRED,
215   THR_D45_PRED,
216 
217   MAX_MODES,
218   SINGLE_REF_MODE_START = THR_NEARESTMV,
219   SINGLE_REF_MODE_END = THR_COMP_NEAREST_NEARESTLA,
220   NUM_SINGLE_REF_MODES = SINGLE_REF_MODE_END - SINGLE_REF_MODE_START,
221   THR_MODE_START = THR_NEARESTMV,
222   THR_MODE_END = MAX_MODES,
223   THR_INTER_MODE_START = THR_MODE_START,
224   THR_INTER_MODE_END = THR_DC,
225   THR_INVALID = 255
226 } UENUM1BYTE(THR_MODES);
227 
228 enum {
229   THR_LAST,
230   THR_LAST2,
231   THR_LAST3,
232   THR_BWDR,
233   THR_ALTR2,
234   THR_GOLD,
235   THR_ALTR,
236 
237   THR_COMP_LA,
238   THR_COMP_L2A,
239   THR_COMP_L3A,
240   THR_COMP_GA,
241 
242   THR_COMP_LB,
243   THR_COMP_L2B,
244   THR_COMP_L3B,
245   THR_COMP_GB,
246 
247   THR_COMP_LA2,
248   THR_COMP_L2A2,
249   THR_COMP_L3A2,
250   THR_COMP_GA2,
251 
252   THR_INTRA,
253 
254   MAX_REFS
255 } UENUM1BYTE(THR_MODES_SUB8X8);
256 
257 enum {
258   FULL_TXFM_RD,
259   LOW_TXFM_RD,
260 } UENUM1BYTE(TXFM_RD_MODEL);
261 
262 enum {
263   USE_FULL_RD = 0,
264   USE_FAST_RD,
265   USE_LARGESTALL,
266 } UENUM1BYTE(TX_SIZE_SEARCH_METHOD);
267 
268 #ifdef __cplusplus
269 }  // extern "C"
270 #endif
271 
272 #endif  // AOM_AV1_ENCODER_ENC_ENUMS_H_
273