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

◆ 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: