| AOMedia AV1 Codec

PRIMARY_RATE_CONTROL Struct Reference

Primary Rate Control parameters and status. More...

`#include <ratectrl.h>`

## Data Fields
int64_t | gf_group_bits
int | kf_boost
int | gfu_boost
int | gf_intervals [MAX_NUM_GF_INTERVALS]
int | cur_gf_index
int64_t | starting_buffer_level
int64_t | optimal_buffer_level
int64_t | maximum_buffer_size
int | arf_q
int | last_kf_qindex
int | avg_frame_qindex [FRAME_TYPES]
int | active_best_quality [MAX_ARF_LAYERS+1]
int | last_boosted_qindex
double | avg_q
int | last_q [FRAME_TYPES]
double | rate_correction_factors [RATE_FACTOR_LEVELS]
int64_t | total_actual_bits
int64_t | total_target_bits
int64_t | buffer_level
int | rate_error_estimate
int64_t | vbr_bits_off_target
int64_t | vbr_bits_off_target_fast
int64_t | bits_off_target
int | rolling_target_bits
int | rolling_actual_bits
int | q_history [MAX_Q_HISTORY]

## Detailed Description

Primary Rate Control parameters and status.

## Field Documentation

## ◆ gf_group_bits

int64_t PRIMARY_RATE_CONTROL::gf_group_bits

Target bit budget for the current GF / ARF group of frame.

## ◆ kf_boost

int PRIMARY_RATE_CONTROL::kf_boost

Boost factor used to calculate the extra bits allocated to the key frame

Referenced by av1_get_second_pass_params(), and find_next_key_frame().

## ◆ gfu_boost

int PRIMARY_RATE_CONTROL::gfu_boost

Boost factor used to calculate the extra bits allocated to ARFs and GFs

Referenced by av1_get_second_pass_params(), av1_gop_bit_allocation(), and define_gf_group_pass0().

## ◆ gf_intervals

int PRIMARY_RATE_CONTROL::gf_intervals[MAX_NUM_GF_INTERVALS]

Stores the determined gf group lengths for a set of gf groups

Referenced by av1_get_second_pass_params(), calculate_gf_length(), define_gf_group(), and define_gf_group_pass0().

## ◆ cur_gf_index

int PRIMARY_RATE_CONTROL::cur_gf_index

The current group's index into gf_intervals[]

Referenced by av1_get_second_pass_params(), calculate_gf_length(), define_gf_group(), and define_gf_group_pass0().

## ◆ starting_buffer_level

int64_t PRIMARY_RATE_CONTROL::starting_buffer_level

Initial buffuer level in ms for CBR / low delay encoding

Referenced by av1_update_layer_context_change_config().

## ◆ optimal_buffer_level

int64_t PRIMARY_RATE_CONTROL::optimal_buffer_level

Optimum / target buffuer level in ms for CBR / low delay encoding

Referenced by av1_encodedframe_overshoot_cbr(), av1_postencode_drop_cbr(), av1_update_layer_context_change_config(), and dynamic_resize_one_pass_cbr().

## ◆ maximum_buffer_size

int64_t PRIMARY_RATE_CONTROL::maximum_buffer_size

Maximum target buffuer level in ms for CBR / low delay encoding

Referenced by av1_update_layer_context_change_config().

## ◆ arf_q

int PRIMARY_RATE_CONTROL::arf_q

Q index used for ALT frame

Referenced by av1_rc_pick_q_and_bounds().

## ◆ last_kf_qindex

int PRIMARY_RATE_CONTROL::last_kf_qindex

Q used for last boosted (non leaf) frame

Referenced by get_q().

## ◆ avg_frame_qindex

int PRIMARY_RATE_CONTROL::avg_frame_qindex[FRAME_TYPES]

Average of q index of previous encoded frames in a sequence.

Referenced by av1_encodedframe_overshoot_cbr(), av1_init_layer_context(), av1_postencode_drop_cbr(), and rc_pick_q_and_bounds_no_stats().

## ◆ active_best_quality

int PRIMARY_RATE_CONTROL::active_best_quality[MAX_ARF_LAYERS+1]

Proposed minimum allowed Q different layers in a coding pyramid

Referenced by av1_twopass_postencode_update(), and rc_pick_q_and_bounds().

## ◆ last_boosted_qindex

int PRIMARY_RATE_CONTROL::last_boosted_qindex

Q used for last boosted (non leaf) frame (GF/KF/ARF)

Referenced by get_q(), and rc_pick_q_and_bounds_no_stats().

## ◆ avg_q

double PRIMARY_RATE_CONTROL::avg_q

Average Q value of previous inter frames

Referenced by av1_init_layer_context().

## ◆ last_q

int PRIMARY_RATE_CONTROL::last_q[FRAME_TYPES]

Q used on last encoded frame of the given type.

Referenced by av1_init_layer_context(), and dynamic_resize_one_pass_cbr().

## ◆ rate_correction_factors

double PRIMARY_RATE_CONTROL::rate_correction_factors[RATE_FACTOR_LEVELS]

Correction factors used to adjust the q estimate for a given target rate in the encode loop.

Referenced by av1_encode_strategy(), av1_encodedframe_overshoot_cbr(), av1_init_layer_context(), get_rate_correction_factor(), and set_rate_correction_factor().

## ◆ total_actual_bits

int64_t PRIMARY_RATE_CONTROL::total_actual_bits

Current total consumed bits.

Referenced by av1_init_layer_context(), and av1_twopass_postencode_update().

## ◆ total_target_bits

int64_t PRIMARY_RATE_CONTROL::total_target_bits

Current total target bits.

## ◆ buffer_level

int64_t PRIMARY_RATE_CONTROL::buffer_level

Current buffer level.

Referenced by av1_encodedframe_overshoot_cbr(), av1_init_layer_context(), av1_postencode_drop_cbr(), av1_update_layer_context_change_config(), and dynamic_resize_one_pass_cbr().

## ◆ rate_error_estimate

int PRIMARY_RATE_CONTROL::rate_error_estimate

PCT rc error.

Referenced by av1_twopass_postencode_update().

## ◆ vbr_bits_off_target

int64_t PRIMARY_RATE_CONTROL::vbr_bits_off_target

Error bits available from previously encoded frames.

Referenced by av1_twopass_postencode_update().

## ◆ vbr_bits_off_target_fast

int64_t PRIMARY_RATE_CONTROL::vbr_bits_off_target_fast

Error bits available from previously encoded frames undershoot.

Referenced by av1_twopass_postencode_update().

## ◆ bits_off_target

int64_t PRIMARY_RATE_CONTROL::bits_off_target

Total bits deviated from the average frame target, from previously encoded frames.

Referenced by av1_encodedframe_overshoot_cbr(), av1_init_layer_context(), av1_postencode_drop_cbr(), and av1_update_layer_context_change_config().

## ◆ rolling_target_bits

int PRIMARY_RATE_CONTROL::rolling_target_bits

Rolling monitor target bits updated based on current frame target size.

Referenced by av1_twopass_postencode_update().

## ◆ rolling_actual_bits

int PRIMARY_RATE_CONTROL::rolling_actual_bits

Rolling monitor actual bits updated based on current frame final projected size.

Referenced by av1_twopass_postencode_update().

## ◆ q_history

int PRIMARY_RATE_CONTROL::q_history[MAX_Q_HISTORY]

The history of qindex for each frame. Only used when RT_PASSIVE_STRATEGY = 1.

The documentation for this struct was generated from the following file:

- av1/encoder/ratectrl.h