Lines Matching full:rc
219 const RATE_CONTROL *rc = &cpi->rc; in vp9_rc_clamp_pframe_target_size() local
223 VPXMAX(rc->min_frame_bandwidth, rc->avg_frame_bandwidth >> 5); in vp9_rc_clamp_pframe_target_size()
225 if (cpi->refresh_golden_frame && rc->is_src_frame_alt_ref) { in vp9_rc_clamp_pframe_target_size()
234 if (target > rc->max_frame_bandwidth) target = rc->max_frame_bandwidth; in vp9_rc_clamp_pframe_target_size()
238 (int64_t)rc->avg_frame_bandwidth * oxcf->rc_max_inter_bitrate_pct / 100; in vp9_rc_clamp_pframe_target_size()
246 const RATE_CONTROL *rc = &cpi->rc; in vp9_rc_clamp_iframe_target_size() local
250 (int64_t)rc->avg_frame_bandwidth * oxcf->rc_max_intra_bitrate_pct / 100; in vp9_rc_clamp_iframe_target_size()
253 if (target > rc->max_frame_bandwidth) target = rc->max_frame_bandwidth; in vp9_rc_clamp_iframe_target_size()
262 RATE_CONTROL *const rc = &cpi->rc; in vp9_update_buffer_level_preencode() local
263 rc->bits_off_target += rc->avg_frame_bandwidth; in vp9_update_buffer_level_preencode()
265 rc->bits_off_target = VPXMIN(rc->bits_off_target, rc->maximum_buffer_size); in vp9_update_buffer_level_preencode()
266 rc->buffer_level = rc->bits_off_target; in vp9_update_buffer_level_preencode()
286 RATE_CONTROL *const lrc = &lc->rc; in vp9_update_buffer_level_svc_preencode()
303 cpi->rc.bits_off_target = lrc->bits_off_target; in vp9_update_buffer_level_svc_preencode()
304 cpi->rc.buffer_level = lrc->buffer_level; in vp9_update_buffer_level_svc_preencode()
319 RATE_CONTROL *lrc = &lc->rc; in update_layer_buffer_level_postencode()
331 RATE_CONTROL *const rc = &cpi->rc; in update_buffer_level_postencode() local
332 rc->bits_off_target -= encoded_frame_size; in update_buffer_level_postencode()
334 rc->bits_off_target = VPXMIN(rc->bits_off_target, rc->maximum_buffer_size); in update_buffer_level_postencode()
336 // level go below threshold, given here as -rc->maximum_ buffer_size. in update_buffer_level_postencode()
339 rc->bits_off_target = VPXMAX(rc->bits_off_target, -rc->maximum_buffer_size); in update_buffer_level_postencode()
341 rc->buffer_level = rc->bits_off_target; in update_buffer_level_postencode()
373 void vp9_rc_init(const VP9EncoderConfig *oxcf, int pass, RATE_CONTROL *rc) { in vp9_rc_init() argument
377 rc->avg_frame_qindex[KEY_FRAME] = oxcf->worst_allowed_q; in vp9_rc_init()
378 rc->avg_frame_qindex[INTER_FRAME] = oxcf->worst_allowed_q; in vp9_rc_init()
380 rc->avg_frame_qindex[KEY_FRAME] = in vp9_rc_init()
382 rc->avg_frame_qindex[INTER_FRAME] = in vp9_rc_init()
386 rc->last_q[KEY_FRAME] = oxcf->best_allowed_q; in vp9_rc_init()
387 rc->last_q[INTER_FRAME] = oxcf->worst_allowed_q; in vp9_rc_init()
389 rc->buffer_level = rc->starting_buffer_level; in vp9_rc_init()
390 rc->bits_off_target = rc->starting_buffer_level; in vp9_rc_init()
392 rc->rolling_target_bits = rc->avg_frame_bandwidth; in vp9_rc_init()
393 rc->rolling_actual_bits = rc->avg_frame_bandwidth; in vp9_rc_init()
394 rc->long_rolling_target_bits = rc->avg_frame_bandwidth; in vp9_rc_init()
395 rc->long_rolling_actual_bits = rc->avg_frame_bandwidth; in vp9_rc_init()
397 rc->total_actual_bits = 0; in vp9_rc_init()
398 rc->total_target_bits = 0; in vp9_rc_init()
399 rc->total_target_vs_actual = 0; in vp9_rc_init()
400 rc->avg_frame_low_motion = 0; in vp9_rc_init()
401 rc->count_last_scene_change = 0; in vp9_rc_init()
402 rc->af_ratio_onepass_vbr = 10; in vp9_rc_init()
403 rc->prev_avg_source_sad_lag = 0; in vp9_rc_init()
404 rc->high_source_sad = 0; in vp9_rc_init()
405 rc->reset_high_source_sad = 0; in vp9_rc_init()
406 rc->high_source_sad_lagindex = -1; in vp9_rc_init()
407 rc->high_num_blocks_with_motion = 0; in vp9_rc_init()
408 rc->hybrid_intra_scene_change = 0; in vp9_rc_init()
409 rc->re_encode_maxq_scene_change = 0; in vp9_rc_init()
410 rc->alt_ref_gf_group = 0; in vp9_rc_init()
411 rc->last_frame_is_src_altref = 0; in vp9_rc_init()
412 rc->fac_active_worst_inter = 150; in vp9_rc_init()
413 rc->fac_active_worst_gf = 100; in vp9_rc_init()
414 rc->force_qpmin = 0; in vp9_rc_init()
415 for (i = 0; i < MAX_LAG_BUFFERS; ++i) rc->avg_source_sad[i] = 0; in vp9_rc_init()
416 rc->frames_to_key = 0; in vp9_rc_init()
417 rc->frames_since_key = 8; // Sensible default for first frame. in vp9_rc_init()
418 rc->this_key_frame_forced = 0; in vp9_rc_init()
419 rc->next_key_frame_forced = 0; in vp9_rc_init()
420 rc->source_alt_ref_pending = 0; in vp9_rc_init()
421 rc->source_alt_ref_active = 0; in vp9_rc_init()
423 rc->frames_till_gf_update_due = 0; in vp9_rc_init()
424 rc->constrain_gf_key_freq_onepass_vbr = 1; in vp9_rc_init()
425 rc->ni_av_qi = oxcf->worst_allowed_q; in vp9_rc_init()
426 rc->ni_tot_qi = 0; in vp9_rc_init()
427 rc->ni_frames = 0; in vp9_rc_init()
429 rc->tot_q = 0.0; in vp9_rc_init()
430 rc->avg_q = vp9_convert_qindex_to_q(oxcf->worst_allowed_q, oxcf->bit_depth); in vp9_rc_init()
433 rc->rate_correction_factors[i] = 1.0; in vp9_rc_init()
434 rc->damped_adjustment[i] = 0; in vp9_rc_init()
437 rc->min_gf_interval = oxcf->min_gf_interval; in vp9_rc_init()
438 rc->max_gf_interval = oxcf->max_gf_interval; in vp9_rc_init()
439 if (rc->min_gf_interval == 0) in vp9_rc_init()
440 rc->min_gf_interval = vp9_rc_get_default_min_gf_interval( in vp9_rc_init()
442 if (rc->max_gf_interval == 0) in vp9_rc_init()
443 rc->max_gf_interval = vp9_rc_get_default_max_gf_interval( in vp9_rc_init()
444 oxcf->init_framerate, rc->min_gf_interval); in vp9_rc_init()
445 rc->baseline_gf_interval = (rc->min_gf_interval + rc->max_gf_interval) / 2; in vp9_rc_init()
447 rc->static_scene_max_gf_interval = FIXED_GF_INTERVAL; in vp9_rc_init()
449 rc->static_scene_max_gf_interval = MAX_STATIC_GF_GROUP_LENGTH; in vp9_rc_init()
452 rc->force_max_q = 0; in vp9_rc_init()
453 rc->last_post_encode_dropped_scene_change = 0; in vp9_rc_init()
454 rc->use_post_encode_drop = 0; in vp9_rc_init()
455 rc->ext_use_post_encode_drop = 0; in vp9_rc_init()
456 rc->disable_overshoot_maxq_cbr = 0; in vp9_rc_init()
457 rc->arf_active_best_quality_adjustment_factor = 1.0; in vp9_rc_init()
458 rc->arf_increase_active_best_quality = 0; in vp9_rc_init()
459 rc->preserve_arf_as_gld = 0; in vp9_rc_init()
460 rc->preserve_next_arf_as_gld = 0; in vp9_rc_init()
461 rc->show_arf_as_gld = 0; in vp9_rc_init()
467 RATE_CONTROL *const rc = &cpi->rc; in check_buffer_above_thresh() local
468 return (rc->buffer_level > drop_mark); in check_buffer_above_thresh()
479 RATE_CONTROL *lrc = &lc->rc; in check_buffer_above_thresh()
494 RATE_CONTROL *const rc = &cpi->rc; in check_buffer_below_thresh() local
495 return (rc->buffer_level <= drop_mark); in check_buffer_below_thresh()
507 RATE_CONTROL *lrc = &lc->rc; in check_buffer_below_thresh()
528 RATE_CONTROL *const rc = &cpi->rc; in vp9_test_drop() local
546 if ((rc->buffer_level < 0 && svc->framedrop_mode != FULL_SUPERFRAME_DROP) || in vp9_test_drop()
555 (int)(drop_frames_water_mark * rc->optimal_buffer_level / 100); in vp9_test_drop()
557 (rc->decimation_factor > 0)) { in vp9_test_drop()
558 --rc->decimation_factor; in vp9_test_drop()
560 rc->decimation_factor == 0) { in vp9_test_drop()
561 rc->decimation_factor = 1; in vp9_test_drop()
563 if (rc->decimation_factor > 0) { in vp9_test_drop()
564 if (rc->decimation_count > 0) { in vp9_test_drop()
565 --rc->decimation_count; in vp9_test_drop()
568 rc->decimation_count = rc->decimation_factor; in vp9_test_drop()
572 rc->decimation_count = 0; in vp9_test_drop()
582 cpi->rc.buffer_level + cpi->rc.avg_frame_bandwidth - (int64_t)frame_size; in post_encode_drop_cbr()
590 if (cpi->rc.high_source_sad || in post_encode_drop_cbr()
592 cpi->rc.last_post_encode_dropped_scene_change = 1; in post_encode_drop_cbr()
594 cpi->rc.force_max_q = 1; in post_encode_drop_cbr()
595 cpi->rc.avg_frame_qindex[INTER_FRAME] = cpi->rc.worst_quality; in post_encode_drop_cbr()
613 RATE_CONTROL *lrc = &lc->rc; in post_encode_drop_cbr()
615 lrc->avg_frame_qindex[INTER_FRAME] = cpi->rc.worst_quality; in post_encode_drop_cbr()
622 cpi->rc.force_max_q = 0; in post_encode_drop_cbr()
623 cpi->rc.last_post_encode_dropped_scene_change = 0; in post_encode_drop_cbr()
681 if (!cpi->rc.reset_high_source_sad && in adjust_q_cbr()
684 (cpi->rc.rc_1_frame * cpi->rc.rc_2_frame == -1) && in adjust_q_cbr()
685 cpi->rc.q_1_frame != cpi->rc.q_2_frame) { in adjust_q_cbr()
686 int qclamp = clamp(q, VPXMIN(cpi->rc.q_1_frame, cpi->rc.q_2_frame), in adjust_q_cbr()
687 VPXMAX(cpi->rc.q_1_frame, cpi->rc.q_2_frame)); in adjust_q_cbr()
691 if (cpi->rc.rc_1_frame == -1 && q > qclamp) in adjust_q_cbr()
699 return VPXMAX(VPXMIN(q, cpi->rc.worst_quality), cpi->rc.best_quality); in adjust_q_cbr()
703 const RATE_CONTROL *const rc = &cpi->rc; in get_rate_correction_factor() local
708 rcf = rc->rate_correction_factors[KF_STD]; in get_rate_correction_factor()
712 rcf = rc->rate_correction_factors[rf_lvl]; in get_rate_correction_factor()
715 !rc->is_src_frame_alt_ref && !cpi->use_svc && in get_rate_correction_factor()
717 rcf = rc->rate_correction_factors[GF_ARF_STD]; in get_rate_correction_factor()
719 rcf = rc->rate_correction_factors[INTER_NORMAL]; in get_rate_correction_factor()
721 rcf *= rcf_mult[rc->frame_size_selector]; in get_rate_correction_factor()
726 RATE_CONTROL *const rc = &cpi->rc; in set_rate_correction_factor() local
730 factor /= rcf_mult[cpi->rc.frame_size_selector]; in set_rate_correction_factor()
735 rc->rate_correction_factors[KF_STD] = factor; in set_rate_correction_factor()
739 rc->rate_correction_factors[rf_lvl] = factor; in set_rate_correction_factor()
742 !rc->is_src_frame_alt_ref && !cpi->use_svc && in set_rate_correction_factor()
744 rc->rate_correction_factors[GF_ARF_STD] = factor; in set_rate_correction_factor()
746 rc->rate_correction_factors[INTER_NORMAL] = factor; in set_rate_correction_factor()
761 if (cpi->rc.is_src_frame_alt_ref) return; in vp9_rc_update_rate_correction_factors()
780 correction_factor = (int)((100 * (int64_t)cpi->rc.projected_frame_size) / in vp9_rc_update_rate_correction_factors()
784 if (!cpi->rc.damped_adjustment[rf_lvl]) { in vp9_rc_update_rate_correction_factors()
786 cpi->rc.damped_adjustment[rf_lvl] = 1; in vp9_rc_update_rate_correction_factors()
794 cpi->rc.q_2_frame = cpi->rc.q_1_frame; in vp9_rc_update_rate_correction_factors()
795 cpi->rc.q_1_frame = cm->base_qindex; in vp9_rc_update_rate_correction_factors()
796 cpi->rc.rc_2_frame = cpi->rc.rc_1_frame; in vp9_rc_update_rate_correction_factors()
798 cpi->rc.rc_1_frame = -1; in vp9_rc_update_rate_correction_factors()
800 cpi->rc.rc_1_frame = 1; in vp9_rc_update_rate_correction_factors()
802 cpi->rc.rc_1_frame = 0; in vp9_rc_update_rate_correction_factors()
805 if (cpi->rc.rc_1_frame == -1 && cpi->rc.rc_2_frame == 1 && in vp9_rc_update_rate_correction_factors()
807 cpi->rc.rc_2_frame = 0; in vp9_rc_update_rate_correction_factors()
892 static int get_kf_active_quality(const RATE_CONTROL *const rc, int q, in get_kf_active_quality() argument
898 return get_active_quality(q, rc->kf_boost, kf_low, kf_high, in get_kf_active_quality()
905 const RATE_CONTROL *const rc = &cpi->rc; in get_gf_active_quality() local
911 : rc->gfu_boost; in get_gf_active_quality()
919 const RATE_CONTROL *const rc = &cpi->rc; in calc_active_worst_quality_one_pass_vbr() local
925 curr_frame == 0 ? rc->worst_quality : rc->last_q[KEY_FRAME] << 1; in calc_active_worst_quality_one_pass_vbr()
927 if (!rc->is_src_frame_alt_ref && !cpi->use_svc && in calc_active_worst_quality_one_pass_vbr()
931 ? rc->last_q[KEY_FRAME] * 5 >> 2 in calc_active_worst_quality_one_pass_vbr()
932 : rc->last_q[INTER_FRAME] * rc->fac_active_worst_gf / 100; in calc_active_worst_quality_one_pass_vbr()
935 ? rc->last_q[KEY_FRAME] << 1 in calc_active_worst_quality_one_pass_vbr()
936 : rc->avg_frame_qindex[INTER_FRAME] * in calc_active_worst_quality_one_pass_vbr()
937 rc->fac_active_worst_inter / 100; in calc_active_worst_quality_one_pass_vbr()
940 return VPXMIN(active_worst_quality, rc->worst_quality); in calc_active_worst_quality_one_pass_vbr()
951 const RATE_CONTROL *rc = &cpi->rc; in calc_active_worst_quality_one_pass_cbr() local
953 int64_t critical_level = rc->optimal_buffer_level >> 3; in calc_active_worst_quality_one_pass_cbr()
959 if (frame_is_intra_only(cm) || rc->reset_high_source_sad || rc->force_max_q) in calc_active_worst_quality_one_pass_cbr()
960 return rc->worst_quality; in calc_active_worst_quality_one_pass_cbr()
967 ? VPXMIN(rc->avg_frame_qindex[INTER_FRAME], in calc_active_worst_quality_one_pass_cbr()
968 rc->avg_frame_qindex[KEY_FRAME]) in calc_active_worst_quality_one_pass_cbr()
969 : rc->avg_frame_qindex[INTER_FRAME]; in calc_active_worst_quality_one_pass_cbr()
970 active_worst_quality = VPXMIN(rc->worst_quality, (ambient_qp * 5) >> 2); in calc_active_worst_quality_one_pass_cbr()
978 const RATE_CONTROL *lrc = &lc->rc; in calc_active_worst_quality_one_pass_cbr()
980 active_worst_quality = VPXMIN(rc->worst_quality, (ambient_qp * 9) >> 3); in calc_active_worst_quality_one_pass_cbr()
983 if (rc->buffer_level > rc->optimal_buffer_level) { in calc_active_worst_quality_one_pass_cbr()
990 buff_lvl_step = ((rc->maximum_buffer_size - rc->optimal_buffer_level) / in calc_active_worst_quality_one_pass_cbr()
993 adjustment = (int)((rc->buffer_level - rc->optimal_buffer_level) / in calc_active_worst_quality_one_pass_cbr()
997 } else if (rc->buffer_level > critical_level) { in calc_active_worst_quality_one_pass_cbr()
1000 buff_lvl_step = (rc->optimal_buffer_level - critical_level); in calc_active_worst_quality_one_pass_cbr()
1002 adjustment = (int)((rc->worst_quality - ambient_qp) * in calc_active_worst_quality_one_pass_cbr()
1003 (rc->optimal_buffer_level - rc->buffer_level) / in calc_active_worst_quality_one_pass_cbr()
1010 active_worst_quality = rc->worst_quality; in calc_active_worst_quality_one_pass_cbr()
1019 const RATE_CONTROL *const rc = &cpi->rc; in rc_pick_q_and_bounds_one_pass_cbr() local
1027 active_best_quality = rc->best_quality; in rc_pick_q_and_bounds_one_pass_cbr()
1031 if (rc->this_key_frame_forced) { in rc_pick_q_and_bounds_one_pass_cbr()
1032 int qindex = rc->last_boosted_qindex; in rc_pick_q_and_bounds_one_pass_cbr()
1035 rc, last_boosted_q, (last_boosted_q * 0.75), cm->bit_depth); in rc_pick_q_and_bounds_one_pass_cbr()
1036 active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality); in rc_pick_q_and_bounds_one_pass_cbr()
1043 rc, rc->avg_frame_qindex[KEY_FRAME], cm->bit_depth); in rc_pick_q_and_bounds_one_pass_cbr()
1054 vp9_compute_qdelta(rc, q_val, q_val * q_adj_factor, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_cbr()
1056 } else if (!rc->is_src_frame_alt_ref && !cpi->use_svc && in rc_pick_q_and_bounds_one_pass_cbr()
1062 if (rc->frames_since_key > 1 && in rc_pick_q_and_bounds_one_pass_cbr()
1063 rc->avg_frame_qindex[INTER_FRAME] < active_worst_quality) { in rc_pick_q_and_bounds_one_pass_cbr()
1064 q = rc->avg_frame_qindex[INTER_FRAME]; in rc_pick_q_and_bounds_one_pass_cbr()
1072 if (rc->avg_frame_qindex[INTER_FRAME] < active_worst_quality) in rc_pick_q_and_bounds_one_pass_cbr()
1073 active_best_quality = rtc_minq[rc->avg_frame_qindex[INTER_FRAME]]; in rc_pick_q_and_bounds_one_pass_cbr()
1077 if (rc->avg_frame_qindex[KEY_FRAME] < active_worst_quality) in rc_pick_q_and_bounds_one_pass_cbr()
1078 active_best_quality = rtc_minq[rc->avg_frame_qindex[KEY_FRAME]]; in rc_pick_q_and_bounds_one_pass_cbr()
1086 clamp(active_best_quality, rc->best_quality, rc->worst_quality); in rc_pick_q_and_bounds_one_pass_cbr()
1088 clamp(active_worst_quality, active_best_quality, rc->worst_quality); in rc_pick_q_and_bounds_one_pass_cbr()
1094 if (frame_is_intra_only(cm) && rc->this_key_frame_forced) { in rc_pick_q_and_bounds_one_pass_cbr()
1095 q = rc->last_boosted_qindex; in rc_pick_q_and_bounds_one_pass_cbr()
1097 q = vp9_rc_regulate_q(cpi, rc->this_frame_target, active_best_quality, in rc_pick_q_and_bounds_one_pass_cbr()
1101 if (rc->this_frame_target >= rc->max_frame_bandwidth) in rc_pick_q_and_bounds_one_pass_cbr()
1108 assert(*top_index <= rc->worst_quality && *top_index >= rc->best_quality); in rc_pick_q_and_bounds_one_pass_cbr()
1109 assert(*bottom_index <= rc->worst_quality && in rc_pick_q_and_bounds_one_pass_cbr()
1110 *bottom_index >= rc->best_quality); in rc_pick_q_and_bounds_one_pass_cbr()
1111 assert(q <= rc->worst_quality && q >= rc->best_quality); in rc_pick_q_and_bounds_one_pass_cbr()
1115 static int get_active_cq_level_one_pass(const RATE_CONTROL *rc, in get_active_cq_level_one_pass() argument
1119 if (oxcf->rc_mode == VPX_CQ && rc->total_target_bits > 0) { in get_active_cq_level_one_pass()
1120 const double x = (double)rc->total_actual_bits / rc->total_target_bits; in get_active_cq_level_one_pass()
1131 const RATE_CONTROL *rc, in get_active_cq_level_two_pass() argument
1141 if (rc->total_target_bits > 0) { in get_active_cq_level_two_pass()
1142 const double x = (double)rc->total_actual_bits / rc->total_target_bits; in get_active_cq_level_two_pass()
1155 const RATE_CONTROL *const rc = &cpi->rc; in rc_pick_q_and_bounds_one_pass_vbr() local
1157 const int cq_level = get_active_cq_level_one_pass(rc, oxcf); in rc_pick_q_and_bounds_one_pass_vbr()
1169 vp9_compute_qdelta(rc, qstart, qstart * 0.25, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1170 active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1171 } else if (rc->this_key_frame_forced) { in rc_pick_q_and_bounds_one_pass_vbr()
1175 int qindex = rc->last_boosted_qindex; in rc_pick_q_and_bounds_one_pass_vbr()
1178 rc, last_boosted_q, last_boosted_q * 0.75, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1179 active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1186 rc, rc->avg_frame_qindex[KEY_FRAME], cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1197 vp9_compute_qdelta(rc, q_val, q_val * q_adj_factor, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1199 } else if (!rc->is_src_frame_alt_ref && in rc_pick_q_and_bounds_one_pass_vbr()
1204 if (rc->frames_since_key > 1) { in rc_pick_q_and_bounds_one_pass_vbr()
1205 if (rc->avg_frame_qindex[INTER_FRAME] < active_worst_quality) { in rc_pick_q_and_bounds_one_pass_vbr()
1206 q = rc->avg_frame_qindex[INTER_FRAME]; in rc_pick_q_and_bounds_one_pass_vbr()
1211 q = rc->avg_frame_qindex[KEY_FRAME]; in rc_pick_q_and_bounds_one_pass_vbr()
1228 vp9_compute_qdelta(rc, qstart, qstart * 0.40, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1231 vp9_compute_qdelta(rc, qstart, qstart * 0.50, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1232 active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1243 rc, qstart, in rc_pick_q_and_bounds_one_pass_vbr()
1246 active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1251 q = VPXMIN(rc->avg_frame_qindex[INTER_FRAME], active_worst_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1254 active_best_quality = inter_minq[rc->avg_frame_qindex[KEY_FRAME]]; in rc_pick_q_and_bounds_one_pass_vbr()
1266 clamp(active_best_quality, rc->best_quality, rc->worst_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1268 clamp(active_worst_quality, active_best_quality, rc->worst_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1279 if (cm->frame_type == KEY_FRAME && !rc->this_key_frame_forced && in rc_pick_q_and_bounds_one_pass_vbr()
1282 &cpi->rc, cm->frame_type, active_worst_quality, 2.0, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1283 } else if (!rc->is_src_frame_alt_ref && in rc_pick_q_and_bounds_one_pass_vbr()
1286 &cpi->rc, cm->frame_type, active_worst_quality, 1.75, cm->bit_depth); in rc_pick_q_and_bounds_one_pass_vbr()
1288 if (rc->high_source_sad && cpi->sf.use_altref_onepass) qdelta = 0; in rc_pick_q_and_bounds_one_pass_vbr()
1297 } else if ((cm->frame_type == KEY_FRAME) && rc->this_key_frame_forced) { in rc_pick_q_and_bounds_one_pass_vbr()
1298 q = rc->last_boosted_qindex; in rc_pick_q_and_bounds_one_pass_vbr()
1300 q = vp9_rc_regulate_q(cpi, rc->this_frame_target, active_best_quality, in rc_pick_q_and_bounds_one_pass_vbr()
1304 if (rc->this_frame_target >= rc->max_frame_bandwidth) in rc_pick_q_and_bounds_one_pass_vbr()
1311 assert(*top_index <= rc->worst_quality && *top_index >= rc->best_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1312 assert(*bottom_index <= rc->worst_quality && in rc_pick_q_and_bounds_one_pass_vbr()
1313 *bottom_index >= rc->best_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1314 assert(q <= rc->worst_quality && q >= rc->best_quality); in rc_pick_q_and_bounds_one_pass_vbr()
1329 &cpi->rc, cm->frame_type, q, rate_factor_deltas[rf_level], cm->bit_depth); in vp9_frame_type_qdelta()
1338 const RATE_CONTROL *const rc = &cpi->rc; in pick_kf_q_bound_two_pass() local
1342 if (rc->this_key_frame_forced) { in pick_kf_q_bound_two_pass()
1351 qindex = VPXMIN(rc->last_kf_qindex, rc->last_boosted_qindex); in pick_kf_q_bound_two_pass()
1354 delta_qindex = vp9_compute_qdelta(rc, last_boosted_q, in pick_kf_q_bound_two_pass()
1359 qindex = rc->last_boosted_qindex; in pick_kf_q_bound_two_pass()
1361 delta_qindex = vp9_compute_qdelta(rc, last_boosted_q, in pick_kf_q_bound_two_pass()
1363 active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality); in pick_kf_q_bound_two_pass()
1371 get_kf_active_quality(rc, active_worst_quality, cm->bit_depth); in pick_kf_q_bound_two_pass()
1393 vp9_compute_qdelta(rc, q_val, q_val * q_adj_factor, cm->bit_depth); in pick_kf_q_bound_two_pass()
1402 const RATE_CONTROL *const rc = &cpi->rc; in rc_constant_q() local
1407 const int cq_level = get_active_cq_level_two_pass(&cpi->twopass, rc, oxcf); in rc_constant_q()
1414 if (is_intra_frame && rc->frames_to_key > 1) in rc_constant_q()
1418 if (!is_intra_frame && !rc->is_src_frame_alt_ref && in rc_constant_q()
1443 const RATE_CONTROL *const rc = &cpi->rc; in vp9_rc_pick_q_and_bounds_two_pass() local
1446 const int cq_level = get_active_cq_level_two_pass(&cpi->twopass, rc, oxcf); in vp9_rc_pick_q_and_bounds_two_pass()
1454 !rc->is_src_frame_alt_ref && in vp9_rc_pick_q_and_bounds_two_pass()
1468 if (rc->frames_since_key > 1 && in vp9_rc_pick_q_and_bounds_two_pass()
1469 rc->avg_frame_qindex[INTER_FRAME] < active_worst_quality) { in vp9_rc_pick_q_and_bounds_two_pass()
1470 q = rc->avg_frame_qindex[INTER_FRAME]; in vp9_rc_pick_q_and_bounds_two_pass()
1481 if (rc->arf_increase_active_best_quality == 1) { in vp9_rc_pick_q_and_bounds_two_pass()
1484 } else if (rc->arf_increase_active_best_quality == -1) { in vp9_rc_pick_q_and_bounds_two_pass()
1490 rc->arf_active_best_quality_adjustment_factor + in vp9_rc_pick_q_and_bounds_two_pass()
1492 (1.0 - rc->arf_active_best_quality_adjustment_factor)); in vp9_rc_pick_q_and_bounds_two_pass()
1546 if (!frame_is_intra_only(cm) || !rc->this_key_frame_forced || in vp9_rc_pick_q_and_bounds_two_pass()
1556 if (rc->frame_size_selector != UNSCALED && !frame_is_kf_gf_arf(cpi)) { in vp9_rc_pick_q_and_bounds_two_pass()
1558 rc, cm->frame_type, active_best_quality, 2.0, cm->bit_depth); in vp9_rc_pick_q_and_bounds_two_pass()
1560 VPXMAX(active_best_quality + qdelta, rc->best_quality); in vp9_rc_pick_q_and_bounds_two_pass()
1564 clamp(active_best_quality, rc->best_quality, rc->worst_quality); in vp9_rc_pick_q_and_bounds_two_pass()
1566 clamp(active_worst_quality, active_best_quality, rc->worst_quality); in vp9_rc_pick_q_and_bounds_two_pass()
1568 if (frame_is_intra_only(cm) && rc->this_key_frame_forced) { in vp9_rc_pick_q_and_bounds_two_pass()
1571 q = VPXMIN(rc->last_kf_qindex, rc->last_boosted_qindex); in vp9_rc_pick_q_and_bounds_two_pass()
1573 q = rc->last_boosted_qindex; in vp9_rc_pick_q_and_bounds_two_pass()
1575 } else if (frame_is_intra_only(cm) && !rc->this_key_frame_forced) { in vp9_rc_pick_q_and_bounds_two_pass()
1578 q = vp9_rc_regulate_q(cpi, rc->this_frame_target, active_best_quality, in vp9_rc_pick_q_and_bounds_two_pass()
1582 if (rc->this_frame_target >= rc->max_frame_bandwidth) in vp9_rc_pick_q_and_bounds_two_pass()
1592 assert(*top_index <= rc->worst_quality && *top_index >= rc->best_quality); in vp9_rc_pick_q_and_bounds_two_pass()
1593 assert(*bottom_index <= rc->worst_quality && in vp9_rc_pick_q_and_bounds_two_pass()
1594 *bottom_index >= rc->best_quality); in vp9_rc_pick_q_and_bounds_two_pass()
1595 assert(q <= rc->worst_quality && q >= rc->best_quality); in vp9_rc_pick_q_and_bounds_two_pass()
1627 cpi->rc.is_src_frame_alt_ref = 0; in vp9_configure_buffer_updates()
1629 cpi->rc.show_arf_as_gld = 0; in vp9_configure_buffer_updates()
1650 cpi->rc.is_src_frame_alt_ref = 1; in vp9_configure_buffer_updates()
1651 if (cpi->rc.preserve_arf_as_gld) { in vp9_configure_buffer_updates()
1652 cpi->rc.show_arf_as_gld = 1; in vp9_configure_buffer_updates()
1662 cpi->rc.is_src_frame_alt_ref = 1; in vp9_configure_buffer_updates()
1668 cpi->rc.is_src_frame_alt_ref = 1; in vp9_configure_buffer_updates()
1696 VPXMIN(frame_target + tol_high + 100, cpi->rc.max_frame_bandwidth); in vp9_rc_compute_frame_size_bounds()
1702 RATE_CONTROL *const rc = &cpi->rc; in vp9_rc_set_frame_target() local
1704 rc->this_frame_target = target; in vp9_rc_set_frame_target()
1708 rc->frame_size_selector != UNSCALED) { in vp9_rc_set_frame_target()
1709 rc->this_frame_target = (int)(rc->this_frame_target * in vp9_rc_set_frame_target()
1710 rate_thresh_mult[rc->frame_size_selector]); in vp9_rc_set_frame_target()
1716 rc->this_frame_target = cpi->encode_command.target_frame_bits; in vp9_rc_set_frame_target()
1723 ((int64_t)rc->this_frame_target * 64 * 64) / (cm->width * cm->height); in vp9_rc_set_frame_target()
1724 rc->sb64_target_rate = (int)VPXMIN(sb64_target_rate, INT_MAX); in vp9_rc_set_frame_target()
1729 RATE_CONTROL *const rc = &cpi->rc; in update_alt_ref_frame_stats() local
1730 rc->frames_since_golden = 0; in update_alt_ref_frame_stats()
1733 rc->source_alt_ref_pending = 0; in update_alt_ref_frame_stats()
1736 rc->source_alt_ref_active = 1; in update_alt_ref_frame_stats()
1740 RATE_CONTROL *const rc = &cpi->rc; in update_golden_frame_stats() local
1745 rc->frames_since_golden = 0; in update_golden_frame_stats()
1751 if (!rc->source_alt_ref_pending && (cpi->twopass.gf_group.index == 0)) in update_golden_frame_stats()
1752 rc->source_alt_ref_active = 0; in update_golden_frame_stats()
1753 } else if (!rc->source_alt_ref_pending) { in update_golden_frame_stats()
1754 rc->source_alt_ref_active = 0; in update_golden_frame_stats()
1758 if (rc->frames_till_gf_update_due > 0) rc->frames_till_gf_update_due--; in update_golden_frame_stats()
1762 if (rc->frames_till_gf_update_due > 0) rc->frames_till_gf_update_due--; in update_golden_frame_stats()
1764 rc->frames_since_golden++; in update_golden_frame_stats()
1766 if (rc->show_arf_as_gld) { in update_golden_frame_stats()
1767 rc->frames_since_golden = 0; in update_golden_frame_stats()
1771 if (!rc->source_alt_ref_pending && (cpi->twopass.gf_group.index == 0)) in update_golden_frame_stats()
1772 rc->source_alt_ref_active = 0; in update_golden_frame_stats()
1782 if (cpi->rc.alt_ref_gf_group && !cpi->rc.is_src_frame_alt_ref && in update_altref_usage()
1794 cpi->rc.perc_arf_usage = in update_altref_usage()
1795 0.75 * cpi->rc.perc_arf_usage + 0.25 * altref_count; in update_altref_usage()
1804 RATE_CONTROL *const rc = &cpi->rc; in vp9_compute_frame_low_motion() local
1817 rc->avg_frame_low_motion = (3 * rc->avg_frame_low_motion + cnt_zeromv) >> 2; in vp9_compute_frame_low_motion()
1827 RATE_CONTROL *const lrc = &lc->rc; in vp9_compute_frame_low_motion()
1828 lrc->avg_frame_low_motion = rc->avg_frame_low_motion; in vp9_compute_frame_low_motion()
1836 RATE_CONTROL *const rc = &cpi->rc; in vp9_rc_postencode_update() local
1844 rc->projected_frame_size = (int)(bytes_used << 3); in vp9_rc_postencode_update()
1851 rc->last_q[KEY_FRAME] = qindex; in vp9_rc_postencode_update()
1852 rc->avg_frame_qindex[KEY_FRAME] = in vp9_rc_postencode_update()
1853 ROUND_POWER_OF_TWO(3 * rc->avg_frame_qindex[KEY_FRAME] + qindex, 2); in vp9_rc_postencode_update()
1860 RATE_CONTROL *lrc = &lc->rc; in vp9_rc_postencode_update()
1861 lrc->last_q[KEY_FRAME] = rc->last_q[KEY_FRAME]; in vp9_rc_postencode_update()
1862 lrc->avg_frame_qindex[KEY_FRAME] = rc->avg_frame_qindex[KEY_FRAME]; in vp9_rc_postencode_update()
1867 (!rc->is_src_frame_alt_ref && in vp9_rc_postencode_update()
1869 rc->last_q[INTER_FRAME] = qindex; in vp9_rc_postencode_update()
1870 rc->avg_frame_qindex[INTER_FRAME] = in vp9_rc_postencode_update()
1871 ROUND_POWER_OF_TWO(3 * rc->avg_frame_qindex[INTER_FRAME] + qindex, 2); in vp9_rc_postencode_update()
1872 rc->ni_frames++; in vp9_rc_postencode_update()
1873 rc->tot_q += vp9_convert_qindex_to_q(qindex, cm->bit_depth); in vp9_rc_postencode_update()
1874 rc->avg_q = rc->tot_q / rc->ni_frames; in vp9_rc_postencode_update()
1877 rc->ni_tot_qi += qindex; in vp9_rc_postencode_update()
1878 rc->ni_av_qi = rc->ni_tot_qi / rc->ni_frames; in vp9_rc_postencode_update()
1889 if ((qindex < rc->last_boosted_qindex) || (cm->frame_type == KEY_FRAME) || in vp9_rc_postencode_update()
1890 (!rc->constrained_gf_group && in vp9_rc_postencode_update()
1892 (cpi->refresh_golden_frame && !rc->is_src_frame_alt_ref)))) { in vp9_rc_postencode_update()
1893 rc->last_boosted_qindex = qindex; in vp9_rc_postencode_update()
1898 (!rc->constrained_gf_group && in vp9_rc_postencode_update()
1900 (cpi->refresh_golden_frame && !rc->is_src_frame_alt_ref)))) { in vp9_rc_postencode_update()
1904 if (frame_is_intra_only(cm)) rc->last_kf_qindex = qindex; in vp9_rc_postencode_update()
1906 update_buffer_level_postencode(cpi, rc->projected_frame_size); in vp9_rc_postencode_update()
1911 rc->rolling_target_bits = (int)ROUND64_POWER_OF_TWO( in vp9_rc_postencode_update()
1912 (int64_t)rc->rolling_target_bits * 3 + rc->this_frame_target, 2); in vp9_rc_postencode_update()
1913 rc->rolling_actual_bits = (int)ROUND64_POWER_OF_TWO( in vp9_rc_postencode_update()
1914 (int64_t)rc->rolling_actual_bits * 3 + rc->projected_frame_size, 2); in vp9_rc_postencode_update()
1915 rc->long_rolling_target_bits = (int)ROUND64_POWER_OF_TWO( in vp9_rc_postencode_update()
1916 (int64_t)rc->long_rolling_target_bits * 31 + rc->this_frame_target, 5); in vp9_rc_postencode_update()
1917 rc->long_rolling_actual_bits = (int)ROUND64_POWER_OF_TWO( in vp9_rc_postencode_update()
1918 (int64_t)rc->long_rolling_actual_bits * 31 + rc->projected_frame_size, in vp9_rc_postencode_update()
1923 rc->total_actual_bits += rc->projected_frame_size; in vp9_rc_postencode_update()
1924 rc->total_target_bits += cm->show_frame ? rc->avg_frame_bandwidth : 0; in vp9_rc_postencode_update()
1926 rc->total_target_vs_actual = rc->total_actual_bits - rc->total_target_bits; in vp9_rc_postencode_update()
1944 rc->frames_since_golden = 0; in vp9_rc_postencode_update()
1946 rc->frames_since_golden++; in vp9_rc_postencode_update()
1948 if (rc->frames_till_gf_update_due > 0) rc->frames_till_gf_update_due--; in vp9_rc_postencode_update()
1954 RATE_CONTROL *const lrc = &lc->rc; in vp9_rc_postencode_update()
1955 lrc->frames_since_golden = rc->frames_since_golden; in vp9_rc_postencode_update()
1959 if (frame_is_intra_only(cm)) rc->frames_since_key = 0; in vp9_rc_postencode_update()
1961 rc->frames_since_key++; in vp9_rc_postencode_update()
1962 rc->frames_to_key--; in vp9_rc_postencode_update()
1968 rc->next_frame_size_selector != rc->frame_size_selector; in vp9_rc_postencode_update()
1969 rc->frame_size_selector = rc->next_frame_size_selector; in vp9_rc_postencode_update()
1975 cpi->rc.last_frame_is_src_altref = cpi->rc.is_src_frame_alt_ref; in vp9_rc_postencode_update()
1978 if (!frame_is_intra_only(cm)) rc->reset_high_source_sad = 0; in vp9_rc_postencode_update()
1980 rc->last_avg_frame_bandwidth = rc->avg_frame_bandwidth; in vp9_rc_postencode_update()
1988 cpi->rc.frames_since_key++; in vp9_rc_postencode_update_drop_frame()
1989 cpi->rc.frames_to_key--; in vp9_rc_postencode_update_drop_frame()
1990 cpi->rc.rc_2_frame = 0; in vp9_rc_postencode_update_drop_frame()
1991 cpi->rc.rc_1_frame = 0; in vp9_rc_postencode_update_drop_frame()
1992 cpi->rc.last_avg_frame_bandwidth = cpi->rc.avg_frame_bandwidth; in vp9_rc_postencode_update_drop_frame()
1993 cpi->rc.last_q[INTER_FRAME] = cpi->common.base_qindex; in vp9_rc_postencode_update_drop_frame()
2000 cpi->rc.buffer_level > cpi->rc.optimal_buffer_level) { in vp9_rc_postencode_update_drop_frame()
2001 cpi->rc.buffer_level = cpi->rc.optimal_buffer_level; in vp9_rc_postencode_update_drop_frame()
2002 cpi->rc.bits_off_target = cpi->rc.optimal_buffer_level; in vp9_rc_postencode_update_drop_frame()
2008 const RATE_CONTROL *const rc = &cpi->rc; in vp9_calc_pframe_target_size_one_pass_vbr() local
2009 const int af_ratio = rc->af_ratio_onepass_vbr; in vp9_calc_pframe_target_size_one_pass_vbr()
2011 (!rc->is_src_frame_alt_ref && in vp9_calc_pframe_target_size_one_pass_vbr()
2013 ? ((int64_t)rc->avg_frame_bandwidth * rc->baseline_gf_interval * in vp9_calc_pframe_target_size_one_pass_vbr()
2015 (rc->baseline_gf_interval + af_ratio - 1) in vp9_calc_pframe_target_size_one_pass_vbr()
2016 : ((int64_t)rc->avg_frame_bandwidth * rc->baseline_gf_interval) / in vp9_calc_pframe_target_size_one_pass_vbr()
2017 (rc->baseline_gf_interval + af_ratio - 1); in vp9_calc_pframe_target_size_one_pass_vbr()
2029 const RATE_CONTROL *rc = &cpi->rc; in vp9_calc_iframe_target_size_one_pass_vbr() local
2030 int target = rc->avg_frame_bandwidth; in vp9_calc_iframe_target_size_one_pass_vbr()
2034 target = rc->avg_frame_bandwidth * kf_ratio; in vp9_calc_iframe_target_size_one_pass_vbr()
2039 RATE_CONTROL *const rc = &cpi->rc; in adjust_gfint_frame_constraint() local
2040 rc->constrained_gf_group = 0; in adjust_gfint_frame_constraint()
2042 if ((frame_constraint <= 7 * rc->baseline_gf_interval >> 2) && in adjust_gfint_frame_constraint()
2043 (frame_constraint > rc->baseline_gf_interval)) { in adjust_gfint_frame_constraint()
2044 rc->baseline_gf_interval = frame_constraint >> 1; in adjust_gfint_frame_constraint()
2045 if (rc->baseline_gf_interval < 5) in adjust_gfint_frame_constraint()
2046 rc->baseline_gf_interval = frame_constraint; in adjust_gfint_frame_constraint()
2047 rc->constrained_gf_group = 1; in adjust_gfint_frame_constraint()
2050 if (rc->baseline_gf_interval > frame_constraint) { in adjust_gfint_frame_constraint()
2051 rc->baseline_gf_interval = frame_constraint; in adjust_gfint_frame_constraint()
2052 rc->constrained_gf_group = 1; in adjust_gfint_frame_constraint()
2058 RATE_CONTROL *const rc = &cpi->rc; in vp9_set_gf_update_one_pass_vbr() local
2060 if (rc->frames_till_gf_update_due == 0) { in vp9_set_gf_update_one_pass_vbr()
2062 rc->gfu_boost = DEFAULT_GF_BOOST; in vp9_set_gf_update_one_pass_vbr()
2066 rc->baseline_gf_interval = VPXMIN( in vp9_set_gf_update_one_pass_vbr()
2067 20, VPXMAX(10, (rc->min_gf_interval + rc->max_gf_interval) / 2)); in vp9_set_gf_update_one_pass_vbr()
2069 rc->af_ratio_onepass_vbr = 10; in vp9_set_gf_update_one_pass_vbr()
2070 if (rc->rolling_target_bits > 0) in vp9_set_gf_update_one_pass_vbr()
2072 (double)rc->rolling_actual_bits / (double)rc->rolling_target_bits; in vp9_set_gf_update_one_pass_vbr()
2074 if (rc->avg_frame_qindex[INTER_FRAME] > (7 * rc->worst_quality) >> 3 && in vp9_set_gf_update_one_pass_vbr()
2076 rc->baseline_gf_interval = in vp9_set_gf_update_one_pass_vbr()
2077 VPXMIN(15, (3 * rc->baseline_gf_interval) >> 1); in vp9_set_gf_update_one_pass_vbr()
2078 } else if (rc->avg_frame_low_motion > 0 && in vp9_set_gf_update_one_pass_vbr()
2079 rc->avg_frame_low_motion < 20) { in vp9_set_gf_update_one_pass_vbr()
2081 rc->baseline_gf_interval = VPXMAX(6, rc->baseline_gf_interval >> 1); in vp9_set_gf_update_one_pass_vbr()
2085 if (rc->avg_frame_low_motion > 0) in vp9_set_gf_update_one_pass_vbr()
2086 rc->gfu_boost = in vp9_set_gf_update_one_pass_vbr()
2087 VPXMAX(500, DEFAULT_GF_BOOST * (rc->avg_frame_low_motion << 1) / in vp9_set_gf_update_one_pass_vbr()
2088 (rc->avg_frame_low_motion + 100)); in vp9_set_gf_update_one_pass_vbr()
2089 else if (rc->avg_frame_low_motion == 0 && rate_err > 1.0) in vp9_set_gf_update_one_pass_vbr()
2090 rc->gfu_boost = DEFAULT_GF_BOOST >> 1; in vp9_set_gf_update_one_pass_vbr()
2091 rc->af_ratio_onepass_vbr = VPXMIN(15, VPXMAX(5, 3 * rc->gfu_boost / 400)); in vp9_set_gf_update_one_pass_vbr()
2093 if (rc->constrain_gf_key_freq_onepass_vbr) in vp9_set_gf_update_one_pass_vbr()
2094 adjust_gfint_frame_constraint(cpi, rc->frames_to_key); in vp9_set_gf_update_one_pass_vbr()
2095 rc->frames_till_gf_update_due = rc->baseline_gf_interval; in vp9_set_gf_update_one_pass_vbr()
2097 rc->source_alt_ref_pending = 0; in vp9_set_gf_update_one_pass_vbr()
2098 rc->alt_ref_gf_group = 0; in vp9_set_gf_update_one_pass_vbr()
2100 rc->source_alt_ref_pending = 1; in vp9_set_gf_update_one_pass_vbr()
2101 rc->alt_ref_gf_group = 1; in vp9_set_gf_update_one_pass_vbr()
2108 RATE_CONTROL *const rc = &cpi->rc; in vp9_rc_get_one_pass_vbr_params() local
2112 rc->frames_to_key == 0 || in vp9_rc_get_one_pass_vbr_params()
2115 rc->this_key_frame_forced = in vp9_rc_get_one_pass_vbr_params()
2116 cm->current_video_frame != 0 && rc->frames_to_key == 0; in vp9_rc_get_one_pass_vbr_params()
2117 rc->frames_to_key = cpi->oxcf.key_freq; in vp9_rc_get_one_pass_vbr_params()
2118 rc->kf_boost = DEFAULT_KF_BOOST; in vp9_rc_get_one_pass_vbr_params()
2119 rc->source_alt_ref_active = 0; in vp9_rc_get_one_pass_vbr_params()
2135 const RATE_CONTROL *rc = &cpi->rc; in vp9_calc_pframe_target_size_one_pass_cbr() local
2137 const int64_t diff = rc->optimal_buffer_level - rc->buffer_level; in vp9_calc_pframe_target_size_one_pass_cbr()
2138 const int64_t one_pct_bits = 1 + rc->optimal_buffer_level / 100; in vp9_calc_pframe_target_size_one_pass_cbr()
2140 VPXMAX(rc->avg_frame_bandwidth >> 4, FRAME_OVERHEAD_BITS); in vp9_calc_pframe_target_size_one_pass_cbr()
2146 ? (rc->avg_frame_bandwidth * rc->baseline_gf_interval * in vp9_calc_pframe_target_size_one_pass_cbr()
2148 (rc->baseline_gf_interval * 100 + af_ratio_pct - 100) in vp9_calc_pframe_target_size_one_pass_cbr()
2149 : (rc->avg_frame_bandwidth * rc->baseline_gf_interval * 100) / in vp9_calc_pframe_target_size_one_pass_cbr()
2150 (rc->baseline_gf_interval * 100 + af_ratio_pct - 100); in vp9_calc_pframe_target_size_one_pass_cbr()
2152 target = rc->avg_frame_bandwidth; in vp9_calc_pframe_target_size_one_pass_cbr()
2176 rc->avg_frame_bandwidth * oxcf->rc_max_inter_bitrate_pct / 100; in vp9_calc_pframe_target_size_one_pass_cbr()
2183 const RATE_CONTROL *rc = &cpi->rc; in vp9_calc_iframe_target_size_one_pass_cbr() local
2188 target = rc->starting_buffer_level / 2; in vp9_calc_iframe_target_size_one_pass_cbr()
2201 if (rc->frames_since_key < framerate / 2) { in vp9_calc_iframe_target_size_one_pass_cbr()
2202 kf_boost = (int)round(kf_boost * rc->frames_since_key / (framerate / 2)); in vp9_calc_iframe_target_size_one_pass_cbr()
2205 target = ((int64_t)(16 + kf_boost) * rc->avg_frame_bandwidth) >> 4; in vp9_calc_iframe_target_size_one_pass_cbr()
2269 RATE_CONTROL *const rc = &cpi->rc; in vp9_rc_get_svc_params() local
2271 int target = rc->avg_frame_bandwidth; in vp9_rc_get_svc_params()
2289 rc->source_alt_ref_active = 0; in vp9_rc_get_svc_params()
2318 rc->fac_active_worst_inter = 140; in vp9_rc_get_svc_params()
2319 rc->fac_active_worst_gf = 100; in vp9_rc_get_svc_params()
2320 if (rc->rolling_target_bits > 0) { in vp9_rc_get_svc_params()
2322 (double)rc->rolling_actual_bits / (double)rc->rolling_target_bits; in vp9_rc_get_svc_params()
2324 rc->fac_active_worst_inter = 120; in vp9_rc_get_svc_params()
2327 rc->fac_active_worst_inter = 160; in vp9_rc_get_svc_params()
2409 } else if (rc->frames_till_gf_update_due == 0) { in vp9_rc_get_svc_params()
2415 rc->baseline_gf_interval = 20; in vp9_rc_get_svc_params()
2416 rc->frames_till_gf_update_due = rc->baseline_gf_interval; in vp9_rc_get_svc_params()
2418 rc->gfu_boost = DEFAULT_GF_BOOST; in vp9_rc_get_svc_params()
2422 rc->frames_till_gf_update_due = INT_MAX; in vp9_rc_get_svc_params()
2423 rc->baseline_gf_interval = INT_MAX; in vp9_rc_get_svc_params()
2460 lc->rc.buffer_level = lc->rc.optimal_buffer_level; in vp9_rc_get_svc_params()
2461 lc->rc.bits_off_target = lc->rc.optimal_buffer_level; in vp9_rc_get_svc_params()
2462 lc->rc.rate_correction_factors[INTER_FRAME] = in vp9_rc_get_svc_params()
2463 rc->rate_correction_factors[INTER_FRAME]; in vp9_rc_get_svc_params()
2483 RATE_CONTROL *const rc = &cpi->rc; in vp9_rc_get_one_pass_cbr_params() local
2486 (cpi->oxcf.auto_key && rc->frames_to_key == 0) || in vp9_rc_get_one_pass_cbr_params()
2489 rc->frames_to_key = cpi->oxcf.key_freq; in vp9_rc_get_one_pass_cbr_params()
2490 rc->kf_boost = DEFAULT_KF_BOOST; in vp9_rc_get_one_pass_cbr_params()
2491 rc->source_alt_ref_active = 0; in vp9_rc_get_one_pass_cbr_params()
2495 if (rc->frames_till_gf_update_due == 0) { in vp9_rc_get_one_pass_cbr_params()
2499 rc->baseline_gf_interval = in vp9_rc_get_one_pass_cbr_params()
2500 (rc->min_gf_interval + rc->max_gf_interval) / 2; in vp9_rc_get_one_pass_cbr_params()
2501 rc->frames_till_gf_update_due = rc->baseline_gf_interval; in vp9_rc_get_one_pass_cbr_params()
2503 if (rc->frames_till_gf_update_due > rc->frames_to_key) in vp9_rc_get_one_pass_cbr_params()
2504 rc->frames_till_gf_update_due = rc->frames_to_key; in vp9_rc_get_one_pass_cbr_params()
2506 rc->gfu_boost = DEFAULT_GF_BOOST; in vp9_rc_get_one_pass_cbr_params()
2529 int vp9_compute_qdelta(const RATE_CONTROL *rc, double qstart, double qtarget, in vp9_compute_qdelta() argument
2531 int start_index = rc->worst_quality; in vp9_compute_qdelta()
2532 int target_index = rc->worst_quality; in vp9_compute_qdelta()
2536 for (i = rc->best_quality; i < rc->worst_quality; ++i) { in vp9_compute_qdelta()
2542 for (i = rc->best_quality; i < rc->worst_quality; ++i) { in vp9_compute_qdelta()
2550 int vp9_compute_qdelta_by_rate(const RATE_CONTROL *rc, FRAME_TYPE frame_type, in vp9_compute_qdelta_by_rate() argument
2553 int target_index = rc->worst_quality; in vp9_compute_qdelta_by_rate()
2564 for (i = rc->best_quality; i < rc->worst_quality; ++i) { in vp9_compute_qdelta_by_rate()
2575 RATE_CONTROL *const rc) { in vp9_rc_set_gf_interval_range() argument
2580 rc->max_gf_interval = FIXED_GF_INTERVAL; in vp9_rc_set_gf_interval_range()
2581 rc->min_gf_interval = FIXED_GF_INTERVAL; in vp9_rc_set_gf_interval_range()
2582 rc->static_scene_max_gf_interval = FIXED_GF_INTERVAL; in vp9_rc_set_gf_interval_range()
2586 rc->max_gf_interval = oxcf->max_gf_interval; in vp9_rc_set_gf_interval_range()
2587 rc->min_gf_interval = oxcf->min_gf_interval; in vp9_rc_set_gf_interval_range()
2595 if (rc->min_gf_interval == 0) { in vp9_rc_set_gf_interval_range()
2596 rc->min_gf_interval = vp9_rc_get_default_min_gf_interval( in vp9_rc_set_gf_interval_range()
2599 if (rc->max_gf_interval == 0) { in vp9_rc_set_gf_interval_range()
2600 rc->max_gf_interval = in vp9_rc_set_gf_interval_range()
2601 vp9_rc_get_default_max_gf_interval(framerate, rc->min_gf_interval); in vp9_rc_set_gf_interval_range()
2605 rc->static_scene_max_gf_interval = MAX_STATIC_GF_GROUP_LENGTH; in vp9_rc_set_gf_interval_range()
2607 if (rc->max_gf_interval > rc->static_scene_max_gf_interval) in vp9_rc_set_gf_interval_range()
2608 rc->max_gf_interval = rc->static_scene_max_gf_interval; in vp9_rc_set_gf_interval_range()
2611 rc->min_gf_interval = VPXMIN(rc->min_gf_interval, rc->max_gf_interval); in vp9_rc_set_gf_interval_range()
2621 if (rc->min_gf_interval <= in vp9_rc_set_gf_interval_range()
2623 rc->min_gf_interval = (int)vp9_level_defs[i].min_altref_distance; in vp9_rc_set_gf_interval_range()
2624 rc->max_gf_interval = in vp9_rc_set_gf_interval_range()
2625 VPXMAX(rc->max_gf_interval, rc->min_gf_interval); in vp9_rc_set_gf_interval_range()
2637 RATE_CONTROL *const rc = &cpi->rc; in vp9_rc_update_framerate() local
2639 rc->avg_frame_bandwidth = saturate_cast_double_to_int( in vp9_rc_update_framerate()
2643 (int64_t)rc->avg_frame_bandwidth * oxcf->two_pass_vbrmin_section / 100; in vp9_rc_update_framerate()
2646 rc->min_frame_bandwidth = VPXMAX((int)vbr_min_bits, FRAME_OVERHEAD_BITS); in vp9_rc_update_framerate()
2656 (int64_t)rc->avg_frame_bandwidth * oxcf->two_pass_vbrmax_section / 100; in vp9_rc_update_framerate()
2659 rc->max_frame_bandwidth = in vp9_rc_update_framerate()
2662 vp9_rc_set_gf_interval_range(cpi, rc); in vp9_rc_update_framerate()
2668 RATE_CONTROL *const rc = &cpi->rc; in vbr_rate_correction() local
2669 int64_t vbr_bits_off_target = rc->vbr_bits_off_target; in vbr_rate_correction()
2693 if (!frame_is_kf_gf_arf(cpi) && !rc->is_src_frame_alt_ref && in vbr_rate_correction()
2694 rc->vbr_bits_off_target_fast) { in vbr_rate_correction()
2695 int64_t one_frame_bits = VPXMAX(rc->avg_frame_bandwidth, frame_target); in vbr_rate_correction()
2697 VPXMIN(rc->vbr_bits_off_target_fast, one_frame_bits); in vbr_rate_correction()
2700 VPXMAX(one_frame_bits / 8, rc->vbr_bits_off_target_fast / 8)); in vbr_rate_correction()
2702 rc->vbr_bits_off_target_fast -= fast_extra_bits; in vbr_rate_correction()
2710 RATE_CONTROL *const rc = &cpi->rc; in vp9_set_target_rate() local
2711 int target_rate = rc->base_frame_target; in vp9_set_target_rate()
2730 RATE_CONTROL *const rc = &cpi->rc; in vp9_resize_one_pass_cbr() local
2762 if (rc->avg_frame_bandwidth < 300000 / 30) { in vp9_resize_one_pass_cbr()
2766 } else if (rc->avg_frame_bandwidth < 400000 / 30) { in vp9_resize_one_pass_cbr()
2773 if (rc->avg_frame_bandwidth < 300000 / 30) { in vp9_resize_one_pass_cbr()
2782 if (!force_downsize_rate && cpi->rc.frames_since_key > cpi->framerate) { in vp9_resize_one_pass_cbr()
2784 cpi->resize_avg_qp += rc->last_q[INTER_FRAME]; in vp9_resize_one_pass_cbr()
2785 if (cpi->rc.buffer_level < (int)(30 * rc->optimal_buffer_level / 100)) in vp9_resize_one_pass_cbr()
2806 avg_qp < avg_qp_thr1 * cpi->rc.worst_quality / 100) { in vp9_resize_one_pass_cbr()
2808 avg_qp < avg_qp_thr2 * cpi->rc.worst_quality / 100 || in vp9_resize_one_pass_cbr()
2843 rc->buffer_level = rc->optimal_buffer_level; in vp9_resize_one_pass_cbr()
2844 rc->bits_off_target = rc->optimal_buffer_level; in vp9_resize_one_pass_cbr()
2845 rc->this_frame_target = vp9_calc_pframe_target_size_one_pass_cbr(cpi); in vp9_resize_one_pass_cbr()
2849 ? rc->this_frame_target * tot_scale_change in vp9_resize_one_pass_cbr()
2850 : rc->this_frame_target / tot_scale_change; in vp9_resize_one_pass_cbr()
2852 qindex = vp9_rc_regulate_q(cpi, target_bits_per_frame, rc->best_quality, in vp9_resize_one_pass_cbr()
2857 if (resize_action > 0 && qindex > 90 * cpi->rc.worst_quality / 100) { in vp9_resize_one_pass_cbr()
2858 rc->rate_correction_factors[INTER_NORMAL] *= 0.85; in vp9_resize_one_pass_cbr()
2864 rc->rate_correction_factors[INTER_NORMAL] *= 0.9; in vp9_resize_one_pass_cbr()
2873 RATE_CONTROL *const rc = &cpi->rc; in adjust_gf_boost_lag_one_pass_vbr() local
2892 uint64_t reference_sad = rc->avg_source_sad[0]; in adjust_gf_boost_lag_one_pass_vbr()
2894 if (rc->avg_source_sad[i] > 0) in adjust_gf_boost_lag_one_pass_vbr()
2895 reference_sad = (3 * reference_sad + rc->avg_source_sad[i]) >> 2; in adjust_gf_boost_lag_one_pass_vbr()
2899 (rc->avg_source_sad[lagframe_idx] > in adjust_gf_boost_lag_one_pass_vbr()
2901 rc->avg_source_sad[lagframe_idx] > in adjust_gf_boost_lag_one_pass_vbr()
2909 rc->avg_source_sad[lagframe_idx - 1] > (sad_thresh1 >> 2)) { in adjust_gf_boost_lag_one_pass_vbr()
2912 if (!(rc->avg_source_sad[i] > 0 && in adjust_gf_boost_lag_one_pass_vbr()
2913 rc->avg_source_sad[i] < (sad_thresh1 >> 2) && in adjust_gf_boost_lag_one_pass_vbr()
2914 rc->avg_source_sad[i] < in adjust_gf_boost_lag_one_pass_vbr()
2915 (rc->avg_source_sad[lagframe_idx - 1] >> 1))) { in adjust_gf_boost_lag_one_pass_vbr()
2922 avg_source_sad_lag += rc->avg_source_sad[lagframe_idx]; in adjust_gf_boost_lag_one_pass_vbr()
2927 high_source_sad_lagindex != rc->high_source_sad_lagindex - 1 && in adjust_gf_boost_lag_one_pass_vbr()
2928 abs(high_source_sad_lagindex - rc->high_source_sad_lagindex) < 4) in adjust_gf_boost_lag_one_pass_vbr()
2929 rc->high_source_sad_lagindex = -1; in adjust_gf_boost_lag_one_pass_vbr()
2931 rc->high_source_sad_lagindex = high_source_sad_lagindex; in adjust_gf_boost_lag_one_pass_vbr()
2937 if (rc->rolling_target_bits > 0) in adjust_gf_boost_lag_one_pass_vbr()
2939 (double)rc->rolling_actual_bits / (double)rc->rolling_target_bits; in adjust_gf_boost_lag_one_pass_vbr()
2941 avg_source_sad_lag > (rc->prev_avg_source_sad_lag << 1) || in adjust_gf_boost_lag_one_pass_vbr()
2944 ((avg_source_sad_lag < (rc->prev_avg_source_sad_lag >> 1)) || in adjust_gf_boost_lag_one_pass_vbr()
2947 rc->gfu_boost = DEFAULT_GF_BOOST; in adjust_gf_boost_lag_one_pass_vbr()
2948 rc->baseline_gf_interval = in adjust_gf_boost_lag_one_pass_vbr()
2949 VPXMIN(15, (3 * rc->baseline_gf_interval) >> 1); in adjust_gf_boost_lag_one_pass_vbr()
2951 rc->gfu_boost = DEFAULT_GF_BOOST >> 1; in adjust_gf_boost_lag_one_pass_vbr()
2952 rc->baseline_gf_interval = (rate_err > 3.0) in adjust_gf_boost_lag_one_pass_vbr()
2953 ? VPXMAX(10, rc->baseline_gf_interval >> 1) in adjust_gf_boost_lag_one_pass_vbr()
2954 : VPXMAX(6, rc->baseline_gf_interval >> 1); in adjust_gf_boost_lag_one_pass_vbr()
2956 if (rc->baseline_gf_interval > cpi->oxcf.lag_in_frames - 1) in adjust_gf_boost_lag_one_pass_vbr()
2957 rc->baseline_gf_interval = cpi->oxcf.lag_in_frames - 1; in adjust_gf_boost_lag_one_pass_vbr()
2960 frame_constraint = rc->frames_to_key; in adjust_gf_boost_lag_one_pass_vbr()
2961 if (rc->high_source_sad_lagindex > 0 && in adjust_gf_boost_lag_one_pass_vbr()
2962 frame_constraint > rc->high_source_sad_lagindex) in adjust_gf_boost_lag_one_pass_vbr()
2963 frame_constraint = rc->high_source_sad_lagindex; in adjust_gf_boost_lag_one_pass_vbr()
2967 rc->frames_till_gf_update_due = rc->baseline_gf_interval; in adjust_gf_boost_lag_one_pass_vbr()
2969 rc->fac_active_worst_inter = 150; // corresponds to 3/2 (= 150 /100). in adjust_gf_boost_lag_one_pass_vbr()
2970 rc->fac_active_worst_gf = 100; in adjust_gf_boost_lag_one_pass_vbr()
2972 rc->fac_active_worst_inter = 120; in adjust_gf_boost_lag_one_pass_vbr()
2973 rc->fac_active_worst_gf = 90; in adjust_gf_boost_lag_one_pass_vbr()
2974 } else if (rate_err > 8.0 && rc->avg_frame_qindex[INTER_FRAME] < 16) { in adjust_gf_boost_lag_one_pass_vbr()
2976 rc->fac_active_worst_inter = 200; in adjust_gf_boost_lag_one_pass_vbr()
2977 if (rc->avg_frame_qindex[INTER_FRAME] < 8) in adjust_gf_boost_lag_one_pass_vbr()
2978 rc->fac_active_worst_inter = 400; in adjust_gf_boost_lag_one_pass_vbr()
2980 if (low_content && rc->avg_frame_low_motion > 80) { in adjust_gf_boost_lag_one_pass_vbr()
2981 rc->af_ratio_onepass_vbr = 15; in adjust_gf_boost_lag_one_pass_vbr()
2982 } else if (high_content || rc->avg_frame_low_motion < 30) { in adjust_gf_boost_lag_one_pass_vbr()
2983 rc->af_ratio_onepass_vbr = 5; in adjust_gf_boost_lag_one_pass_vbr()
2984 rc->gfu_boost = DEFAULT_GF_BOOST >> 2; in adjust_gf_boost_lag_one_pass_vbr()
2991 (cm->frame_type != KEY_FRAME && !rc->high_source_sad && in adjust_gf_boost_lag_one_pass_vbr()
2992 cpi->rc.perc_arf_usage < 15 && cpi->oxcf.speed >= 5); in adjust_gf_boost_lag_one_pass_vbr()
2995 (rc->high_source_sad_lagindex > 0 && in adjust_gf_boost_lag_one_pass_vbr()
2996 rc->high_source_sad_lagindex <= rc->frames_till_gf_update_due) || in adjust_gf_boost_lag_one_pass_vbr()
2998 rc->source_alt_ref_pending = 0; in adjust_gf_boost_lag_one_pass_vbr()
2999 rc->alt_ref_gf_group = 0; in adjust_gf_boost_lag_one_pass_vbr()
3001 rc->source_alt_ref_pending = 1; in adjust_gf_boost_lag_one_pass_vbr()
3002 rc->alt_ref_gf_group = 1; in adjust_gf_boost_lag_one_pass_vbr()
3004 if (rc->baseline_gf_interval > 12) { in adjust_gf_boost_lag_one_pass_vbr()
3005 rc->baseline_gf_interval = 12; in adjust_gf_boost_lag_one_pass_vbr()
3006 rc->frames_till_gf_update_due = rc->baseline_gf_interval; in adjust_gf_boost_lag_one_pass_vbr()
3013 rc->prev_avg_source_sad_lag = avg_source_sad_lag; in adjust_gf_boost_lag_one_pass_vbr()
3023 RATE_CONTROL *const rc = &cpi->rc; in vp9_scene_detection_onepass() local
3048 rc->high_source_sad = 0; in vp9_scene_detection_onepass()
3049 rc->high_num_blocks_with_motion = 0; in vp9_scene_detection_onepass()
3090 avg_sad_current = rc->avg_source_sad[1]; in vp9_scene_detection_onepass()
3093 (unsigned int)(rc->avg_source_sad[0] * thresh)) && in vp9_scene_detection_onepass()
3095 rc->high_source_sad = 1; in vp9_scene_detection_onepass()
3097 rc->high_source_sad = 0; in vp9_scene_detection_onepass()
3098 if (rc->high_source_sad && avg_sad_current > thresh_key) in vp9_scene_detection_onepass()
3102 rc->avg_source_sad[0] = in vp9_scene_detection_onepass()
3103 (3 * rc->avg_source_sad[0] + avg_sad_current) >> 2; in vp9_scene_detection_onepass()
3106 rc->avg_source_sad[frame] = rc->avg_source_sad[frame + 1]; in vp9_scene_detection_onepass()
3157 (unsigned int)(rc->avg_source_sad[0] * thresh)) && in vp9_scene_detection_onepass()
3158 rc->frames_since_key > 1 + cpi->svc.number_spatial_layers && in vp9_scene_detection_onepass()
3160 rc->high_source_sad = 1; in vp9_scene_detection_onepass()
3162 rc->high_source_sad = 0; in vp9_scene_detection_onepass()
3163 if (rc->high_source_sad && avg_sad > thresh_key) in vp9_scene_detection_onepass()
3166 rc->avg_source_sad[0] = (3 * rc->avg_source_sad[0] + avg_sad) >> 2; in vp9_scene_detection_onepass()
3168 rc->avg_source_sad[lagframe_idx] = avg_sad; in vp9_scene_detection_onepass()
3171 rc->high_num_blocks_with_motion = 1; in vp9_scene_detection_onepass()
3179 if (rc->high_source_sad && rc->last_q[INTER_FRAME] == rc->best_quality && in vp9_scene_detection_onepass()
3180 rc->avg_frame_qindex[INTER_FRAME] < (rc->best_quality << 1) && in vp9_scene_detection_onepass()
3181 rc->rate_correction_factors[INTER_NORMAL] == MIN_BPB_FACTOR) { in vp9_scene_detection_onepass()
3182 rc->rate_correction_factors[INTER_NORMAL] = 0.5; in vp9_scene_detection_onepass()
3183 rc->avg_frame_qindex[INTER_FRAME] = rc->worst_quality; in vp9_scene_detection_onepass()
3184 rc->buffer_level = rc->optimal_buffer_level; in vp9_scene_detection_onepass()
3185 rc->bits_off_target = rc->optimal_buffer_level; in vp9_scene_detection_onepass()
3186 rc->reset_high_source_sad = 1; in vp9_scene_detection_onepass()
3188 if (cm->frame_type != KEY_FRAME && rc->reset_high_source_sad) in vp9_scene_detection_onepass()
3189 rc->this_frame_target = rc->avg_frame_bandwidth; in vp9_scene_detection_onepass()
3200 RATE_CONTROL *const lrc = &lc->rc; in vp9_scene_detection_onepass()
3201 lrc->avg_source_sad[0] = rc->avg_source_sad[0]; in vp9_scene_detection_onepass()
3206 rc->high_source_sad && rc->frames_to_key > 3 && in vp9_scene_detection_onepass()
3207 rc->count_last_scene_change > 4 && in vp9_scene_detection_onepass()
3212 rc->source_alt_ref_pending = 0; in vp9_scene_detection_onepass()
3214 rc->source_alt_ref_pending = 1; in vp9_scene_detection_onepass()
3215 rc->gfu_boost = DEFAULT_GF_BOOST >> 1; in vp9_scene_detection_onepass()
3216 rc->baseline_gf_interval = in vp9_scene_detection_onepass()
3217 VPXMIN(20, VPXMAX(10, rc->baseline_gf_interval)); in vp9_scene_detection_onepass()
3218 adjust_gfint_frame_constraint(cpi, rc->frames_to_key); in vp9_scene_detection_onepass()
3219 rc->frames_till_gf_update_due = rc->baseline_gf_interval; in vp9_scene_detection_onepass()
3222 rc->count_last_scene_change = 0; in vp9_scene_detection_onepass()
3224 rc->count_last_scene_change++; in vp9_scene_detection_onepass()
3237 RATE_CONTROL *const rc = &cpi->rc; in vp9_encodedframe_overshoot() local
3239 int thresh_qp = 7 * (rc->worst_quality >> 3); in vp9_encodedframe_overshoot()
3240 int thresh_rate = rc->avg_frame_bandwidth << 3; in vp9_encodedframe_overshoot()
3244 thresh_qp = 3 * (rc->worst_quality >> 2); in vp9_encodedframe_overshoot()
3255 cpi->rc.rate_correction_factors[INTER_NORMAL]; in vp9_encodedframe_overshoot()
3256 const int target_size = cpi->rc.avg_frame_bandwidth; in vp9_encodedframe_overshoot()
3262 *q = cpi->rc.worst_quality; in vp9_encodedframe_overshoot()
3264 cpi->rc.re_encode_maxq_scene_change = 1; in vp9_encodedframe_overshoot()
3282 if (sum_intra_usage > 60) cpi->rc.hybrid_intra_scene_change = 1; in vp9_encodedframe_overshoot()
3288 cpi->rc.avg_frame_qindex[INTER_FRAME] = *q; in vp9_encodedframe_overshoot()
3289 rc->buffer_level = rc->optimal_buffer_level; in vp9_encodedframe_overshoot()
3290 rc->bits_off_target = rc->optimal_buffer_level; in vp9_encodedframe_overshoot()
3292 cpi->rc.rc_1_frame = 0; in vp9_encodedframe_overshoot()
3293 cpi->rc.rc_2_frame = 0; in vp9_encodedframe_overshoot()
3308 cpi->rc.rate_correction_factors[INTER_NORMAL] = rate_correction_factor; in vp9_encodedframe_overshoot()
3329 RATE_CONTROL *lrc = &lc->rc; in vp9_encodedframe_overshoot()