AOMedia AV1 Codec
|
Data Structures | |
struct | CYCLIC_REFRESH |
The stucture of CYCLIC_REFRESH. More... | |
Functions | |
int | av1_cyclic_refresh_estimate_bits_at_q (const struct AV1_COMP *cpi, double correction_factor) |
Estimate the bits, incorporating the delta-q from the segments. | |
int | av1_cyclic_refresh_rc_bits_per_mb (const struct AV1_COMP *cpi, int i, double correction_factor) |
Estimate the bits per mb, for given q = i and delta-q. | |
void | av1_cyclic_reset_segment_skip (const struct AV1_COMP *cpi, MACROBLOCK *const x, int mi_row, int mi_col, BLOCK_SIZE bsize, RUN_TYPE dry_run) |
Update segment_id for blocks are skipped. | |
void | av1_cyclic_refresh_update_segment (const struct AV1_COMP *cpi, MACROBLOCK *const x, int mi_row, int mi_col, BLOCK_SIZE bsize, int64_t rate, int64_t dist, int skip, RUN_TYPE dry_run) |
Update segment_id for block based on mode selected. | |
void | av1_init_cyclic_refresh_counters (MACROBLOCK *const x) |
Initialize counters used for cyclic refresh. | |
void | av1_accumulate_cyclic_refresh_counters (CYCLIC_REFRESH *const cyclic_refresh, const MACROBLOCK *const x) |
Accumulate cyclic refresh counters. | |
void | av1_cyclic_refresh_set_golden_update (struct AV1_COMP *const cpi) |
Set golden frame update interval nased on cyclic refresh. | |
void | av1_cyclic_refresh_update_parameters (struct AV1_COMP *const cpi) |
Set the global/frame level parameters for cyclic refresh. | |
void | av1_cyclic_refresh_setup (struct AV1_COMP *const cpi) |
Setup the cyclic background refresh. | |
This module describes the cyclic refresh (aq-mode=3) in AV1. More details will be added.
int av1_cyclic_refresh_estimate_bits_at_q | ( | const struct AV1_COMP * | cpi, |
double | correction_factor ) |
Estimate the bits, incorporating the delta-q from the segments.
For the just encoded frame, estimate the bits, incorporating the delta-q from non-base segment(s). Note this function is called in the postencode (called from rc_update_rate_correction_factors()).
[in] | cpi | Top level encoder structure |
[in] | correction_factor | rate correction factor |
Referenced by av1_rc_update_rate_correction_factors().
int av1_cyclic_refresh_rc_bits_per_mb | ( | const struct AV1_COMP * | cpi, |
int | i, | ||
double | correction_factor ) |
Estimate the bits per mb, for given q = i and delta-q.
Prior to encoding the frame, estimate the bits per mb, for a given q = i and a corresponding delta-q (for segment 1). This function is called in the rc_regulate_q() to set the base qp index. Note: the segment map is set to either 0/CR_SEGMENT_ID_BASE (no refresh) or to 1/CR_SEGMENT_ID_BOOST1 (refresh) for each superblock, prior to encoding.
[in] | cpi | Top level encoder structure |
[in] | i | q index |
[in] | correction_factor | rate correction factor |
void av1_cyclic_reset_segment_skip | ( | const struct AV1_COMP * | cpi, |
MACROBLOCK *const | x, | ||
int | mi_row, | ||
int | mi_col, | ||
BLOCK_SIZE | bsize, | ||
RUN_TYPE | dry_run ) |
Update segment_id for blocks are skipped.
After encoding a given prediction block, of size bsize at (mi_row, mi_col), check if we should reset the segment_id based on skip_txfm, and update the cyclic_refresh map and segmentation counters.
[in] | cpi | Top level encoder structure |
[in] | x | Pointer to MACROBLOCK structure |
[in] | mi_row | Row coordinate of the block in a step size of MI_SIZE |
[in] | mi_col | Col coordinate of the block in a step size of MI_SIZE |
[in] | bsize | Block size |
[in] | dry_run | A code indicating whether it is part of the final pass for reconstructing the superblock |
mbmi->segment_id
, the cpi->cyclic_refresh
and the cm->cpi->enc_seg.map
. void av1_cyclic_refresh_update_segment | ( | const struct AV1_COMP * | cpi, |
MACROBLOCK *const | x, | ||
int | mi_row, | ||
int | mi_col, | ||
BLOCK_SIZE | bsize, | ||
int64_t | rate, | ||
int64_t | dist, | ||
int | skip, | ||
RUN_TYPE | dry_run ) |
Update segment_id for block based on mode selected.
Prior to coding a given prediction block, of size bsize at (mi_row, mi_col), check if we should reset the segment_id (based on mode/motion/skip selected for that block) and update the cyclic_refresh map and segmentation map.
[in] | cpi | Top level encoder structure |
[in] | x | Pointer to MACROBLOCK structure |
[in] | mi_row | Row coordinate of the block in a step size of MI_SIZE |
[in] | mi_col | Col coordinate of the block in a step size of MI_SIZE |
[in] | bsize | Block size |
[in] | rate | Projected block rate from pickmode |
[in] | dist | Projected block dist from pickmode |
[in] | skip | Skip flag set from picmode |
[in] | dry_run | A code indicating whether it is part of the final pass for reconstructing the superblock |
mbmi->segment_id
, the cpi->cyclic_refresh
and the cm->cpi->enc_seg.map
. void av1_init_cyclic_refresh_counters | ( | MACROBLOCK *const | x | ) |
Initialize counters used for cyclic refresh.
Initializes cyclic refresh counters actual_num_seg1_blocks and actual_num_seg2_blocks.
[in] | x | Pointer to MACROBLOCK structure |
x->actual_num_seg1_blocks
and the x->actual_num_seg2_blocks
. void av1_accumulate_cyclic_refresh_counters | ( | CYCLIC_REFRESH *const | cyclic_refresh, |
const MACROBLOCK *const | x ) |
Accumulate cyclic refresh counters.
Accumulates cyclic refresh counters actual_num_seg1_blocks and actual_num_seg2_blocks from MACROBLOCK strcture to CYCLIC_REFRESH strcture.
[in] | cyclic_refresh | Pointer to CYCLIC_REFRESH structure |
[in] | x | Pointer to MACROBLOCK structure |
cyclic_refresh->actual_num_seg1_blocks
and the cyclic_refresh->actual_num_seg2_blocks
. void av1_cyclic_refresh_set_golden_update | ( | struct AV1_COMP *const | cpi | ) |
Set golden frame update interval nased on cyclic refresh.
[in] | cpi | Top level encoder structure |
cpi->rc.baseline_gf_interval
. Referenced by define_gf_group_pass0().
void av1_cyclic_refresh_update_parameters | ( | struct AV1_COMP *const | cpi | ) |
Set the global/frame level parameters for cyclic refresh.
First call to the cyclic refresh, before encoding the frame. Sets the flag on whether cyclic refresh should be applied, sets the amount/percent of refresh, and the amount of boost applied to the two segments (set by rate_ratio_qdelta and rate_boost_fac).
[in] | cpi | Top level encoder structure |
cpi->cyclic_refresh
with the settings. Referenced by av1_encode_strategy().
void av1_cyclic_refresh_setup | ( | struct AV1_COMP *const | cpi | ) |
Setup the cyclic background refresh.
Set the delta q for the segment(s), and set the segmentation map.
[in] | cpi | Top level encoder structure |
cpi->cyclic_refresh
with the cyclic refresh parameters and the cm->seg
with the segmentation data. Referenced by encode_without_recode().