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 |