 |
AOMedia AV1 Codec
|
12 #ifndef AOM_AV1_ENCODER_PASS2_STRATEGY_H_
13 #define AOM_AV1_ENCODER_PASS2_STRATEGY_H_
31 double gf_group_raw_error;
32 double gf_group_skip_pct;
33 double gf_group_inactive_zone_rows;
35 double mv_ratio_accumulator;
36 double decay_accumulator;
37 double zero_motion_accumulator;
38 double loop_decay_rate;
39 double last_loop_decay_rate;
40 double this_frame_mv_in_out;
41 double mv_in_out_accumulator;
42 double abs_mv_in_out_accumulator;
44 double avg_sr_coded_error;
45 double avg_pcnt_second_ref;
46 double avg_new_mv_count;
47 double avg_wavelet_energy;
48 double avg_raw_err_stdev;
49 int non_zero_stdev_count;
59 double frame_coded_error;
60 double frame_sr_coded_error;
65 void av1_init_second_pass(
struct AV1_COMP *cpi);
67 void av1_init_single_pass_lap(
AV1_COMP *cpi);
91 unsigned int frame_flags);
128 GF_GROUP *gf_group,
int is_key_frame,
int use_arf,
129 int64_t gf_group_bits);
131 int av1_calc_arf_boost(
const TWO_PASS *twopass,
134 int offset,
int f_frames,
int b_frames,
135 int *num_fpstats_used,
int *num_fpstats_required,
136 int project_gfu_boost);
139 const int flash_detected,
140 const int frames_since_key,
149 int total_frames,
int offset, REGIONS *regions,
156 #endif // AOM_AV1_ENCODER_PASS2_STRATEGY_H_
void av1_gop_bit_allocation(const AV1_COMP *cpi, RATE_CONTROL *const rc, GF_GROUP *gf_group, int is_key_frame, int use_arf, int64_t gf_group_bits)
Distributes bits to frames in a group.
Definition: pass2_strategy.c:2644
int width
Definition: encoder.h:1965
double pcnt_neutral
Definition: firstpass.h:88
int projected_frame_size
Definition: ratectrl.h:150
FrameProbInfo frame_probs
Definition: encoder.h:2650
int mb_rows
Definition: av1_common_int.h:506
Declares top-level encoder structures and functions.
The stucture of acummulated frame stats in the first pass.
Definition: firstpass.h:41
int av1_calc_iframe_target_size_one_pass_cbr(const struct AV1_COMP *cpi)
Calculates how many bits to use for an i frame in one pass cbr.
int64_t bits_off_target
Definition: ratectrl.h:521
int64_t gf_group_bits
Definition: ratectrl.h:267
Rate Control parameters and status.
Definition: ratectrl.h:134
int active_best_quality[MAX_ARF_LAYERS+1]
Definition: ratectrl.h:464
Data related to the current GF/ARF group and the individual frames within the group.
Definition: firstpass.h:344
static void define_gf_group_pass0(AV1_COMP *cpi)
Define a GF group in one pass mode when no look ahead stats are available.
Definition: pass2_strategy.c:2140
void av1_get_second_pass_params(AV1_COMP *cpi, EncodeFrameParams *const frame_params, unsigned int frame_flags)
Main per frame entry point for second pass of two pass encode.
Definition: pass2_strategy.c:3622
Encoder rate control configuration parameters.
Definition: encoder.h:520
static void calculate_gf_length(AV1_COMP *cpi, int max_gop_length, int max_intervals)
Determine the length of future GF groups.
Definition: pass2_strategy.c:1874
int64_t is_flash
Definition: firstpass.h:155
static int get_twopass_worst_quality(AV1_COMP *cpi, const double av_frame_err, double inactive_zone, int av_target_bandwidth)
Choose a target maximum Q for a group of frames.
Definition: pass2_strategy.c:328
bool enable_tpl_model
Definition: encoder.h:848
unsigned int vbr_corpus_complexity_lap
Definition: encoder.h:550
double MVcv
Definition: firstpass.h:128
Primary Rate Control parameters and status.
Definition: ratectrl.h:261
bool do_frame_data_update
Definition: encoder.h:3272
TWO_PASS twopass
Definition: encoder.h:2525
SPEED_FEATURES sf
Definition: encoder.h:2881
int last_q[FRAME_TYPES]
Definition: ratectrl.h:479
int best_quality
Definition: ratectrl.h:216
unsigned char gf_frame_index
Definition: encoder.h:2912
COMPRESSOR_STAGE compressor_stage
Definition: encoder.h:3168
FrameProbInfo frame_new_probs[10]
Definition: encoder.h:2998
accumulated stats and features for a frame
Definition: pass2_strategy.h:56
int arnr_max_frames
Definition: encoder.h:830
double pcnt_motion
Definition: firstpass.h:76
struct aom_internal_error_info * error
Definition: av1_common_int.h:758
static void define_gf_group(AV1_COMP *cpi, EncodeFrameParams *frame_params, int is_final_pass)
Define a GF group.
Definition: pass2_strategy.c:2429
int gf_intervals[MAX_NUM_GF_INTERVALS]
Definition: ratectrl.h:282
accumulated stats and features in a gf group
Definition: pass2_strategy.h:28
@ AOM_CQ
Definition: aom_encoder.h:187
GF_GROUP gf_group
Definition: encoder.h:2495
double pcnt_second_ref
Definition: firstpass.h:82
int do_update_frame_probs_txtype[10]
Definition: encoder.h:3003
Two pass status and control data.
Definition: firstpass.h:412
KeyFrameCfg kf_cfg
Definition: encoder.h:926
int spatial_layer_id
Definition: av1_common_int.h:1049
double sr_coded_error
Definition: firstpass.h:68
int lap_enabled
Definition: encoder.h:2505
THIRD_PASS_DEC_CTX * third_pass_ctx
Definition: encoder.h:3328
int avg_frame_qindex[FRAME_TYPES]
Definition: ratectrl.h:356
static int define_gf_group_pass3(AV1_COMP *cpi, EncodeFrameParams *frame_params, int is_final_pass)
Define a GF group for the third apss.
Definition: pass2_strategy.c:2586
double MVrv
Definition: firstpass.h:124
Describes the codec algorithm interface to applications.
TWO_PASS_FRAME twopass_frame
Definition: encoder.h:3323
Main encoder configuration data structure.
Definition: encoder.h:909
int tx_type_probs[FRAME_UPDATE_TYPES][TX_SIZES_ALL][TX_TYPES]
Definition: encoder.h:1103
int av1_calc_pframe_target_size_one_pass_cbr(const struct AV1_COMP *cpi, FRAME_UPDATE_TYPE frame_update_type)
Calculates how many bits to use for a P frame in one pass cbr.
static void find_next_key_frame(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame)
Determine the next key frame group.
Definition: pass2_strategy.c:3145
int rate_error_estimate
Definition: ratectrl.h:505
Top level encoder structure.
Definition: encoder.h:2664
int gfu_boost
Definition: ratectrl.h:277
int do_update_vbr_bits_off_target_fast
Definition: encoder.h:3037
int height
Definition: av1_common_int.h:776
TplParams tpl_data
Definition: encoder.h:2583
@ AOM_CBR
Definition: aom_encoder.h:186
int initial_mbs
Definition: encoder.h:2958
int key_freq_min
Definition: encoder.h:466
int temporal_layer_id
Definition: av1_common_int.h:1043
enum aom_rc_mode mode
Definition: encoder.h:604
FRAME_TYPE frame_type
Definition: encoder.h:3364
Data structure used for managing first pass stats.
Definition: firstpass.h:177
TEMPORAL_FILTER_INFO tf_info
Definition: encoder.h:2535
FIRSTPASS_STATS total_stats
Definition: firstpass.h:231
SequenceHeader * seq_params
Definition: av1_common_int.h:976
const FIRSTPASS_STATS * av1_firstpass_info_peek(const FIRSTPASS_INFO *firstpass_info, int offset_from_cur)
Peek at a stats from firstpass_info.
struct lookahead_ctx * lookahead
Definition: encoder.h:2467
int obmc_probs[FRAME_UPDATE_TYPES][BLOCK_SIZES_ALL]
Definition: encoder.h:1088
double mv_in_out_count
Definition: firstpass.h:134
AV1_COMMON common
Definition: encoder.h:2707
int under_shoot_pct
Definition: encoder.h:579
int cq_level
Definition: encoder.h:599
double mvc_abs
Definition: firstpass.h:120
double new_mv_count
Definition: firstpass.h:138
InitialDimensions initial_dimensions
Definition: encoder.h:2950
double pcnt_inter
Definition: firstpass.h:72
Declares frame encoding functions.
int av1_tpl_setup_stats(struct AV1_COMP *cpi, int gop_eval, const struct EncodeFrameParams *const frame_params)
Implements temporal dependency modelling for a GOP (GF/ARF group) and selects between 16 and 32 frame...
double inactive_zone_rows
Definition: firstpass.h:100
int best_allowed_q
Definition: encoder.h:595
void av1_twopass_postencode_update(AV1_COMP *cpi)
Adjustments to two pass and rate control after each frame.
Definition: pass2_strategy.c:4002
bool auto_key
Definition: encoder.h:494
int over_shoot_pct
Definition: encoder.h:585
int frames_till_gf_update_due
Definition: ratectrl.h:170
int av1_calc_iframe_target_size_one_pass_vbr(const struct AV1_COMP *const cpi)
Calculates how many bits to use for an i frame in one pass vbr.
int av1_lookahead_pop_sz(struct lookahead_ctx *ctx, COMPRESSOR_STAGE stage)
Get pop_sz value.
int internal_altref_allowed
Definition: encoder.h:2485
int vbrmin_section
Definition: encoder.h:616
static int has_no_stats_stage(const AV1_COMP *const cpi)
Check if the current stage has statistics.
Definition: encoder.h:3761
int height
Definition: encoder.h:1966
Initial frame dimensions.
Definition: encoder.h:1964
int fwd_kf_dist
Definition: encoder.h:499
enum aom_enc_pass pass
Definition: encoder.h:1034
PRIMARY_RATE_CONTROL p_rc
Definition: encoder.h:2530
FILE * second_pass_log_stream
Definition: encoder.h:3333
int intervals_till_gf_calculate_due
Definition: ratectrl.h:175
static int64_t calculate_total_gf_group_bits(AV1_COMP *cpi, double gf_group_err)
Calculates the bit target for this GF/ARF group.
Definition: pass2_strategy.c:785
int vbrbias
Definition: encoder.h:611
int64_t target_bandwidth
Definition: encoder.h:544
int switchable_interp_probs[FRAME_UPDATE_TYPES][((SWITCHABLE_FILTERS+1) *4)][SWITCHABLE_FILTERS]
Definition: encoder.h:1112
int base_frame_target
Definition: ratectrl.h:141
int show_frame
Definition: av1_common_int.h:885
int rolling_target_bits
Definition: ratectrl.h:526
TPL_SPEED_FEATURES tpl_sf
Definition: speed_features.h:1542
CommonQuantParams quant_params
Definition: av1_common_int.h:922
double duration
Definition: firstpass.h:142
int64_t vbr_bits_off_target
Definition: ratectrl.h:510
int rolling_actual_bits
Definition: ratectrl.h:532
static int define_kf_interval(AV1_COMP *cpi, const FIRSTPASS_INFO *firstpass_info, int num_frames_to_detect_scenecut, int search_start_idx)
Determine the location of the next key frame.
Definition: pass2_strategy.c:2882
@ AOM_RC_ONE_PASS
Definition: aom_encoder.h:176
Describes the encoder algorithm interface to applications.
Encoder config related to the coding of key frames.
Definition: encoder.h:462
int active_worst_quality
Definition: ratectrl.h:233
RATE_CONTROL rc
Definition: encoder.h:2861
int do_update_frame_probs_interpfilter[10]
Definition: encoder.h:3018
int base_qindex
Definition: av1_common_int.h:613
int vbrmax_section
Definition: encoder.h:621
Top level common structure used by both encoder and decoder.
Definition: av1_common_int.h:750
double new_framerate
Definition: encoder.h:3032
int kf_boost
Definition: ratectrl.h:272
int64_t total_actual_bits
Definition: ratectrl.h:490
@ AOM_Q
Definition: aom_encoder.h:188
AlgoCfg algo_cfg
Definition: encoder.h:921
AV1LevelParams level_params
Definition: encoder.h:2510
void av1_cyclic_refresh_set_golden_update(struct AV1_COMP *const cpi)
Set golden frame update interval nased on cyclic refresh.
double intra_error
Definition: firstpass.h:56
double noise_var
Definition: firstpass.h:159
int skip_tpl_setup_stats
Definition: encoder.h:2772
double inactive_zone_cols
Definition: firstpass.h:104
double MVc
Definition: firstpass.h:116
double framerate
Definition: encoder.h:2866
int MBs
Definition: av1_common_int.h:516
contains per-frame encoding parameters decided upon by av1_encode_strategy() and passed down to av1_e...
Definition: encoder.h:3356
aom_rc_mode
Rate control mode.
Definition: aom_encoder.h:184
double intra_skip_pct
Definition: firstpass.h:96
int do_update_frame_probs_warp[10]
Definition: encoder.h:3013
double raw_error_stdev
Definition: firstpass.h:151
double mvr_abs
Definition: firstpass.h:112
AV1_PRIMARY * ppi
Definition: encoder.h:2668
int num_frame_recode
Definition: encoder.h:2993
double MVr
Definition: firstpass.h:108
int av1_firstpass_info_future_count(const FIRSTPASS_INFO *firstpass_info, int offset_from_cur)
Count the future stats from the target in firstpass_info Note that the target stats will be counted a...
double count
Definition: firstpass.h:147
unsigned int av1_lookahead_depth(struct lookahead_ctx *ctx, COMPRESSOR_STAGE stage)
Get the number of frames currently in the lookahead queue.
int64_t vbr_bits_off_target_fast
Definition: ratectrl.h:515
Encoder-side probabilities for pruning of various AV1 tools.
Definition: encoder.h:1082
Frame level Two pass status and control data.
Definition: firstpass.h:455
int warped_probs[FRAME_UPDATE_TYPES]
Definition: encoder.h:1095
int width
Definition: av1_common_int.h:775
GF_STATE gf_state
Definition: encoder.h:2500
int do_update_frame_probs_obmc[10]
Definition: encoder.h:3008
int frames_left
Definition: encoder.h:2520
AV1EncoderConfig oxcf
Definition: encoder.h:2712
int av1_calc_pframe_target_size_one_pass_vbr(const struct AV1_COMP *const cpi, FRAME_UPDATE_TYPE frame_update_type)
Calculates how many bits to use for a P frame in one pass vbr.
double cor_coeff
Definition: firstpass.h:163
double coded_error
Definition: firstpass.h:64
RateControlCfg rc_cfg
Definition: encoder.h:931
enum aom_bit_depth aom_bit_depth_t
Bit depth for codecThis enumeration determines the bit depth of the codec.
int cur_gf_index
Definition: ratectrl.h:287
CurrentFrame current_frame
Definition: av1_common_int.h:754
FRAME_INFO frame_info
Definition: encoder.h:2940
CommonModeInfoParams mi_params
Definition: av1_common_int.h:910
double frame_avg_wavelet_energy
Definition: firstpass.h:60
double avg_q
Definition: ratectrl.h:474
void av1_gop_setup_structure(struct AV1_COMP *cpi)
Set up the Group-Of-Pictures structure for this GF_GROUP.
int show_frame
Definition: encoder.h:3374
int frames_to_key
Definition: ratectrl.h:185
int worst_quality
Definition: ratectrl.h:212
int key_freq_max
Definition: encoder.h:471
double weight
Definition: firstpass.h:52
@ AOM_RC_THIRD_PASS
Definition: aom_encoder.h:179