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