Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Side by Side Diff: source/libvpx/vp9/encoder/vp9_onyx_int.h

Issue 111463005: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_onyx_if.c ('k') | source/libvpx/vp9/encoder/vp9_quantize.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 11 matching lines...) Expand all
22 #include "vp9/encoder/vp9_encodemb.h" 22 #include "vp9/encoder/vp9_encodemb.h"
23 #include "vp9/encoder/vp9_quantize.h" 23 #include "vp9/encoder/vp9_quantize.h"
24 #include "vp9/common/vp9_entropy.h" 24 #include "vp9/common/vp9_entropy.h"
25 #include "vp9/common/vp9_entropymode.h" 25 #include "vp9/common/vp9_entropymode.h"
26 #include "vpx_ports/mem.h" 26 #include "vpx_ports/mem.h"
27 #include "vpx/internal/vpx_codec_internal.h" 27 #include "vpx/internal/vpx_codec_internal.h"
28 #include "vp9/encoder/vp9_mcomp.h" 28 #include "vp9/encoder/vp9_mcomp.h"
29 #include "vp9/common/vp9_findnearmv.h" 29 #include "vp9/common/vp9_findnearmv.h"
30 #include "vp9/encoder/vp9_lookahead.h" 30 #include "vp9/encoder/vp9_lookahead.h"
31 31
32 // Experimental rate control switches
33 #if CONFIG_ONESHOTQ
34 #define ONE_SHOT_Q_ESTIMATE 0
35 #define STRICT_ONE_SHOT_Q 0
36 #endif
37 #define DISABLE_RC_LONG_TERM_MEM 0 32 #define DISABLE_RC_LONG_TERM_MEM 0
38
39 // #define MODE_TEST_HIT_STATS 33 // #define MODE_TEST_HIT_STATS
40 34
41 // #define SPEEDSTATS 1 35 // #define SPEEDSTATS 1
42 #if CONFIG_MULTIPLE_ARF 36 #if CONFIG_MULTIPLE_ARF
43 // Set MIN_GF_INTERVAL to 1 for the full decomposition. 37 // Set MIN_GF_INTERVAL to 1 for the full decomposition.
44 #define MIN_GF_INTERVAL 2 38 #define MIN_GF_INTERVAL 2
45 #else 39 #else
46 #define MIN_GF_INTERVAL 4 40 #define MIN_GF_INTERVAL 4
47 #endif 41 #endif
48 #define DEFAULT_GF_INTERVAL 7 42 #define DEFAULT_GF_INTERVAL 7
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 int recode_loop; 240 int recode_loop;
247 SUBPEL_SEARCH_METHODS subpel_search_method; 241 SUBPEL_SEARCH_METHODS subpel_search_method;
248 int subpel_iters_per_step; 242 int subpel_iters_per_step;
249 int thresh_mult[MAX_MODES]; 243 int thresh_mult[MAX_MODES];
250 int thresh_mult_sub8x8[MAX_REFS]; 244 int thresh_mult_sub8x8[MAX_REFS];
251 int max_step_search_steps; 245 int max_step_search_steps;
252 int reduce_first_step_size; 246 int reduce_first_step_size;
253 int auto_mv_step_size; 247 int auto_mv_step_size;
254 int optimize_coefficients; 248 int optimize_coefficients;
255 int static_segmentation; 249 int static_segmentation;
256 int variance_adaptive_quantization;
257 int comp_inter_joint_search_thresh; 250 int comp_inter_joint_search_thresh;
258 int adaptive_rd_thresh; 251 int adaptive_rd_thresh;
259 int skip_encode_sb; 252 int skip_encode_sb;
260 int skip_encode_frame; 253 int skip_encode_frame;
261 LAST_FRAME_PARTITION_METHOD use_lastframe_partitioning; 254 LAST_FRAME_PARTITION_METHOD use_lastframe_partitioning;
262 TX_SIZE_SEARCH_METHOD tx_size_search_method; 255 TX_SIZE_SEARCH_METHOD tx_size_search_method;
263 int use_lp32x32fdct; 256 int use_lp32x32fdct;
264 int use_avoid_tested_higherror; 257 int use_avoid_tested_higherror;
265 int use_one_partition_size_always; 258 int use_one_partition_size_always;
266 int less_rectangular_check; 259 int less_rectangular_check;
267 int use_square_partition_only; 260 int use_square_partition_only;
268 int mode_skip_start; 261 int mode_skip_start;
269 int reference_masking; 262 int reference_masking;
270 BLOCK_SIZE always_this_block_size; 263 BLOCK_SIZE always_this_block_size;
271 int auto_min_max_partition_size; 264 int auto_min_max_partition_size;
272 BLOCK_SIZE min_partition_size; 265 BLOCK_SIZE min_partition_size;
273 BLOCK_SIZE max_partition_size; 266 BLOCK_SIZE max_partition_size;
274 int adjust_partitioning_from_last_frame; 267 int adjust_partitioning_from_last_frame;
275 int last_partitioning_redo_frequency; 268 int last_partitioning_redo_frequency;
276 int disable_split_mask; 269 int disable_split_mask;
277 int using_small_partition_info; 270 int using_small_partition_info;
278 // TODO(jingning): combine the related motion search speed features 271 // TODO(jingning): combine the related motion search speed features
279 int adaptive_motion_search; 272 int adaptive_motion_search;
273 int adaptive_pred_filter_type;
280 274
281 // Implements various heuristics to skip searching modes 275 // Implements various heuristics to skip searching modes
282 // The heuristics selected are based on flags 276 // The heuristics selected are based on flags
283 // defined in the MODE_SEARCH_SKIP_HEURISTICS enum 277 // defined in the MODE_SEARCH_SKIP_HEURISTICS enum
284 unsigned int mode_search_skip_flags; 278 unsigned int mode_search_skip_flags;
285 // A source variance threshold below which the split mode is disabled 279 // A source variance threshold below which the split mode is disabled
286 unsigned int disable_split_var_thresh; 280 unsigned int disable_split_var_thresh;
287 // A source variance threshold below which filter search is disabled 281 // A source variance threshold below which filter search is disabled
288 // Choose a very large value (UINT_MAX) to use 8-tap always 282 // Choose a very large value (UINT_MAX) to use 8-tap always
289 unsigned int disable_filter_search_var_thresh; 283 unsigned int disable_filter_search_var_thresh;
290 int intra_y_mode_mask[TX_SIZES]; 284 int intra_y_mode_mask[TX_SIZES];
291 int intra_uv_mode_mask[TX_SIZES]; 285 int intra_uv_mode_mask[TX_SIZES];
292 int use_rd_breakout; 286 int use_rd_breakout;
293 int use_uv_intra_rd_estimate; 287 int use_uv_intra_rd_estimate;
294 int use_fast_lpf_pick; 288 int use_fast_lpf_pick;
295 int use_fast_coef_updates; // 0: 2-loop, 1: 1-loop, 2: 1-loop reduced 289 int use_fast_coef_updates; // 0: 2-loop, 1: 1-loop, 2: 1-loop reduced
296 } SPEED_FEATURES; 290 } SPEED_FEATURES;
297 291
292 typedef struct {
293 // Rate targetting variables
294 int this_frame_target;
295 int projected_frame_size;
296 int sb64_target_rate;
297 int last_q[2]; // Separate values for Intra/Inter
298 int last_boosted_qindex; // Last boosted GF/KF/ARF q
299
300 int gfu_boost;
301 int last_boost;
302 int kf_boost;
303
304 double rate_correction_factor;
305 double key_frame_rate_correction_factor;
306 double gf_rate_correction_factor;
307
308 unsigned int frames_since_golden;
309 int frames_till_gf_update_due; // Count down till next GF
310
311 int max_gf_interval;
312 int baseline_gf_interval;
313
314 int64_t key_frame_count;
315 int prior_key_frame_distance[KEY_FRAME_CONTEXT];
316 int per_frame_bandwidth; // Current section per frame bandwidth target
317 int av_per_frame_bandwidth; // Average frame size target for clip
318 int min_frame_bandwidth; // Minimum allocation used for any frame
319
320 int ni_av_qi;
321 int ni_tot_qi;
322 int ni_frames;
323 int avg_frame_qindex;
324 double tot_q;
325 double avg_q;
326
327 int buffer_level;
328 int bits_off_target;
329
330 int rolling_target_bits;
331 int rolling_actual_bits;
332
333 int long_rolling_target_bits;
334 int long_rolling_actual_bits;
335
336 int64_t total_actual_bits;
337 int total_target_vs_actual; // debug stats
338
339 int worst_quality;
340 int active_worst_quality;
341 int best_quality;
342 // int active_best_quality;
343 } RATE_CONTROL;
344
298 typedef struct VP9_COMP { 345 typedef struct VP9_COMP {
299 DECLARE_ALIGNED(16, int16_t, y_quant[QINDEX_RANGE][8]); 346 DECLARE_ALIGNED(16, int16_t, y_quant[QINDEX_RANGE][8]);
300 DECLARE_ALIGNED(16, int16_t, y_quant_shift[QINDEX_RANGE][8]); 347 DECLARE_ALIGNED(16, int16_t, y_quant_shift[QINDEX_RANGE][8]);
301 DECLARE_ALIGNED(16, int16_t, y_zbin[QINDEX_RANGE][8]); 348 DECLARE_ALIGNED(16, int16_t, y_zbin[QINDEX_RANGE][8]);
302 DECLARE_ALIGNED(16, int16_t, y_round[QINDEX_RANGE][8]); 349 DECLARE_ALIGNED(16, int16_t, y_round[QINDEX_RANGE][8]);
303 350
304 DECLARE_ALIGNED(16, int16_t, uv_quant[QINDEX_RANGE][8]); 351 DECLARE_ALIGNED(16, int16_t, uv_quant[QINDEX_RANGE][8]);
305 DECLARE_ALIGNED(16, int16_t, uv_quant_shift[QINDEX_RANGE][8]); 352 DECLARE_ALIGNED(16, int16_t, uv_quant_shift[QINDEX_RANGE][8]);
306 DECLARE_ALIGNED(16, int16_t, uv_zbin[QINDEX_RANGE][8]); 353 DECLARE_ALIGNED(16, int16_t, uv_zbin[QINDEX_RANGE][8]);
307 DECLARE_ALIGNED(16, int16_t, uv_round[QINDEX_RANGE][8]); 354 DECLARE_ALIGNED(16, int16_t, uv_round[QINDEX_RANGE][8]);
308 355
309 #if CONFIG_ALPHA 356 #if CONFIG_ALPHA
310 DECLARE_ALIGNED(16, int16_t, a_quant[QINDEX_RANGE][8]); 357 DECLARE_ALIGNED(16, int16_t, a_quant[QINDEX_RANGE][8]);
311 DECLARE_ALIGNED(16, int16_t, a_quant_shift[QINDEX_RANGE][8]); 358 DECLARE_ALIGNED(16, int16_t, a_quant_shift[QINDEX_RANGE][8]);
312 DECLARE_ALIGNED(16, int16_t, a_zbin[QINDEX_RANGE][8]); 359 DECLARE_ALIGNED(16, int16_t, a_zbin[QINDEX_RANGE][8]);
313 DECLARE_ALIGNED(16, int16_t, a_round[QINDEX_RANGE][8]); 360 DECLARE_ALIGNED(16, int16_t, a_round[QINDEX_RANGE][8]);
314 #endif 361 #endif
315 362
316 MACROBLOCK mb; 363 MACROBLOCK mb;
317 VP9_COMMON common; 364 VP9_COMMON common;
318 VP9_CONFIG oxcf; 365 VP9_CONFIG oxcf;
319 struct rdcost_block_args rdcost_stack; 366 struct rdcost_block_args rdcost_stack;
320
321 struct lookahead_ctx *lookahead; 367 struct lookahead_ctx *lookahead;
322 struct lookahead_entry *source; 368 struct lookahead_entry *source;
323 #if CONFIG_MULTIPLE_ARF 369 #if CONFIG_MULTIPLE_ARF
324 struct lookahead_entry *alt_ref_source[NUM_REF_FRAMES]; 370 struct lookahead_entry *alt_ref_source[REF_FRAMES];
325 #else 371 #else
326 struct lookahead_entry *alt_ref_source; 372 struct lookahead_entry *alt_ref_source;
327 #endif 373 #endif
328 374
329 YV12_BUFFER_CONFIG *Source; 375 YV12_BUFFER_CONFIG *Source;
330 YV12_BUFFER_CONFIG *un_scaled_source; 376 YV12_BUFFER_CONFIG *un_scaled_source;
331 YV12_BUFFER_CONFIG scaled_source; 377 YV12_BUFFER_CONFIG scaled_source;
332 378
333 unsigned int frames_till_alt_ref_frame; 379 unsigned int frames_till_alt_ref_frame;
334 int source_alt_ref_pending; 380 int source_alt_ref_pending;
335 int source_alt_ref_active; 381 int source_alt_ref_active;
336 382
337 int is_src_frame_alt_ref; 383 int is_src_frame_alt_ref;
338 384
339 int gold_is_last; // gold same as last frame ( short circuit gold searches) 385 int gold_is_last; // gold same as last frame ( short circuit gold searches)
340 int alt_is_last; // Alt same as last ( short circuit altref search) 386 int alt_is_last; // Alt same as last ( short circuit altref search)
341 int gold_is_alt; // don't do both alt and gold search ( just do gold). 387 int gold_is_alt; // don't do both alt and gold search ( just do gold).
342 388
343 int scaled_ref_idx[3]; 389 int scaled_ref_idx[3];
344 int lst_fb_idx; 390 int lst_fb_idx;
345 int gld_fb_idx; 391 int gld_fb_idx;
346 int alt_fb_idx; 392 int alt_fb_idx;
347 393
348 int current_layer; 394 int current_layer;
349 int use_svc; 395 int use_svc;
350 396
351 #if CONFIG_MULTIPLE_ARF 397 #if CONFIG_MULTIPLE_ARF
352 int alt_ref_fb_idx[NUM_REF_FRAMES - 3]; 398 int alt_ref_fb_idx[REF_FRAMES - 3];
353 #endif 399 #endif
354 int refresh_last_frame; 400 int refresh_last_frame;
355 int refresh_golden_frame; 401 int refresh_golden_frame;
356 int refresh_alt_ref_frame; 402 int refresh_alt_ref_frame;
357 YV12_BUFFER_CONFIG last_frame_uf; 403 YV12_BUFFER_CONFIG last_frame_uf;
358 404
359 TOKENEXTRA *tok; 405 TOKENEXTRA *tok;
360 unsigned int tok_count[4][1 << 6]; 406 unsigned int tok_count[4][1 << 6];
361 407
362 408
(...skipping 15 matching lines...) Expand all
378 unsigned int sub8x8_mode_chosen_counts[MAX_REFS]; 424 unsigned int sub8x8_mode_chosen_counts[MAX_REFS];
379 int64_t mode_skip_mask; 425 int64_t mode_skip_mask;
380 int ref_frame_mask; 426 int ref_frame_mask;
381 int set_ref_frame_mask; 427 int set_ref_frame_mask;
382 428
383 int rd_threshes[MAX_SEGMENTS][BLOCK_SIZES][MAX_MODES]; 429 int rd_threshes[MAX_SEGMENTS][BLOCK_SIZES][MAX_MODES];
384 int rd_thresh_freq_fact[BLOCK_SIZES][MAX_MODES]; 430 int rd_thresh_freq_fact[BLOCK_SIZES][MAX_MODES];
385 int rd_thresh_sub8x8[MAX_SEGMENTS][BLOCK_SIZES][MAX_REFS]; 431 int rd_thresh_sub8x8[MAX_SEGMENTS][BLOCK_SIZES][MAX_REFS];
386 int rd_thresh_freq_sub8x8[BLOCK_SIZES][MAX_REFS]; 432 int rd_thresh_freq_sub8x8[BLOCK_SIZES][MAX_REFS];
387 433
388 int64_t rd_comp_pred_diff[NB_PREDICTION_TYPES]; 434 int64_t rd_comp_pred_diff[REFERENCE_MODES];
389 int64_t rd_prediction_type_threshes[4][NB_PREDICTION_TYPES]; 435 int64_t rd_prediction_type_threshes[4][REFERENCE_MODES];
390 unsigned int intra_inter_count[INTRA_INTER_CONTEXTS][2]; 436 unsigned int intra_inter_count[INTRA_INTER_CONTEXTS][2];
391 unsigned int comp_inter_count[COMP_INTER_CONTEXTS][2]; 437 unsigned int comp_inter_count[COMP_INTER_CONTEXTS][2];
392 unsigned int single_ref_count[REF_CONTEXTS][2][2]; 438 unsigned int single_ref_count[REF_CONTEXTS][2][2];
393 unsigned int comp_ref_count[REF_CONTEXTS][2]; 439 unsigned int comp_ref_count[REF_CONTEXTS][2];
394 440
395 int64_t rd_tx_select_diff[TX_MODES]; 441 int64_t rd_tx_select_diff[TX_MODES];
396 // FIXME(rbultje) can this overflow? 442 // FIXME(rbultje) can this overflow?
397 int rd_tx_select_threshes[4][TX_MODES]; 443 int rd_tx_select_threshes[4][TX_MODES];
398 444
399 int64_t rd_filter_diff[SWITCHABLE_FILTER_CONTEXTS]; 445 int64_t rd_filter_diff[SWITCHABLE_FILTER_CONTEXTS];
400 int64_t rd_filter_threshes[4][SWITCHABLE_FILTER_CONTEXTS]; 446 int64_t rd_filter_threshes[4][SWITCHABLE_FILTER_CONTEXTS];
401 int64_t rd_filter_cache[SWITCHABLE_FILTER_CONTEXTS]; 447 int64_t rd_filter_cache[SWITCHABLE_FILTER_CONTEXTS];
402 448
403 int RDMULT; 449 int RDMULT;
404 int RDDIV; 450 int RDDIV;
405 451
406 CODING_CONTEXT coding_context; 452 CODING_CONTEXT coding_context;
407 453
408 // Rate targetting variables 454 int zbin_mode_boost;
409 int this_frame_target; 455 int zbin_mode_boost_enabled;
410 int projected_frame_size;
411 int last_q[2]; // Separate values for Intra/Inter
412 int last_boosted_qindex; // Last boosted GF/KF/ARF q
413
414 double rate_correction_factor;
415 double key_frame_rate_correction_factor;
416 double gf_rate_correction_factor;
417
418 unsigned int frames_since_golden;
419 int frames_till_gf_update_due; // Count down till next GF
420
421 int gf_overspend_bits; // cumulative bits overspent because of GF boost
422
423 int non_gf_bitrate_adjustment; // Following GF to recover extra bits spent
424
425 int kf_overspend_bits; // Bits spent on key frames to be recovered on inters
426 int kf_bitrate_adjustment; // number of bits to recover on each inter frame.
427 int max_gf_interval;
428 int baseline_gf_interval;
429 int active_arnr_frames; // <= cpi->oxcf.arnr_max_frames 456 int active_arnr_frames; // <= cpi->oxcf.arnr_max_frames
430 int active_arnr_strength; // <= cpi->oxcf.arnr_max_strength 457 int active_arnr_strength; // <= cpi->oxcf.arnr_max_strength
431 458
432 int64_t key_frame_count;
433 int prior_key_frame_distance[KEY_FRAME_CONTEXT];
434 int per_frame_bandwidth; // Current section per frame bandwidth target
435 int av_per_frame_bandwidth; // Average frame size target for clip
436 int min_frame_bandwidth; // Minimum allocation used for any frame
437 int inter_frame_target;
438 double output_framerate; 459 double output_framerate;
439 int64_t last_time_stamp_seen; 460 int64_t last_time_stamp_seen;
440 int64_t last_end_time_stamp_seen; 461 int64_t last_end_time_stamp_seen;
441 int64_t first_time_stamp_ever; 462 int64_t first_time_stamp_ever;
442 463
443 int ni_av_qi; 464 RATE_CONTROL rc;
444 int ni_tot_qi;
445 int ni_frames;
446 int avg_frame_qindex;
447 double tot_q;
448 double avg_q;
449
450 int zbin_mode_boost;
451 int zbin_mode_boost_enabled;
452
453 int64_t total_byte_count;
454
455 int buffered_mode;
456
457 int buffer_level;
458 int bits_off_target;
459
460 int rolling_target_bits;
461 int rolling_actual_bits;
462
463 int long_rolling_target_bits;
464 int long_rolling_actual_bits;
465
466 int64_t total_actual_bits;
467 int total_target_vs_actual; // debug stats
468
469 int worst_quality;
470 int active_worst_quality;
471 int best_quality;
472 int active_best_quality;
473 465
474 int cq_target_quality; 466 int cq_target_quality;
475 467
476 int y_mode_count[4][INTRA_MODES]; 468 int y_mode_count[4][INTRA_MODES];
477 int y_uv_mode_count[INTRA_MODES][INTRA_MODES]; 469 int y_uv_mode_count[INTRA_MODES][INTRA_MODES];
478 unsigned int partition_count[PARTITION_CONTEXTS][PARTITION_TYPES];
479 470
480 nmv_context_counts NMVcount; 471 nmv_context_counts NMVcount;
481 472
482 vp9_coeff_count coef_counts[TX_SIZES][BLOCK_TYPES]; 473 vp9_coeff_count coef_counts[TX_SIZES][PLANE_TYPES];
483 vp9_coeff_probs_model frame_coef_probs[TX_SIZES][BLOCK_TYPES]; 474 vp9_coeff_probs_model frame_coef_probs[TX_SIZES][PLANE_TYPES];
484 vp9_coeff_stats frame_branch_ct[TX_SIZES][BLOCK_TYPES]; 475 vp9_coeff_stats frame_branch_ct[TX_SIZES][PLANE_TYPES];
485 476
486 int gfu_boost;
487 int last_boost;
488 int kf_boost;
489 int kf_zeromotion_pct; 477 int kf_zeromotion_pct;
490 int gf_zeromotion_pct; 478 int gf_zeromotion_pct;
491 479
492 int64_t target_bandwidth; 480 int64_t target_bandwidth;
493 struct vpx_codec_pkt_list *output_pkt_list; 481 struct vpx_codec_pkt_list *output_pkt_list;
494 482
495 #if 0 483 #if 0
496 // Experimental code for lagged and one pass 484 // Experimental code for lagged and one pass
497 ONEPASS_FRAMESTATS one_pass_frame_stats[MAX_LAG_BUFFERS]; 485 ONEPASS_FRAMESTATS one_pass_frame_stats[MAX_LAG_BUFFERS];
498 int one_pass_frame_index; 486 int one_pass_frame_index;
499 #endif 487 #endif
500 MBGRAPH_FRAME_STATS mbgraph_stats[MAX_LAG_BUFFERS]; 488 MBGRAPH_FRAME_STATS mbgraph_stats[MAX_LAG_BUFFERS];
501 int mbgraph_n_frames; // number of frames filled in the above 489 int mbgraph_n_frames; // number of frames filled in the above
502 int static_mb_pct; // % forced skip mbs by segmentation 490 int static_mb_pct; // % forced skip mbs by segmentation
503 int seg0_progress, seg0_idx, seg0_cnt; 491 int seg0_progress, seg0_idx, seg0_cnt;
504 492
505 int decimation_factor; 493 int decimation_factor;
506 int decimation_count; 494 int decimation_count;
507 495
508 // for real time encoding 496 // for real time encoding
509 int avg_encode_time; // microsecond
510 int avg_pick_mode_time; // microsecond
511 int speed; 497 int speed;
512 unsigned int cpu_freq; // Mhz
513 int compressor_speed; 498 int compressor_speed;
514 499
515 int interquantizer;
516 int goldfreq;
517 int auto_worst_q;
518 int cpu_used; 500 int cpu_used;
519 int pass; 501 int pass;
520 502
521 vp9_prob last_skip_false_probs[3][MBSKIP_CONTEXTS]; 503 vp9_prob last_skip_false_probs[3][MBSKIP_CONTEXTS];
522 int last_skip_probs_q[3]; 504 int last_skip_probs_q[3];
523 505
524 int ref_frame_flags; 506 int ref_frame_flags;
525 507
526 SPEED_FEATURES sf; 508 SPEED_FEATURES sf;
527 int error_bins[1024]; 509 int error_bins[1024];
528 510
529 unsigned int max_mv_magnitude; 511 unsigned int max_mv_magnitude;
530 int mv_step_param; 512 int mv_step_param;
531 513
532 // Data used for real time conferencing mode to help determine if it
533 // would be good to update the gf
534 int inter_zz_count;
535 int gf_bad_count;
536 int gf_update_recommended;
537
538 unsigned char *segmentation_map; 514 unsigned char *segmentation_map;
539 515
540 // segment threashold for encode breakout 516 // segment threashold for encode breakout
541 int segment_encode_breakout[MAX_SEGMENTS]; 517 int segment_encode_breakout[MAX_SEGMENTS];
542 518
519 unsigned char *complexity_map;
520
543 unsigned char *active_map; 521 unsigned char *active_map;
544 unsigned int active_map_enabled; 522 unsigned int active_map_enabled;
545 523
546 fractional_mv_step_fp *find_fractional_mv_step; 524 fractional_mv_step_fp *find_fractional_mv_step;
547 fractional_mv_step_comp_fp *find_fractional_mv_step_comp; 525 fractional_mv_step_comp_fp *find_fractional_mv_step_comp;
548 vp9_full_search_fn_t full_search_sad; 526 vp9_full_search_fn_t full_search_sad;
549 vp9_refining_search_fn_t refining_search_sad; 527 vp9_refining_search_fn_t refining_search_sad;
550 vp9_diamond_search_fn_t diamond_search_sad; 528 vp9_diamond_search_fn_t diamond_search_sad;
551 vp9_variance_fn_ptr_t fn_ptr[BLOCK_SIZES]; 529 vp9_variance_fn_ptr_t fn_ptr[BLOCK_SIZES];
552 uint64_t time_receive_data; 530 uint64_t time_receive_data;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 // Error score of frames still to be coded in kf group 563 // Error score of frames still to be coded in kf group
586 int64_t kf_group_error_left; 564 int64_t kf_group_error_left;
587 565
588 // Projected Bits available for a group of frames including 1 GF or ARF 566 // Projected Bits available for a group of frames including 1 GF or ARF
589 int64_t gf_group_bits; 567 int64_t gf_group_bits;
590 // Bits for the golden frame or ARF - 2 pass only 568 // Bits for the golden frame or ARF - 2 pass only
591 int gf_bits; 569 int gf_bits;
592 int alt_extra_bits; 570 int alt_extra_bits;
593 571
594 int sr_update_lag; 572 int sr_update_lag;
595 double est_max_qcorrection_factor;
596 } twopass; 573 } twopass;
597 574
598 YV12_BUFFER_CONFIG alt_ref_buffer; 575 YV12_BUFFER_CONFIG alt_ref_buffer;
599 YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS]; 576 YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS];
600 int fixed_divide[512]; 577 int fixed_divide[512];
601 578
602 #if CONFIG_INTERNAL_STATS 579 #if CONFIG_INTERNAL_STATS
603 int count; 580 int count;
604 double total_y; 581 double total_y;
605 double total_u; 582 double total_u;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 return 0; 677 return 0;
701 } else if (ref_frame == GOLDEN_FRAME) { 678 } else if (ref_frame == GOLDEN_FRAME) {
702 return 1; 679 return 1;
703 } else { 680 } else {
704 return 2; 681 return 2;
705 } 682 }
706 } 683 }
707 684
708 void vp9_encode_frame(VP9_COMP *cpi); 685 void vp9_encode_frame(VP9_COMP *cpi);
709 686
710 void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest, 687 void vp9_pack_bitstream(VP9_COMP *cpi, uint8_t *dest, size_t *size);
711 unsigned long *size);
712 688
713 void vp9_activity_masking(VP9_COMP *cpi, MACROBLOCK *x); 689 void vp9_activity_masking(VP9_COMP *cpi, MACROBLOCK *x);
714 690
715 void vp9_set_speed_features(VP9_COMP *cpi); 691 void vp9_set_speed_features(VP9_COMP *cpi);
716 692
717 int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest); 693 int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest);
718 694
719 void vp9_alloc_compressor_data(VP9_COMP *cpi); 695 void vp9_alloc_compressor_data(VP9_COMP *cpi);
720 696
721 int vp9_compute_qdelta(VP9_COMP *cpi, double qstart, double qtarget); 697 int vp9_compute_qdelta(const VP9_COMP *cpi, double qstart, double qtarget);
722 698
723 static int get_token_alloc(int mb_rows, int mb_cols) { 699 static int get_token_alloc(int mb_rows, int mb_cols) {
724 return mb_rows * mb_cols * (48 * 16 + 4); 700 return mb_rows * mb_cols * (48 * 16 + 4);
725 } 701 }
726 702
727 #endif // VP9_ENCODER_VP9_ONYX_INT_H_ 703 #endif // VP9_ENCODER_VP9_ONYX_INT_H_
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_onyx_if.c ('k') | source/libvpx/vp9/encoder/vp9_quantize.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698