| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #ifndef VP9_ENCODER_VP9_SPEED_FEATURES_H_ | 11 #ifndef VP9_ENCODER_VP9_SPEED_FEATURES_H_ |
| 12 #define VP9_ENCODER_VP9_SPEED_FEATURES_H_ | 12 #define VP9_ENCODER_VP9_SPEED_FEATURES_H_ |
| 13 | 13 |
| 14 #include "vp9/common/vp9_enums.h" | 14 #include "vp9/common/vp9_enums.h" |
| 15 | 15 |
| 16 #ifdef __cplusplus | 16 #ifdef __cplusplus |
| 17 extern "C" { | 17 extern "C" { |
| 18 #endif | 18 #endif |
| 19 | 19 |
| 20 enum { |
| 21 INTRA_ALL = (1 << DC_PRED) | |
| 22 (1 << V_PRED) | (1 << H_PRED) | |
| 23 (1 << D45_PRED) | (1 << D135_PRED) | |
| 24 (1 << D117_PRED) | (1 << D153_PRED) | |
| 25 (1 << D207_PRED) | (1 << D63_PRED) | |
| 26 (1 << TM_PRED), |
| 27 INTRA_DC = (1 << DC_PRED), |
| 28 INTRA_DC_TM = (1 << DC_PRED) | (1 << TM_PRED), |
| 29 INTRA_DC_H_V = (1 << DC_PRED) | (1 << V_PRED) | (1 << H_PRED), |
| 30 INTRA_DC_TM_H_V = (1 << DC_PRED) | (1 << TM_PRED) | (1 << V_PRED) | |
| 31 (1 << H_PRED) |
| 32 }; |
| 33 |
| 34 enum { |
| 35 INTER_ALL = (1 << NEARESTMV) | (1 << NEARMV) | (1 << ZEROMV) | (1 << NEWMV), |
| 36 INTER_NEAREST = (1 << NEARESTMV), |
| 37 INTER_NEAREST_NEAR_NEW = (1 << NEARESTMV) | (1 << NEARMV) | (1 << NEWMV), |
| 38 INTER_NEAREST_NEAR_ZERO = (1 << NEARESTMV) | (1 << NEARMV) | (1 << ZEROMV), |
| 39 }; |
| 40 |
| 41 enum { |
| 42 DISABLE_ALL_INTER_SPLIT = (1 << THR_COMP_GA) | |
| 43 (1 << THR_COMP_LA) | |
| 44 (1 << THR_ALTR) | |
| 45 (1 << THR_GOLD) | |
| 46 (1 << THR_LAST), |
| 47 |
| 48 DISABLE_ALL_SPLIT = (1 << THR_INTRA) | DISABLE_ALL_INTER_SPLIT, |
| 49 |
| 50 DISABLE_COMPOUND_SPLIT = (1 << THR_COMP_GA) | (1 << THR_COMP_LA), |
| 51 |
| 52 LAST_AND_INTRA_SPLIT_ONLY = (1 << THR_COMP_GA) | |
| 53 (1 << THR_COMP_LA) | |
| 54 (1 << THR_ALTR) | |
| 55 (1 << THR_GOLD) |
| 56 }; |
| 57 |
| 20 typedef enum { | 58 typedef enum { |
| 21 DIAMOND = 0, | 59 DIAMOND = 0, |
| 22 NSTEP = 1, | 60 NSTEP = 1, |
| 23 HEX = 2, | 61 HEX = 2, |
| 24 BIGDIA = 3, | 62 BIGDIA = 3, |
| 25 SQUARE = 4, | 63 SQUARE = 4, |
| 26 FAST_HEX = 5, | 64 FAST_HEX = 5, |
| 27 FAST_DIAMOND = 6 | 65 FAST_DIAMOND = 6 |
| 28 } SEARCH_METHODS; | 66 } SEARCH_METHODS; |
| 29 | 67 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 } LPF_PICK_METHOD; | 118 } LPF_PICK_METHOD; |
| 81 | 119 |
| 82 typedef enum { | 120 typedef enum { |
| 83 // Terminate search early based on distortion so far compared to | 121 // Terminate search early based on distortion so far compared to |
| 84 // qp step, distortion in the neighborhood of the frame, etc. | 122 // qp step, distortion in the neighborhood of the frame, etc. |
| 85 FLAG_EARLY_TERMINATE = 1 << 0, | 123 FLAG_EARLY_TERMINATE = 1 << 0, |
| 86 | 124 |
| 87 // Skips comp inter modes if the best so far is an intra mode. | 125 // Skips comp inter modes if the best so far is an intra mode. |
| 88 FLAG_SKIP_COMP_BESTINTRA = 1 << 1, | 126 FLAG_SKIP_COMP_BESTINTRA = 1 << 1, |
| 89 | 127 |
| 90 // Skips comp inter modes if the best single intermode so far does | |
| 91 // not have the same reference as one of the two references being | |
| 92 // tested. | |
| 93 FLAG_SKIP_COMP_REFMISMATCH = 1 << 2, | |
| 94 | |
| 95 // Skips oblique intra modes if the best so far is an inter mode. | 128 // Skips oblique intra modes if the best so far is an inter mode. |
| 96 FLAG_SKIP_INTRA_BESTINTER = 1 << 3, | 129 FLAG_SKIP_INTRA_BESTINTER = 1 << 3, |
| 97 | 130 |
| 98 // Skips oblique intra modes at angles 27, 63, 117, 153 if the best | 131 // Skips oblique intra modes at angles 27, 63, 117, 153 if the best |
| 99 // intra so far is not one of the neighboring directions. | 132 // intra so far is not one of the neighboring directions. |
| 100 FLAG_SKIP_INTRA_DIRMISMATCH = 1 << 4, | 133 FLAG_SKIP_INTRA_DIRMISMATCH = 1 << 4, |
| 101 | 134 |
| 102 // Skips intra modes other than DC_PRED if the source variance is small | 135 // Skips intra modes other than DC_PRED if the source variance is small |
| 103 FLAG_SKIP_INTRA_LOWVAR = 1 << 5, | 136 FLAG_SKIP_INTRA_LOWVAR = 1 << 5, |
| 104 } MODE_SEARCH_SKIP_LOGIC; | 137 } MODE_SEARCH_SKIP_LOGIC; |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 // Disables sub 8x8 blocksizes in different scenarios: Choices are to disable | 311 // Disables sub 8x8 blocksizes in different scenarios: Choices are to disable |
| 279 // it always, to allow it for only Last frame and Intra, disable it for all | 312 // it always, to allow it for only Last frame and Intra, disable it for all |
| 280 // inter modes or to enable it always. | 313 // inter modes or to enable it always. |
| 281 int disable_split_mask; | 314 int disable_split_mask; |
| 282 | 315 |
| 283 // TODO(jingning): combine the related motion search speed features | 316 // TODO(jingning): combine the related motion search speed features |
| 284 // This allows us to use motion search at other sizes as a starting | 317 // This allows us to use motion search at other sizes as a starting |
| 285 // point for this motion search and limits the search range around it. | 318 // point for this motion search and limits the search range around it. |
| 286 int adaptive_motion_search; | 319 int adaptive_motion_search; |
| 287 | 320 |
| 321 int schedule_mode_search; |
| 322 |
| 288 // Allows sub 8x8 modes to use the prediction filter that was determined | 323 // Allows sub 8x8 modes to use the prediction filter that was determined |
| 289 // best for 8x8 mode. If set to 0 we always re check all the filters for | 324 // best for 8x8 mode. If set to 0 we always re check all the filters for |
| 290 // sizes less than 8x8, 1 means we check all filter modes if no 8x8 filter | 325 // sizes less than 8x8, 1 means we check all filter modes if no 8x8 filter |
| 291 // was selected, and 2 means we use 8 tap if no 8x8 filter mode was selected. | 326 // was selected, and 2 means we use 8 tap if no 8x8 filter mode was selected. |
| 292 int adaptive_pred_interp_filter; | 327 int adaptive_pred_interp_filter; |
| 293 | 328 |
| 294 // Adaptive prediction mode search | 329 // Adaptive prediction mode search |
| 295 int adaptive_mode_search; | 330 int adaptive_mode_search; |
| 296 | 331 |
| 297 // Chessboard pattern prediction filter type search | 332 // Chessboard pattern prediction filter type search |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 struct VP9_COMP; | 440 struct VP9_COMP; |
| 406 | 441 |
| 407 void vp9_set_speed_features(struct VP9_COMP *cpi); | 442 void vp9_set_speed_features(struct VP9_COMP *cpi); |
| 408 | 443 |
| 409 #ifdef __cplusplus | 444 #ifdef __cplusplus |
| 410 } // extern "C" | 445 } // extern "C" |
| 411 #endif | 446 #endif |
| 412 | 447 |
| 413 #endif // VP9_ENCODER_VP9_SPEED_FEATURES_H_ | 448 #endif // VP9_ENCODER_VP9_SPEED_FEATURES_H_ |
| 414 | 449 |
| OLD | NEW |