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 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 vp9_prob single_ref_prob[REF_CONTEXTS][2]; | 70 vp9_prob single_ref_prob[REF_CONTEXTS][2]; |
71 vp9_prob comp_ref_prob[REF_CONTEXTS]; | 71 vp9_prob comp_ref_prob[REF_CONTEXTS]; |
72 | 72 |
73 unsigned char *last_frame_seg_map_copy; | 73 unsigned char *last_frame_seg_map_copy; |
74 | 74 |
75 // 0 = Intra, Last, GF, ARF | 75 // 0 = Intra, Last, GF, ARF |
76 signed char last_ref_lf_deltas[MAX_REF_LF_DELTAS]; | 76 signed char last_ref_lf_deltas[MAX_REF_LF_DELTAS]; |
77 // 0 = ZERO_MV, MV | 77 // 0 = ZERO_MV, MV |
78 signed char last_mode_lf_deltas[MAX_MODE_LF_DELTAS]; | 78 signed char last_mode_lf_deltas[MAX_MODE_LF_DELTAS]; |
79 | 79 |
80 vp9_coeff_probs_model coef_probs[TX_SIZE_MAX_SB][BLOCK_TYPES]; | 80 vp9_coeff_probs_model coef_probs[TX_SIZES][BLOCK_TYPES]; |
81 | 81 |
82 vp9_prob y_mode_prob[4][VP9_INTRA_MODES - 1]; | 82 vp9_prob y_mode_prob[4][INTRA_MODES - 1]; |
83 vp9_prob uv_mode_prob[VP9_INTRA_MODES][VP9_INTRA_MODES - 1]; | 83 vp9_prob uv_mode_prob[INTRA_MODES][INTRA_MODES - 1]; |
84 vp9_prob partition_prob[2][NUM_PARTITION_CONTEXTS][PARTITION_TYPES - 1]; | 84 vp9_prob partition_prob[2][NUM_PARTITION_CONTEXTS][PARTITION_TYPES - 1]; |
85 | 85 |
86 vp9_prob switchable_interp_prob[VP9_SWITCHABLE_FILTERS + 1] | 86 vp9_prob switchable_interp_prob[SWITCHABLE_FILTERS + 1] |
87 [VP9_SWITCHABLE_FILTERS - 1]; | 87 [SWITCHABLE_FILTERS - 1]; |
88 | 88 |
89 int inter_mode_counts[INTER_MODE_CONTEXTS][VP9_INTER_MODES - 1][2]; | 89 int inter_mode_counts[INTER_MODE_CONTEXTS][INTER_MODES - 1][2]; |
90 vp9_prob inter_mode_probs[INTER_MODE_CONTEXTS][VP9_INTER_MODES - 1]; | 90 vp9_prob inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1]; |
91 | 91 |
92 struct tx_probs tx_probs; | 92 struct tx_probs tx_probs; |
93 vp9_prob mbskip_probs[MBSKIP_CONTEXTS]; | 93 vp9_prob mbskip_probs[MBSKIP_CONTEXTS]; |
94 } CODING_CONTEXT; | 94 } CODING_CONTEXT; |
95 | 95 |
96 typedef struct { | 96 typedef struct { |
97 double frame; | 97 double frame; |
98 double intra_error; | 98 double intra_error; |
99 double coded_error; | 99 double coded_error; |
100 double sr_coded_error; | 100 double sr_coded_error; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 } MBGRAPH_MB_STATS; | 138 } MBGRAPH_MB_STATS; |
139 | 139 |
140 typedef struct { | 140 typedef struct { |
141 MBGRAPH_MB_STATS *mb_stats; | 141 MBGRAPH_MB_STATS *mb_stats; |
142 } MBGRAPH_FRAME_STATS; | 142 } MBGRAPH_FRAME_STATS; |
143 | 143 |
144 // This enumerator type needs to be kept aligned with the mode order in | 144 // This enumerator type needs to be kept aligned with the mode order in |
145 // const MODE_DEFINITION vp9_mode_order[MAX_MODES] used in the rd code. | 145 // const MODE_DEFINITION vp9_mode_order[MAX_MODES] used in the rd code. |
146 typedef enum { | 146 typedef enum { |
147 THR_NEARESTMV, | 147 THR_NEARESTMV, |
| 148 THR_DC, |
| 149 |
148 THR_NEARESTA, | 150 THR_NEARESTA, |
149 THR_NEARESTG, | 151 THR_NEARESTG, |
150 THR_NEWMV, | 152 THR_NEWMV, |
151 THR_COMP_NEARESTLA, | 153 THR_COMP_NEARESTLA, |
152 THR_NEARMV, | 154 THR_NEARMV, |
153 THR_COMP_NEARESTGA, | 155 THR_COMP_NEARESTGA, |
154 | 156 |
155 THR_DC, | |
156 | |
157 THR_NEWG, | 157 THR_NEWG, |
158 THR_NEWA, | 158 THR_NEWA, |
159 THR_NEARA, | 159 THR_NEARA, |
160 | 160 |
161 THR_TM, | 161 THR_TM, |
162 | 162 |
163 THR_COMP_NEARLA, | 163 THR_COMP_NEARLA, |
164 THR_COMP_NEWLA, | 164 THR_COMP_NEWLA, |
165 THR_NEARG, | 165 THR_NEARG, |
166 THR_COMP_NEARGA, | 166 THR_COMP_NEARGA, |
167 THR_COMP_NEWGA, | 167 THR_COMP_NEWGA, |
168 | 168 |
169 THR_SPLITMV, | 169 THR_SPLITMV, |
170 THR_SPLITG, | 170 THR_SPLITG, |
171 THR_SPLITA, | 171 THR_SPLITA, |
172 THR_COMP_SPLITLA, | 172 THR_COMP_SPLITLA, |
173 THR_COMP_SPLITGA, | 173 THR_COMP_SPLITGA, |
174 | 174 |
175 THR_ZEROMV, | 175 THR_ZEROMV, |
176 THR_ZEROG, | 176 THR_ZEROG, |
177 THR_ZEROA, | 177 THR_ZEROA, |
178 THR_COMP_ZEROLA, | 178 THR_COMP_ZEROLA, |
179 THR_COMP_ZEROGA, | 179 THR_COMP_ZEROGA, |
180 | 180 |
181 THR_B_PRED, | 181 THR_B_PRED, |
182 THR_H_PRED, | 182 THR_H_PRED, |
183 THR_V_PRED, | 183 THR_V_PRED, |
184 THR_D135_PRED, | 184 THR_D135_PRED, |
185 THR_D27_PRED, | 185 THR_D207_PRED, |
186 THR_D153_PRED, | 186 THR_D153_PRED, |
187 THR_D63_PRED, | 187 THR_D63_PRED, |
188 THR_D117_PRED, | 188 THR_D117_PRED, |
189 THR_D45_PRED, | 189 THR_D45_PRED, |
190 } THR_MODES; | 190 } THR_MODES; |
191 | 191 |
192 typedef enum { | 192 typedef enum { |
193 DIAMOND = 0, | 193 DIAMOND = 0, |
194 NSTEP = 1, | 194 NSTEP = 1, |
195 HEX = 2 | 195 HEX = 2, |
| 196 BIGDIA = 3, |
| 197 SQUARE = 4 |
196 } SEARCH_METHODS; | 198 } SEARCH_METHODS; |
197 | 199 |
198 typedef enum { | 200 typedef enum { |
199 USE_FULL_RD = 0, | 201 USE_FULL_RD = 0, |
200 USE_LARGESTINTRA, | 202 USE_LARGESTINTRA, |
201 USE_LARGESTINTRA_MODELINTER, | 203 USE_LARGESTINTRA_MODELINTER, |
202 USE_LARGESTALL | 204 USE_LARGESTALL |
203 } TX_SIZE_SEARCH_METHOD; | 205 } TX_SIZE_SEARCH_METHOD; |
204 | 206 |
205 typedef enum { | 207 typedef enum { |
(...skipping 11 matching lines...) Expand all Loading... |
217 // not have the same reference as one of the two references being | 219 // not have the same reference as one of the two references being |
218 // tested | 220 // tested |
219 FLAG_SKIP_COMP_REFMISMATCH = 4, | 221 FLAG_SKIP_COMP_REFMISMATCH = 4, |
220 | 222 |
221 // skips oblique intra modes if the best so far is an inter mode | 223 // skips oblique intra modes if the best so far is an inter mode |
222 FLAG_SKIP_INTRA_BESTINTER = 8, | 224 FLAG_SKIP_INTRA_BESTINTER = 8, |
223 | 225 |
224 // skips oblique intra modes at angles 27, 63, 117, 153 if the best | 226 // skips oblique intra modes at angles 27, 63, 117, 153 if the best |
225 // intra so far is not one of the neighboring directions | 227 // intra so far is not one of the neighboring directions |
226 FLAG_SKIP_INTRA_DIRMISMATCH = 16, | 228 FLAG_SKIP_INTRA_DIRMISMATCH = 16, |
| 229 |
| 230 // skips intra modes other than DC_PRED if the source variance |
| 231 // is small |
| 232 FLAG_SKIP_INTRA_LOWVAR = 32, |
227 } MODE_SEARCH_SKIP_LOGIC; | 233 } MODE_SEARCH_SKIP_LOGIC; |
228 | 234 |
| 235 typedef enum { |
| 236 SUBPEL_ITERATIVE = 0, |
| 237 SUBPEL_TREE = 1, |
| 238 // Other methods to come |
| 239 } SUBPEL_SEARCH_METHODS; |
| 240 |
| 241 #define ALL_INTRA_MODES 0x3FF |
| 242 #define INTRA_DC_ONLY 0x01 |
| 243 #define INTRA_DC_TM ((1 << TM_PRED) | (1 << DC_PRED)) |
| 244 #define INTRA_DC_TM_H_V (INTRA_DC_TM | (1 << V_PRED) | (1 << H_PRED)) |
| 245 |
229 typedef struct { | 246 typedef struct { |
230 int RD; | 247 int RD; |
231 SEARCH_METHODS search_method; | 248 SEARCH_METHODS search_method; |
232 int auto_filter; | 249 int auto_filter; |
233 int recode_loop; | 250 int recode_loop; |
234 int iterative_sub_pixel; | 251 SUBPEL_SEARCH_METHODS subpel_search_method; |
235 int half_pixel_search; | 252 int subpel_iters_per_step; |
236 int quarter_pixel_search; | |
237 int thresh_mult[MAX_MODES]; | 253 int thresh_mult[MAX_MODES]; |
238 int max_step_search_steps; | 254 int max_step_search_steps; |
239 int reduce_first_step_size; | 255 int reduce_first_step_size; |
240 int auto_mv_step_size; | 256 int auto_mv_step_size; |
241 int optimize_coefficients; | 257 int optimize_coefficients; |
242 int search_best_filter; | 258 int search_best_filter; |
243 int static_segmentation; | 259 int static_segmentation; |
244 int comp_inter_joint_search_thresh; | 260 int comp_inter_joint_search_thresh; |
245 int adaptive_rd_thresh; | 261 int adaptive_rd_thresh; |
246 int skip_encode_sb; | 262 int skip_encode_sb; |
247 int skip_encode_frame; | 263 int skip_encode_frame; |
248 int use_lastframe_partitioning; | 264 int use_lastframe_partitioning; |
249 TX_SIZE_SEARCH_METHOD tx_size_search_method; | 265 TX_SIZE_SEARCH_METHOD tx_size_search_method; |
250 int use_8tap_always; | 266 int use_lp32x32fdct; |
251 int use_avoid_tested_higherror; | 267 int use_avoid_tested_higherror; |
252 int skip_lots_of_modes; | 268 int skip_lots_of_modes; |
253 int adjust_thresholds_by_speed; | 269 int adjust_thresholds_by_speed; |
254 int partition_by_variance; | 270 int partition_by_variance; |
255 int use_one_partition_size_always; | 271 int use_one_partition_size_always; |
256 int less_rectangular_check; | 272 int less_rectangular_check; |
257 int use_square_partition_only; | 273 int use_square_partition_only; |
258 int unused_mode_skip_lvl; | 274 int unused_mode_skip_lvl; |
259 int reference_masking; | 275 int reference_masking; |
260 BLOCK_SIZE_TYPE always_this_block_size; | 276 BLOCK_SIZE always_this_block_size; |
261 int use_partitions_greater_than; | 277 int auto_min_max_partition_size; |
262 BLOCK_SIZE_TYPE greater_than_block_size; | 278 int auto_min_max_partition_interval; |
263 int use_partitions_less_than; | 279 int auto_min_max_partition_count; |
264 BLOCK_SIZE_TYPE less_than_block_size; | 280 BLOCK_SIZE min_partition_size; |
| 281 BLOCK_SIZE max_partition_size; |
265 int adjust_partitioning_from_last_frame; | 282 int adjust_partitioning_from_last_frame; |
266 int last_partitioning_redo_frequency; | 283 int last_partitioning_redo_frequency; |
267 int disable_splitmv; | 284 int disable_splitmv; |
268 int using_small_partition_info; | 285 int using_small_partition_info; |
269 | 286 |
270 // Implements various heuristics to skip searching modes | 287 // Implements various heuristics to skip searching modes |
271 // The heuristics selected are based on flags | 288 // The heuristics selected are based on flags |
272 // defined in the MODE_SEARCH_SKIP_HEURISTICS enum | 289 // defined in the MODE_SEARCH_SKIP_HEURISTICS enum |
273 unsigned int mode_search_skip_flags; | 290 unsigned int mode_search_skip_flags; |
274 MB_PREDICTION_MODE last_chroma_intra_mode; | 291 // A source variance threshold below which the split mode is disabled |
| 292 unsigned int disable_split_var_thresh; |
| 293 // A source variance threshold below which filter search is disabled |
| 294 // Choose a very large value (UINT_MAX) to use 8-tap always |
| 295 unsigned int disable_filter_search_var_thresh; |
| 296 int intra_y_mode_mask; |
| 297 int intra_uv_mode_mask; |
275 int use_rd_breakout; | 298 int use_rd_breakout; |
276 int use_uv_intra_rd_estimate; | 299 int use_uv_intra_rd_estimate; |
| 300 int use_fast_lpf_pick; |
277 } SPEED_FEATURES; | 301 } SPEED_FEATURES; |
278 | 302 |
279 typedef struct VP9_COMP { | 303 typedef struct VP9_COMP { |
280 DECLARE_ALIGNED(16, int16_t, y_quant[QINDEX_RANGE][8]); | 304 DECLARE_ALIGNED(16, int16_t, y_quant[QINDEX_RANGE][8]); |
281 DECLARE_ALIGNED(16, int16_t, y_quant_shift[QINDEX_RANGE][8]); | 305 DECLARE_ALIGNED(16, int16_t, y_quant_shift[QINDEX_RANGE][8]); |
282 DECLARE_ALIGNED(16, int16_t, y_zbin[QINDEX_RANGE][8]); | 306 DECLARE_ALIGNED(16, int16_t, y_zbin[QINDEX_RANGE][8]); |
283 DECLARE_ALIGNED(16, int16_t, y_round[QINDEX_RANGE][8]); | 307 DECLARE_ALIGNED(16, int16_t, y_round[QINDEX_RANGE][8]); |
284 | 308 |
285 DECLARE_ALIGNED(16, int16_t, uv_quant[QINDEX_RANGE][8]); | 309 DECLARE_ALIGNED(16, int16_t, uv_quant[QINDEX_RANGE][8]); |
286 DECLARE_ALIGNED(16, int16_t, uv_quant_shift[QINDEX_RANGE][8]); | 310 DECLARE_ALIGNED(16, int16_t, uv_quant_shift[QINDEX_RANGE][8]); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 // Ambient reconstruction err target for force key frames | 374 // Ambient reconstruction err target for force key frames |
351 int ambient_err; | 375 int ambient_err; |
352 | 376 |
353 unsigned int mode_check_freq[MAX_MODES]; | 377 unsigned int mode_check_freq[MAX_MODES]; |
354 unsigned int mode_test_hit_counts[MAX_MODES]; | 378 unsigned int mode_test_hit_counts[MAX_MODES]; |
355 unsigned int mode_chosen_counts[MAX_MODES]; | 379 unsigned int mode_chosen_counts[MAX_MODES]; |
356 int64_t unused_mode_skip_mask; | 380 int64_t unused_mode_skip_mask; |
357 int ref_frame_mask; | 381 int ref_frame_mask; |
358 int set_ref_frame_mask; | 382 int set_ref_frame_mask; |
359 | 383 |
360 int rd_thresh_mult[MAX_MODES]; | 384 int rd_threshes[BLOCK_SIZES][MAX_MODES]; |
361 int rd_baseline_thresh[BLOCK_SIZE_TYPES][MAX_MODES]; | 385 int rd_thresh_freq_fact[BLOCK_SIZES][MAX_MODES]; |
362 int rd_threshes[BLOCK_SIZE_TYPES][MAX_MODES]; | |
363 int rd_thresh_freq_fact[BLOCK_SIZE_TYPES][MAX_MODES]; | |
364 | 386 |
365 int64_t rd_comp_pred_diff[NB_PREDICTION_TYPES]; | 387 int64_t rd_comp_pred_diff[NB_PREDICTION_TYPES]; |
366 // FIXME(rbultje) int64_t? | 388 // FIXME(rbultje) int64_t? |
367 int rd_prediction_type_threshes[4][NB_PREDICTION_TYPES]; | 389 int rd_prediction_type_threshes[4][NB_PREDICTION_TYPES]; |
368 unsigned int intra_inter_count[INTRA_INTER_CONTEXTS][2]; | 390 unsigned int intra_inter_count[INTRA_INTER_CONTEXTS][2]; |
369 unsigned int comp_inter_count[COMP_INTER_CONTEXTS][2]; | 391 unsigned int comp_inter_count[COMP_INTER_CONTEXTS][2]; |
370 unsigned int single_ref_count[REF_CONTEXTS][2][2]; | 392 unsigned int single_ref_count[REF_CONTEXTS][2][2]; |
371 unsigned int comp_ref_count[REF_CONTEXTS][2]; | 393 unsigned int comp_ref_count[REF_CONTEXTS][2]; |
372 | 394 |
373 int64_t rd_tx_select_diff[NB_TXFM_MODES]; | 395 int64_t rd_tx_select_diff[TX_MODES]; |
374 // FIXME(rbultje) can this overflow? | 396 // FIXME(rbultje) can this overflow? |
375 int rd_tx_select_threshes[4][NB_TXFM_MODES]; | 397 int rd_tx_select_threshes[4][TX_MODES]; |
376 | 398 |
377 int64_t rd_filter_diff[VP9_SWITCHABLE_FILTERS + 1]; | 399 int64_t rd_filter_diff[SWITCHABLE_FILTERS + 1]; |
378 int64_t rd_filter_threshes[4][VP9_SWITCHABLE_FILTERS + 1]; | 400 int64_t rd_filter_threshes[4][SWITCHABLE_FILTERS + 1]; |
379 int64_t rd_filter_cache[VP9_SWITCHABLE_FILTERS + 1]; | 401 int64_t rd_filter_cache[SWITCHABLE_FILTERS + 1]; |
380 | 402 |
381 int RDMULT; | 403 int RDMULT; |
382 int RDDIV; | 404 int RDDIV; |
383 | 405 |
384 CODING_CONTEXT coding_context; | 406 CODING_CONTEXT coding_context; |
385 | 407 |
386 // Rate targetting variables | 408 // Rate targetting variables |
387 int this_frame_target; | 409 int this_frame_target; |
388 int projected_frame_size; | 410 int projected_frame_size; |
389 int last_q[2]; // Separate values for Intra/Inter | 411 int last_q[2]; // Separate values for Intra/Inter |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 int64_t total_actual_bits; | 466 int64_t total_actual_bits; |
445 int total_target_vs_actual; // debug stats | 467 int total_target_vs_actual; // debug stats |
446 | 468 |
447 int worst_quality; | 469 int worst_quality; |
448 int active_worst_quality; | 470 int active_worst_quality; |
449 int best_quality; | 471 int best_quality; |
450 int active_best_quality; | 472 int active_best_quality; |
451 | 473 |
452 int cq_target_quality; | 474 int cq_target_quality; |
453 | 475 |
454 int y_mode_count[4][VP9_INTRA_MODES]; | 476 int y_mode_count[4][INTRA_MODES]; |
455 int y_uv_mode_count[VP9_INTRA_MODES][VP9_INTRA_MODES]; | 477 int y_uv_mode_count[INTRA_MODES][INTRA_MODES]; |
456 unsigned int partition_count[NUM_PARTITION_CONTEXTS][PARTITION_TYPES]; | 478 unsigned int partition_count[NUM_PARTITION_CONTEXTS][PARTITION_TYPES]; |
457 | 479 |
458 nmv_context_counts NMVcount; | 480 nmv_context_counts NMVcount; |
459 | 481 |
460 vp9_coeff_count coef_counts[TX_SIZE_MAX_SB][BLOCK_TYPES]; | 482 vp9_coeff_count coef_counts[TX_SIZES][BLOCK_TYPES]; |
461 vp9_coeff_probs_model frame_coef_probs[TX_SIZE_MAX_SB][BLOCK_TYPES]; | 483 vp9_coeff_probs_model frame_coef_probs[TX_SIZES][BLOCK_TYPES]; |
462 vp9_coeff_stats frame_branch_ct[TX_SIZE_MAX_SB][BLOCK_TYPES]; | 484 vp9_coeff_stats frame_branch_ct[TX_SIZES][BLOCK_TYPES]; |
463 | 485 |
464 int gfu_boost; | 486 int gfu_boost; |
465 int last_boost; | 487 int last_boost; |
466 int kf_boost; | 488 int kf_boost; |
467 int kf_zeromotion_pct; | 489 int kf_zeromotion_pct; |
468 | 490 |
469 int64_t target_bandwidth; | 491 int64_t target_bandwidth; |
470 struct vpx_codec_pkt_list *output_pkt_list; | 492 struct vpx_codec_pkt_list *output_pkt_list; |
471 | 493 |
472 #if 0 | 494 #if 0 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 | 535 |
514 unsigned char *segmentation_map; | 536 unsigned char *segmentation_map; |
515 | 537 |
516 // segment threashold for encode breakout | 538 // segment threashold for encode breakout |
517 int segment_encode_breakout[MAX_SEGMENTS]; | 539 int segment_encode_breakout[MAX_SEGMENTS]; |
518 | 540 |
519 unsigned char *active_map; | 541 unsigned char *active_map; |
520 unsigned int active_map_enabled; | 542 unsigned int active_map_enabled; |
521 | 543 |
522 fractional_mv_step_fp *find_fractional_mv_step; | 544 fractional_mv_step_fp *find_fractional_mv_step; |
| 545 fractional_mv_step_comp_fp *find_fractional_mv_step_comp; |
523 vp9_full_search_fn_t full_search_sad; | 546 vp9_full_search_fn_t full_search_sad; |
524 vp9_refining_search_fn_t refining_search_sad; | 547 vp9_refining_search_fn_t refining_search_sad; |
525 vp9_diamond_search_fn_t diamond_search_sad; | 548 vp9_diamond_search_fn_t diamond_search_sad; |
526 vp9_variance_fn_ptr_t fn_ptr[BLOCK_SIZE_TYPES]; | 549 vp9_variance_fn_ptr_t fn_ptr[BLOCK_SIZES]; |
527 uint64_t time_receive_data; | 550 uint64_t time_receive_data; |
528 uint64_t time_compress_data; | 551 uint64_t time_compress_data; |
529 uint64_t time_pick_lpf; | 552 uint64_t time_pick_lpf; |
530 uint64_t time_encode_mb_row; | 553 uint64_t time_encode_sb_row; |
531 | 554 |
532 struct twopass_rc { | 555 struct twopass_rc { |
533 unsigned int section_intra_rating; | 556 unsigned int section_intra_rating; |
534 unsigned int next_iiratio; | 557 unsigned int next_iiratio; |
535 unsigned int this_iiratio; | 558 unsigned int this_iiratio; |
536 FIRSTPASS_STATS total_stats; | 559 FIRSTPASS_STATS total_stats; |
537 FIRSTPASS_STATS this_frame_stats; | 560 FIRSTPASS_STATS this_frame_stats; |
538 FIRSTPASS_STATS *stats_in, *stats_in_end, *stats_in_start; | 561 FIRSTPASS_STATS *stats_in, *stats_in_end, *stats_in_start; |
539 FIRSTPASS_STATS total_left_stats; | 562 FIRSTPASS_STATS total_left_stats; |
540 int first_pass_done; | 563 int first_pass_done; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 int *mb_norm_activity_map; | 632 int *mb_norm_activity_map; |
610 int output_partition; | 633 int output_partition; |
611 | 634 |
612 /* force next frame to intra when kf_auto says so */ | 635 /* force next frame to intra when kf_auto says so */ |
613 int force_next_frame_intra; | 636 int force_next_frame_intra; |
614 | 637 |
615 int droppable; | 638 int droppable; |
616 | 639 |
617 int dummy_packing; /* flag to indicate if packing is dummy */ | 640 int dummy_packing; /* flag to indicate if packing is dummy */ |
618 | 641 |
619 unsigned int switchable_interp_count[VP9_SWITCHABLE_FILTERS + 1] | 642 unsigned int switchable_interp_count[SWITCHABLE_FILTERS + 1] |
620 [VP9_SWITCHABLE_FILTERS]; | 643 [SWITCHABLE_FILTERS]; |
621 | 644 |
622 unsigned int txfm_stepdown_count[TX_SIZE_MAX_SB]; | 645 unsigned int txfm_stepdown_count[TX_SIZES]; |
623 | 646 |
624 int initial_width; | 647 int initial_width; |
625 int initial_height; | 648 int initial_height; |
626 | 649 |
627 #if CONFIG_MULTIPLE_ARF | 650 #if CONFIG_MULTIPLE_ARF |
628 // ARF tracking variables. | 651 // ARF tracking variables. |
629 int multi_arf_enabled; | 652 int multi_arf_enabled; |
630 unsigned int frame_coding_order_period; | 653 unsigned int frame_coding_order_period; |
631 unsigned int new_frame_coding_order_period; | 654 unsigned int new_frame_coding_order_period; |
632 int frame_coding_order[MAX_LAG_BUFFERS * 2]; | 655 int frame_coding_order[MAX_LAG_BUFFERS * 2]; |
633 int arf_buffer_idx[MAX_LAG_BUFFERS * 3 / 2]; | 656 int arf_buffer_idx[MAX_LAG_BUFFERS * 3 / 2]; |
634 int arf_weight[MAX_LAG_BUFFERS]; | 657 int arf_weight[MAX_LAG_BUFFERS]; |
635 int arf_buffered; | 658 int arf_buffered; |
636 int this_frame_weight; | 659 int this_frame_weight; |
637 int max_arf_level; | 660 int max_arf_level; |
638 #endif | 661 #endif |
639 | 662 |
640 #ifdef ENTROPY_STATS | 663 #ifdef ENTROPY_STATS |
641 int64_t mv_ref_stats[INTER_MODE_CONTEXTS][VP9_INTER_MODES - 1][2]; | 664 int64_t mv_ref_stats[INTER_MODE_CONTEXTS][INTER_MODES - 1][2]; |
642 #endif | 665 #endif |
643 } VP9_COMP; | 666 } VP9_COMP; |
644 | 667 |
645 static int get_ref_frame_idx(VP9_COMP *cpi, MV_REFERENCE_FRAME ref_frame) { | 668 static int get_ref_frame_idx(VP9_COMP *cpi, MV_REFERENCE_FRAME ref_frame) { |
646 if (ref_frame == LAST_FRAME) { | 669 if (ref_frame == LAST_FRAME) { |
647 return cpi->lst_fb_idx; | 670 return cpi->lst_fb_idx; |
648 } else if (ref_frame == GOLDEN_FRAME) { | 671 } else if (ref_frame == GOLDEN_FRAME) { |
649 return cpi->gld_fb_idx; | 672 return cpi->gld_fb_idx; |
650 } else { | 673 } else { |
651 return cpi->alt_fb_idx; | 674 return cpi->alt_fb_idx; |
652 } | 675 } |
653 } | 676 } |
654 | 677 |
655 void vp9_encode_frame(VP9_COMP *cpi); | 678 void vp9_encode_frame(VP9_COMP *cpi); |
656 | 679 |
657 void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest, | 680 void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest, |
658 unsigned long *size); | 681 unsigned long *size); |
659 | 682 |
660 void vp9_activity_masking(VP9_COMP *cpi, MACROBLOCK *x); | 683 void vp9_activity_masking(VP9_COMP *cpi, MACROBLOCK *x); |
661 | 684 |
662 void vp9_set_speed_features(VP9_COMP *cpi); | 685 void vp9_set_speed_features(VP9_COMP *cpi); |
663 | 686 |
664 extern int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source, | 687 extern int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source, |
665 YV12_BUFFER_CONFIG *dest); | 688 YV12_BUFFER_CONFIG *dest); |
666 | 689 |
667 extern void vp9_alloc_compressor_data(VP9_COMP *cpi); | 690 extern void vp9_alloc_compressor_data(VP9_COMP *cpi); |
668 | 691 |
669 #endif // VP9_ENCODER_VP9_ONYX_INT_H_ | 692 #endif // VP9_ENCODER_VP9_ONYX_INT_H_ |
OLD | NEW |