15 #ifndef AOM_AV1_ENCODER_ENCODER_H_
16 #define AOM_AV1_ENCODER_ENCODER_H_
21 #include "config/aom_config.h"
25 #include "av1/common/alloccommon.h"
26 #include "av1/common/av1_common_int.h"
27 #include "av1/common/blockd.h"
28 #include "av1/common/entropymode.h"
30 #include "av1/common/reconintra.h"
31 #include "av1/common/resize.h"
32 #include "av1/common/thread_common.h"
33 #include "av1/common/timing.h"
35 #include "av1/encoder/aq_cyclicrefresh.h"
36 #include "av1/encoder/av1_quantize.h"
38 #include "av1/encoder/context_tree.h"
39 #include "av1/encoder/encodemb.h"
40 #include "av1/encoder/external_partition.h"
41 #include "av1/encoder/firstpass.h"
42 #include "av1/encoder/global_motion.h"
43 #include "av1/encoder/level.h"
45 #include "av1/encoder/mcomp.h"
46 #include "av1/encoder/pickcdef.h"
47 #include "av1/encoder/ratectrl.h"
48 #include "av1/encoder/rd.h"
50 #include "av1/encoder/svc_layercontext.h"
51 #include "av1/encoder/temporal_filter.h"
52 #include "av1/encoder/thirdpass.h"
53 #include "av1/encoder/tokenize.h"
54 #include "av1/encoder/tpl_model.h"
55 #include "av1/encoder/av1_noise_estimate.h"
56 #include "av1/encoder/bitstream.h"
58 #if CONFIG_INTERNAL_STATS
59 #include "aom_dsp/ssim.h"
61 #include "aom_dsp/variance.h"
63 #include "aom_dsp/noise_model.h"
66 #include "av1/encoder/tune_vmaf.h"
68 #if CONFIG_AV1_TEMPORAL_DENOISING
69 #include "av1/encoder/av1_temporal_denoiser.h"
71 #if CONFIG_TUNE_BUTTERAUGLI
72 #include "av1/encoder/tune_butteraugli.h"
75 #include "aom/internal/aom_codec_internal.h"
76 #include "aom_util/aom_thread.h"
86 #define SCENE_CUT_KEY_TEST_INTERVAL 16
89 #define TF_LOOKAHEAD_IDX_THR 7
91 #define HDR_QP_LEVELS 10
92 #define CHROMA_CB_QP_SCALE 1.04
93 #define CHROMA_CR_QP_SCALE 1.04
94 #define CHROMA_QP_SCALE -0.46
95 #define CHROMA_QP_OFFSET 9.26
96 #define QP_SCALE_FACTOR 2.0
97 #define DISABLE_HDR_LUMA_DELTAQ 1
101 typedef struct aom_rational64 {
114 } UENUM1BYTE(AOM_SCALING);
128 FRAMEFLAGS_KEY = 1 << 0,
129 FRAMEFLAGS_GOLDEN = 1 << 1,
130 FRAMEFLAGS_BWDREF = 1 << 2,
132 FRAMEFLAGS_ALTREF = 1 << 3,
133 FRAMEFLAGS_INTRAONLY = 1 << 4,
134 FRAMEFLAGS_SWITCH = 1 << 5,
135 FRAMEFLAGS_ERROR_RESILIENT = 1 << 6,
136 } UENUM1BYTE(FRAMETYPE_FLAGS);
141 PARALLEL_SIMULATION_ENCODE,
142 NUM_FPMT_TEST_ENCODES
143 } UENUM1BYTE(FPMT_TEST_ENC_CFG);
147 #define MIN_PYR_LEVEL 1
148 static INLINE
int get_true_pyr_level(
int frame_level,
int frame_order,
149 int max_layer_depth) {
150 if (frame_order == 0) {
152 return MIN_PYR_LEVEL;
153 }
else if (frame_level == MAX_ARF_LAYERS) {
155 return max_layer_depth;
156 }
else if (frame_level == (MAX_ARF_LAYERS + 1)) {
158 return MIN_PYR_LEVEL;
160 return AOMMAX(MIN_PYR_LEVEL, frame_level);
167 CYCLIC_REFRESH_AQ = 3,
169 } UENUM1BYTE(AQ_MODE);
172 DELTA_Q_OBJECTIVE = 1,
173 DELTA_Q_PERCEPTUAL = 2,
174 DELTA_Q_PERCEPTUAL_AI = 3,
175 DELTA_Q_USER_RATING_BASED = 4,
178 } UENUM1BYTE(DELTAQ_MODE);
186 } UENUM1BYTE(RESIZE_MODE);
190 SS_CFG_LOOKAHEAD = 1,
193 } UENUM1BYTE(SS_CFG_OFFSET);
197 ENABLE_SCENECUT_MODE_1,
198 ENABLE_SCENECUT_MODE_2
199 } UENUM1BYTE(SCENECUT_MODE);
201 #define MAX_VBR_CORPUS_COMPLEXITY 10000
218 } MULTI_THREADED_MODULES;
633 int gf_min_pyr_height;
635 int gf_max_pyr_height;
637 bool enable_auto_arf;
640 bool enable_auto_brf;
645 unsigned int num_tile_groups;
654 int tile_width_count;
656 int tile_height_count;
658 int tile_widths[MAX_TILE_COLS];
660 int tile_heights[MAX_TILE_ROWS];
662 bool enable_large_scale_tile;
664 bool enable_single_tile_decoding;
666 bool enable_ext_tile_debug;
676 int forced_max_frame_width;
679 int forced_max_frame_height;
690 bool enable_warped_motion;
692 bool allow_warped_motion;
699 aom_timing_info_t timing_info;
701 uint32_t num_units_in_decoding_tick;
704 bool decoder_model_info_present_flag;
707 bool display_model_info_present_flag;
709 bool timing_info_present;
725 unsigned int max_reference_frames;
727 bool enable_reduced_reference_set;
729 bool enable_onesided_comp;
747 unsigned int motion_vector_unit_test;
749 unsigned int sb_multipass_unit_test;
754 const char *vmaf_model_path;
756 const char *film_grain_table_filename;
762 int film_grain_test_vector;
769 double init_framerate;
771 unsigned int input_bit_depth;
775 unsigned int chroma_subsampling_x;
777 unsigned int chroma_subsampling_y;
784 int use_fixed_qp_offsets;
794 DELTAQ_MODE deltaq_mode;
796 DELTAQ_MODE deltaq_strength;
798 bool enable_chroma_deltaq;
800 bool enable_hdr_deltaq;
873 bool enable_deltalf_mode;
875 CDEF_CONTROL cdef_control;
877 bool enable_restoration;
879 bool force_video_mode;
881 bool error_resilient_mode;
883 bool frame_parallel_decoding_mode;
885 bool enable_monochrome;
888 bool full_still_picture_hdr;
890 bool enable_dual_filter;
892 bool enable_order_hint;
894 bool ref_frame_mvs_present;
896 bool enable_ref_frame_mvs;
898 bool enable_interintra_comp;
900 bool enable_global_motion;
915 FrameDimensionCfg frm_dim_cfg;
935 QuantizationCfg q_cfg;
967 DecoderModelCfg dec_model_cfg;
970 RefFrameCfg ref_frm_cfg;
973 UnitTestCfg unit_test_cfg;
976 MotionModeCfg motion_mode_cfg;
991 CostUpdateFreq cost_upd_freq;
997 int noise_block_size;
999 int enable_dnl_denoising;
1002 #if CONFIG_AV1_TEMPORAL_DENOISING
1004 int noise_sensitivity;
1008 unsigned int tier_mask;
1012 int border_in_pixels;
1021 AV1_LEVEL target_seq_level_idx[MAX_NUM_OPERATING_POINTS];
1024 BITSTREAM_PROFILE profile;
1041 const char *two_pass_output;
1044 const char *second_pass_log;
1057 bool use_highbitdepth;
1062 bool save_as_annexb;
1066 const char *partition_info_path;
1069 int strict_level_conformance;
1074 static INLINE
int is_lossless_requested(
const RateControlCfg *
const rc_cfg) {
1088 int obmc_probs[FRAME_UPDATE_TYPES][BLOCK_SIZES_ALL];
1095 int warped_probs[FRAME_UPDATE_TYPES];
1103 int tx_type_probs[FRAME_UPDATE_TYPES][TX_SIZES_ALL][TX_TYPES];
1111 int switchable_interp_probs[FRAME_UPDATE_TYPES][SWITCHABLE_FILTER_CONTEXTS]
1112 [SWITCHABLE_FILTERS];
1117 typedef struct FRAME_COUNTS {
1120 #if CONFIG_ENTROPY_STATS
1121 unsigned int kf_y_mode[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS][INTRA_MODES];
1122 unsigned int angle_delta[DIRECTIONAL_MODES][2 * MAX_ANGLE_DELTA + 1];
1123 unsigned int y_mode[BLOCK_SIZE_GROUPS][INTRA_MODES];
1124 unsigned int uv_mode[CFL_ALLOWED_TYPES][INTRA_MODES][UV_INTRA_MODES];
1125 unsigned int cfl_sign[CFL_JOINT_SIGNS];
1126 unsigned int cfl_alpha[CFL_ALPHA_CONTEXTS][CFL_ALPHABET_SIZE];
1127 unsigned int palette_y_mode[PALATTE_BSIZE_CTXS][PALETTE_Y_MODE_CONTEXTS][2];
1128 unsigned int palette_uv_mode[PALETTE_UV_MODE_CONTEXTS][2];
1129 unsigned int palette_y_size[PALATTE_BSIZE_CTXS][PALETTE_SIZES];
1130 unsigned int palette_uv_size[PALATTE_BSIZE_CTXS][PALETTE_SIZES];
1131 unsigned int palette_y_color_index[PALETTE_SIZES]
1132 [PALETTE_COLOR_INDEX_CONTEXTS]
1134 unsigned int palette_uv_color_index[PALETTE_SIZES]
1135 [PALETTE_COLOR_INDEX_CONTEXTS]
1137 unsigned int partition[PARTITION_CONTEXTS][EXT_PARTITION_TYPES];
1138 unsigned int txb_skip[TOKEN_CDF_Q_CTXS][TX_SIZES][TXB_SKIP_CONTEXTS][2];
1139 unsigned int eob_extra[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1140 [EOB_COEF_CONTEXTS][2];
1141 unsigned int dc_sign[PLANE_TYPES][DC_SIGN_CONTEXTS][2];
1142 unsigned int coeff_lps[TX_SIZES][PLANE_TYPES][BR_CDF_SIZE - 1][LEVEL_CONTEXTS]
1144 unsigned int eob_flag[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS][2];
1145 unsigned int eob_multi16[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][5];
1146 unsigned int eob_multi32[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][6];
1147 unsigned int eob_multi64[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][7];
1148 unsigned int eob_multi128[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][8];
1149 unsigned int eob_multi256[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][9];
1150 unsigned int eob_multi512[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][10];
1151 unsigned int eob_multi1024[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][11];
1152 unsigned int coeff_lps_multi[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1153 [LEVEL_CONTEXTS][BR_CDF_SIZE];
1154 unsigned int coeff_base_multi[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1155 [SIG_COEF_CONTEXTS][NUM_BASE_LEVELS + 2];
1156 unsigned int coeff_base_eob_multi[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1157 [SIG_COEF_CONTEXTS_EOB][NUM_BASE_LEVELS + 1];
1158 unsigned int newmv_mode[NEWMV_MODE_CONTEXTS][2];
1159 unsigned int zeromv_mode[GLOBALMV_MODE_CONTEXTS][2];
1160 unsigned int refmv_mode[REFMV_MODE_CONTEXTS][2];
1161 unsigned int drl_mode[DRL_MODE_CONTEXTS][2];
1162 unsigned int inter_compound_mode[INTER_MODE_CONTEXTS][INTER_COMPOUND_MODES];
1163 unsigned int wedge_idx[BLOCK_SIZES_ALL][16];
1164 unsigned int interintra[BLOCK_SIZE_GROUPS][2];
1165 unsigned int interintra_mode[BLOCK_SIZE_GROUPS][INTERINTRA_MODES];
1166 unsigned int wedge_interintra[BLOCK_SIZES_ALL][2];
1167 unsigned int compound_type[BLOCK_SIZES_ALL][MASKED_COMPOUND_TYPES];
1168 unsigned int motion_mode[BLOCK_SIZES_ALL][MOTION_MODES];
1169 unsigned int obmc[BLOCK_SIZES_ALL][2];
1170 unsigned int intra_inter[INTRA_INTER_CONTEXTS][2];
1171 unsigned int comp_inter[COMP_INTER_CONTEXTS][2];
1172 unsigned int comp_ref_type[COMP_REF_TYPE_CONTEXTS][2];
1173 unsigned int uni_comp_ref[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS - 1][2];
1174 unsigned int single_ref[REF_CONTEXTS][SINGLE_REFS - 1][2];
1175 unsigned int comp_ref[REF_CONTEXTS][FWD_REFS - 1][2];
1176 unsigned int comp_bwdref[REF_CONTEXTS][BWD_REFS - 1][2];
1177 unsigned int intrabc[2];
1179 unsigned int txfm_partition[TXFM_PARTITION_CONTEXTS][2];
1180 unsigned int intra_tx_size[MAX_TX_CATS][TX_SIZE_CONTEXTS][MAX_TX_DEPTH + 1];
1181 unsigned int skip_mode[SKIP_MODE_CONTEXTS][2];
1182 unsigned int skip_txfm[SKIP_CONTEXTS][2];
1183 unsigned int compound_index[COMP_INDEX_CONTEXTS][2];
1184 unsigned int comp_group_idx[COMP_GROUP_IDX_CONTEXTS][2];
1185 unsigned int delta_q[DELTA_Q_PROBS][2];
1186 unsigned int delta_lf_multi[FRAME_LF_COUNT][DELTA_LF_PROBS][2];
1187 unsigned int delta_lf[DELTA_LF_PROBS][2];
1189 unsigned int inter_ext_tx[EXT_TX_SETS_INTER][EXT_TX_SIZES][TX_TYPES];
1190 unsigned int intra_ext_tx[EXT_TX_SETS_INTRA][EXT_TX_SIZES][INTRA_MODES]
1192 unsigned int filter_intra_mode[FILTER_INTRA_MODES];
1193 unsigned int filter_intra[BLOCK_SIZES_ALL][2];
1195 unsigned int wiener_restore[2];
1196 unsigned int sgrproj_restore[2];
1199 unsigned int switchable_interp[SWITCHABLE_FILTER_CONTEXTS]
1200 [SWITCHABLE_FILTERS];
1203 #define INTER_MODE_RD_DATA_OVERALL_SIZE 6400
1212 double sse_sse_mean;
1228 #define MAX_INTER_MODES 1024
1286 uint32_t sum_square_error;
1299 VPVariance part_variances;
1304 VPVariance part_variances;
1309 VPVariance part_variances;
1314 VPVariance part_variances;
1319 VPVariance part_variances;
1324 VPVariance part_variances;
1342 int64_t thresholds[5];
1355 #if CONFIG_MULTITHREAD
1369 int *num_finished_cols;
1401 typedef struct TileDataEnc {
1403 DECLARE_ALIGNED(16, FRAME_CONTEXT, tctx);
1404 FRAME_CONTEXT *row_ctx;
1405 uint64_t abs_sum_level;
1406 uint8_t allow_update_cdf;
1407 InterModeRdModel inter_mode_rd_models[BLOCK_SIZES_ALL];
1409 MV firstpass_top_mv;
1412 typedef struct RD_COUNTS {
1413 int compound_ref_used_flag;
1414 int skip_mode_used_flag;
1415 int tx_type_used[TX_SIZES_ALL][TX_TYPES];
1416 int obmc_used[BLOCK_SIZES_ALL][2];
1418 int newmv_or_intra_blocks;
1419 uint64_t seg_tmp_pred_cost[2];
1422 typedef struct ThreadData {
1424 RD_COUNTS rd_counts;
1425 FRAME_COUNTS *counts;
1426 PC_TREE_SHARED_BUFFERS shared_coeff_buf;
1427 SIMPLE_MOTION_DATA_TREE *sms_tree;
1428 SIMPLE_MOTION_DATA_TREE *sms_root;
1429 uint32_t *hash_value_buffer[2][2];
1433 CONV_BUF_TYPE *tmp_conv_dst;
1434 uint64_t abs_sum_level;
1435 uint8_t *tmp_pred_bufs[2];
1438 int coefficient_size;
1439 int max_mv_magnitude;
1440 int interp_filter_selected[SWITCHABLE];
1441 FRAME_CONTEXT *tctx;
1443 int32_t num_64x64_blocks;
1444 PICK_MODE_CONTEXT *firstpass_ctx;
1445 TemporalFilterData tf_data;
1446 TplTxfmStats tpl_txfm_stats;
1450 PixelLevelGradientInfo *pixel_gradient_info;
1455 Block4x4VarInfo *src_var_info_of_4x4_sub_blocks;
1457 PC_TREE *rt_pc_root;
1460 struct EncWorkerData;
1494 int thread_id_to_tile_id[MAX_NUM_THREADS];
1496 #if CONFIG_MULTITHREAD
1521 #define NUM_RECODES_PER_FRAME 10
1526 #define MAX_PARALLEL_FRAMES 4
1685 typedef struct ActiveMap {
1701 double cs_rate_array[32];
1714 #if CONFIG_INTERNAL_STATS
1722 } UENUM1BYTE(StatType);
1724 typedef struct IMAGE_STAT {
1725 double stat[NUM_STAT_TYPES];
1760 #if CONFIG_COLLECT_PARTITION_STATS
1761 typedef struct FramePartitionTimingStats {
1762 int partition_decisions[6][EXT_PARTITION_TYPES];
1763 int partition_attempts[6][EXT_PARTITION_TYPES];
1764 int64_t partition_times[6][EXT_PARTITION_TYPES];
1767 } FramePartitionTimingStats;
1770 #if CONFIG_COLLECT_COMPONENT_TIMING
1771 #include "aom_ports/aom_timer.h"
1774 av1_encode_strategy_time,
1775 av1_get_one_pass_rt_params_time,
1776 av1_get_second_pass_params_time,
1777 denoise_and_encode_time,
1778 apply_filtering_time,
1779 av1_tpl_setup_stats_time,
1780 encode_frame_to_data_rate_time,
1781 encode_with_or_without_recode_time,
1784 loop_restoration_time,
1785 av1_pack_bitstream_final_time,
1786 av1_encode_frame_time,
1787 av1_compute_global_motion_time,
1788 av1_setup_motion_field_time,
1791 rd_pick_partition_time,
1792 rd_use_partition_time,
1793 choose_var_based_partitioning_time,
1794 av1_prune_partitions_time,
1795 none_partition_search_time,
1796 split_partition_search_time,
1797 rectangular_partition_search_time,
1798 ab_partitions_search_time,
1799 rd_pick_4partition_time,
1802 rd_pick_sb_modes_time,
1803 av1_rd_pick_intra_mode_sb_time,
1804 av1_rd_pick_inter_mode_sb_time,
1805 set_params_rd_pick_inter_mode_time,
1806 skip_inter_mode_time,
1807 handle_inter_mode_time,
1808 evaluate_motion_mode_for_winner_candidates_time,
1810 handle_intra_mode_time,
1811 refine_winner_mode_tx_time,
1812 av1_search_palette_mode_time,
1814 compound_type_rd_time,
1815 interpolation_filter_search_time,
1816 motion_mode_rd_time,
1818 nonrd_use_partition_time,
1819 pick_sb_modes_nonrd_time,
1820 hybrid_intra_mode_search_time,
1821 nonrd_pick_inter_mode_sb_time,
1822 encode_b_nonrd_time,
1825 } UENUM1BYTE(TIMING_COMPONENT);
1827 static INLINE
char const *get_component_name(
int index) {
1829 case av1_encode_strategy_time:
return "av1_encode_strategy_time";
1830 case av1_get_one_pass_rt_params_time:
1831 return "av1_get_one_pass_rt_params_time";
1832 case av1_get_second_pass_params_time:
1833 return "av1_get_second_pass_params_time";
1834 case denoise_and_encode_time:
return "denoise_and_encode_time";
1835 case apply_filtering_time:
return "apply_filtering_time";
1836 case av1_tpl_setup_stats_time:
return "av1_tpl_setup_stats_time";
1837 case encode_frame_to_data_rate_time:
1838 return "encode_frame_to_data_rate_time";
1839 case encode_with_or_without_recode_time:
1840 return "encode_with_or_without_recode_time";
1841 case loop_filter_time:
return "loop_filter_time";
1842 case cdef_time:
return "cdef_time";
1843 case loop_restoration_time:
return "loop_restoration_time";
1844 case av1_pack_bitstream_final_time:
return "av1_pack_bitstream_final_time";
1845 case av1_encode_frame_time:
return "av1_encode_frame_time";
1846 case av1_compute_global_motion_time:
1847 return "av1_compute_global_motion_time";
1848 case av1_setup_motion_field_time:
return "av1_setup_motion_field_time";
1849 case encode_sb_row_time:
return "encode_sb_row_time";
1851 case rd_pick_partition_time:
return "rd_pick_partition_time";
1852 case rd_use_partition_time:
return "rd_use_partition_time";
1853 case choose_var_based_partitioning_time:
1854 return "choose_var_based_partitioning_time";
1855 case av1_prune_partitions_time:
return "av1_prune_partitions_time";
1856 case none_partition_search_time:
return "none_partition_search_time";
1857 case split_partition_search_time:
return "split_partition_search_time";
1858 case rectangular_partition_search_time:
1859 return "rectangular_partition_search_time";
1860 case ab_partitions_search_time:
return "ab_partitions_search_time";
1861 case rd_pick_4partition_time:
return "rd_pick_4partition_time";
1862 case encode_sb_time:
return "encode_sb_time";
1864 case rd_pick_sb_modes_time:
return "rd_pick_sb_modes_time";
1865 case av1_rd_pick_intra_mode_sb_time:
1866 return "av1_rd_pick_intra_mode_sb_time";
1867 case av1_rd_pick_inter_mode_sb_time:
1868 return "av1_rd_pick_inter_mode_sb_time";
1869 case set_params_rd_pick_inter_mode_time:
1870 return "set_params_rd_pick_inter_mode_time";
1871 case skip_inter_mode_time:
return "skip_inter_mode_time";
1872 case handle_inter_mode_time:
return "handle_inter_mode_time";
1873 case evaluate_motion_mode_for_winner_candidates_time:
1874 return "evaluate_motion_mode_for_winner_candidates_time";
1875 case do_tx_search_time:
return "do_tx_search_time";
1876 case handle_intra_mode_time:
return "handle_intra_mode_time";
1877 case refine_winner_mode_tx_time:
return "refine_winner_mode_tx_time";
1878 case av1_search_palette_mode_time:
return "av1_search_palette_mode_time";
1879 case handle_newmv_time:
return "handle_newmv_time";
1880 case compound_type_rd_time:
return "compound_type_rd_time";
1881 case interpolation_filter_search_time:
1882 return "interpolation_filter_search_time";
1883 case motion_mode_rd_time:
return "motion_mode_rd_time";
1885 case nonrd_use_partition_time:
return "nonrd_use_partition_time";
1886 case pick_sb_modes_nonrd_time:
return "pick_sb_modes_nonrd_time";
1887 case hybrid_intra_mode_search_time:
return "hybrid_intra_mode_search_time";
1888 case nonrd_pick_inter_mode_sb_time:
return "nonrd_pick_inter_mode_sb_time";
1889 case encode_b_nonrd_time:
return "encode_b_nonrd_time";
1898 #define MAX_INTERNAL_ARFS (REF_FRAMES - BWDREF_FRAME - 1)
1928 int num_ref_frames[MAX_DIRECTIONS];
1936 FrameDistPair reference_frames[MAX_DIRECTIONS][REF_FRAMES - 1];
1956 int src_corners[2 * MAX_CORNERS];
2018 search_site_config search_site_cfg[SS_CFG_TOTAL][NUM_DISTINCT_SEARCH_METHODS];
2054 int ref_relative_dist[INTER_REFS_PER_FRAME];
2088 unsigned int coeff_opt_thresholds[MODE_EVAL_TYPES][2];
2094 TX_SIZE_SEARCH_METHOD tx_size_search_methods[MODE_EVAL_TYPES];
2102 unsigned int use_transform_domain_distortion[MODE_EVAL_TYPES];
2109 unsigned int tx_domain_dist_threshold[MODE_EVAL_TYPES];
2116 unsigned int skip_txfm_level[MODE_EVAL_TYPES];
2123 unsigned int predict_dc_level[MODE_EVAL_TYPES];
2204 int mv_joint_count[4];
2206 int last_bit_nonzero;
2210 int hp_total_mv_rate;
2211 int lp_total_mv_rate;
2222 typedef struct WeberStats {
2223 int64_t mb_wiener_variance;
2224 int64_t src_variance;
2225 int64_t rec_variance;
2226 int16_t src_pix_max;
2227 int16_t rec_pix_max;
2234 struct loopfilter lf;
2258 int show_frame_count;
2318 #if !CONFIG_REALTIME_ONLY
2322 DUCKY_ENCODE_FRAME_MODE_NONE,
2323 DUCKY_ENCODE_FRAME_MODE_QINDEX,
2325 DUCKY_ENCODE_FRAME_MODE_QINDEX_RDMULT,
2327 } UENUM1BYTE(DUCKY_ENCODE_FRAME_MODE);
2330 DUCKY_ENCODE_GOP_MODE_NONE,
2331 DUCKY_ENCODE_GOP_MODE_RCL,
2332 } UENUM1BYTE(DUCKY_ENCODE_GOP_MODE);
2334 typedef struct DuckyEncodeFrameInfo {
2335 DUCKY_ENCODE_FRAME_MODE qp_mode;
2336 DUCKY_ENCODE_GOP_MODE gop_mode;
2339 } DuckyEncodeFrameInfo;
2341 typedef struct DuckyEncodeFrameResult {
2342 int global_order_idx;
2348 } DuckyEncodeFrameResult;
2350 typedef struct DuckyEncodeInfo {
2351 DuckyEncodeFrameInfo frame_info;
2352 DuckyEncodeFrameResult frame_result;
2426 #if CONFIG_FPMT_TEST
2432 FPMT_TEST_ENC_CFG fpmt_unit_test_cfg;
2450 int temp_valid_gm_model_found[FRAME_UPDATE_TYPES];
2457 RefCntBuffer *ref_frame_map_copy[REF_FRAMES];
2601 struct aom_internal_error_info
error;
2608 aom_variance_fn_ptr_t
fn_ptr[BLOCK_SIZES_ALL];
2626 #if CONFIG_INTERNAL_STATS
2628 uint64_t total_time_receive_data;
2629 uint64_t total_time_compress_data;
2631 unsigned int total_mode_chosen_counts[MAX_MODES];
2634 uint64_t total_sq_error[2];
2635 uint64_t total_samples[2];
2638 double total_blockiness;
2639 double worst_blockiness;
2642 double summed_quality;
2643 double summed_weights;
2644 double summed_quality_hbd;
2645 double summed_weights_hbd;
2646 unsigned int total_recode_hits;
2648 double worst_ssim_hbd;
2653 int b_calculate_blockiness;
2654 int b_calculate_consistency;
2656 double total_inconsistency;
2657 double worst_consistency;
2663 #if CONFIG_ENTROPY_STATS
2667 FRAME_COUNTS aggregate_fc;
2955 #if CONFIG_INTERNAL_STATS
2957 uint64_t time_compress_data;
2959 unsigned int mode_chosen_counts[MAX_MODES];
2961 unsigned int frame_recode_hits;
2965 #if CONFIG_SPEED_STATS
2969 unsigned int tx_search_count;
3061 #if CONFIG_FPMT_TEST
3066 double temp_framerate;
3142 #if CONFIG_COLLECT_PARTITION_STATS
3146 FramePartitionTimingStats partition_stats;
3149 #if CONFIG_COLLECT_COMPONENT_TIMING
3153 uint64_t component_time[kTimingComponents];
3158 struct aom_usec_timer component_timer[kTimingComponents];
3162 uint64_t frame_component_time[kTimingComponents];
3187 #if CONFIG_TUNE_VMAF
3194 #if CONFIG_TUNE_BUTTERAUGLI
3239 #if CONFIG_AV1_TEMPORAL_DENOISING
3243 AV1_DENOISER denoiser;
3296 #if CONFIG_FPMT_TEST
3313 #if CONFIG_RD_COMMAND
3317 RD_COMMAND rd_command;
3345 #if CONFIG_BITRATE_ACCURACY
3349 VBR_RATECTRL_INFO vbr_rc_info;
3352 #if CONFIG_RATECTRL_LOG
3356 RATECTRL_LOG rc_log;
3385 #if !CONFIG_REALTIME_ONLY
3405 int64_t ts_duration;
3424 int primary_ref_frame;
3434 int refresh_frame_flags;
3436 int show_existing_frame;
3437 int existing_fb_idx_to_show;
3468 } EncodeFrameResults;
3470 void av1_initialize_enc(
unsigned int usage,
enum aom_rc_mode end_usage);
3474 BufferPool *
const pool,
3475 COMPRESSOR_STAGE stage,
3476 int lap_lag_in_frames);
3478 struct AV1_PRIMARY *av1_create_primary_compressor(
3479 struct aom_codec_pkt_list *pkt_list_head,
int num_lap_buffers,
3484 void av1_remove_primary_compressor(
AV1_PRIMARY *ppi);
3486 #if CONFIG_ENTROPY_STATS
3489 #if CONFIG_INTERNAL_STATS
3494 bool *sb_size_changed);
3497 bool sb_size_changed);
3499 void av1_check_initial_width(
AV1_COMP *
cpi,
int use_highbitdepth,
3500 int subsampling_x,
int subsampling_y);
3502 void av1_init_seq_coding_tools(
AV1_PRIMARY *
const ppi,
3508 void av1_scale_references_fpmt(
AV1_COMP *
cpi,
int *ref_buffers_used_map);
3510 void av1_increment_scaled_ref_counts_fpmt(BufferPool *buffer_pool,
3511 int ref_buffers_used_map);
3513 void av1_release_scaled_references_fpmt(
AV1_COMP *
cpi);
3515 void av1_decrement_ref_counts_fpmt(BufferPool *buffer_pool,
3516 int ref_buffers_used_map);
3518 void av1_init_sc_decisions(
AV1_PRIMARY *
const ppi);
3523 int av1_init_parallel_frame_context(
const AV1_COMP_DATA *
const first_cpi_data,
3525 int *ref_buffers_used_map);
3546 int64_t end_time_stamp);
3578 EncodeFrameResults *
const frame_results);
3589 int av1_use_as_reference(
int *ext_ref_frame_flags,
int ref_frame_flags);
3595 int av1_set_size_literal(
AV1_COMP *
cpi,
int width,
int height);
3597 void av1_set_frame_size(
AV1_COMP *
cpi,
int width,
int height);
3601 int av1_set_active_map(
AV1_COMP *
cpi,
unsigned char *map,
int rows,
int cols);
3603 int av1_get_active_map(
AV1_COMP *
cpi,
unsigned char *map,
int rows,
int cols);
3607 AOM_SCALING horiz_mode, AOM_SCALING vert_mode);
3611 int av1_convert_sect5obus_to_annexb(uint8_t *buffer,
size_t *input_size);
3624 void av1_set_screen_content_options(
struct AV1_COMP *
cpi,
3634 static INLINE
void init_ref_map_pair(
3635 AV1_COMP *cpi, RefFrameMapPair ref_frame_map_pairs[REF_FRAMES]) {
3637 memset(ref_frame_map_pairs, -1,
sizeof(*ref_frame_map_pairs) * REF_FRAMES);
3640 memset(ref_frame_map_pairs, 0,
sizeof(*ref_frame_map_pairs) * REF_FRAMES);
3641 for (
int map_idx = 0; map_idx < REF_FRAMES; map_idx++) {
3644 if (ref_frame_map_pairs[map_idx].disp_order == -1)
continue;
3646 ref_frame_map_pairs[map_idx].disp_order = -1;
3647 ref_frame_map_pairs[map_idx].pyr_level = -1;
3649 }
else if (buf->ref_count > 1) {
3655 for (
int idx2 = map_idx + 1; idx2 < REF_FRAMES; ++idx2) {
3658 ref_frame_map_pairs[idx2].disp_order = -1;
3659 ref_frame_map_pairs[idx2].pyr_level = -1;
3663 ref_frame_map_pairs[map_idx].disp_order = (int)buf->display_order_hint;
3664 ref_frame_map_pairs[map_idx].pyr_level = buf->pyramid_level;
3668 #if CONFIG_FPMT_TEST
3669 static AOM_INLINE
void calc_frame_data_update_flag(
3670 GF_GROUP *
const gf_group,
int gf_frame_index,
3671 bool *
const do_frame_data_update) {
3672 *do_frame_data_update =
true;
3675 if (gf_group->frame_parallel_level[gf_frame_index] == 1) {
3676 *do_frame_data_update =
false;
3677 }
else if (gf_group->frame_parallel_level[gf_frame_index] == 2) {
3679 for (
int i = gf_frame_index + 1; i < gf_group->size; i++) {
3680 if ((gf_group->frame_parallel_level[i] == 0 &&
3681 (gf_group->update_type[i] == ARF_UPDATE ||
3682 gf_group->update_type[i] == INTNL_ARF_UPDATE)) ||
3683 gf_group->frame_parallel_level[i] == 1) {
3685 }
else if (gf_group->frame_parallel_level[i] == 2) {
3686 *do_frame_data_update =
false;
3695 #define TICKS_PER_SEC 10000000LL
3697 static INLINE int64_t
3698 timebase_units_to_ticks(
const aom_rational64_t *timestamp_ratio, int64_t n) {
3699 return n * timestamp_ratio->num / timestamp_ratio->den;
3702 static INLINE int64_t
3703 ticks_to_timebase_units(
const aom_rational64_t *timestamp_ratio, int64_t n) {
3704 int64_t round = timestamp_ratio->num / 2;
3705 if (round > 0) --round;
3706 return (n * timestamp_ratio->den + round) / timestamp_ratio->num;
3709 static INLINE
int frame_is_kf_gf_arf(
const AV1_COMP *cpi) {
3711 const FRAME_UPDATE_TYPE update_type =
3714 return frame_is_intra_only(&cpi->
common) || update_type == ARF_UPDATE ||
3715 update_type == GF_UPDATE;
3719 static INLINE
int av1_use_hash_me(
const AV1_COMP *
const cpi) {
3722 frame_is_intra_only(&cpi->
common));
3726 const AV1_COMMON *
const cm, MV_REFERENCE_FRAME ref_frame) {
3727 const RefCntBuffer *
const buf = get_ref_frame_buf(cm, ref_frame);
3728 return buf != NULL ? &buf->buf : NULL;
3731 static INLINE
void alloc_frame_mvs(
AV1_COMMON *
const cm, RefCntBuffer *buf) {
3732 assert(buf != NULL);
3733 ensure_mv_buffer(buf, cm);
3734 buf->width = cm->
width;
3735 buf->height = cm->
height;
3740 static INLINE
unsigned int allocated_tokens(
const TileInfo *tile,
3741 int sb_size_log2,
int num_planes) {
3742 int tile_mb_rows = (tile->mi_row_end - tile->mi_row_start + 2) >> 2;
3743 int tile_mb_cols = (tile->mi_col_end - tile->mi_col_start + 2) >> 2;
3745 return get_token_alloc(tile_mb_rows, tile_mb_cols, sb_size_log2, num_planes);
3748 static INLINE
void get_start_tok(
AV1_COMP *cpi,
int tile_row,
int tile_col,
3749 int mi_row, TokenExtra **tok,
int sb_size_log2,
3753 TileDataEnc *this_tile = &cpi->
tile_data[tile_row * tile_cols + tile_col];
3754 const TileInfo *
const tile_info = &this_tile->tile_info;
3756 const int tile_mb_cols =
3757 (tile_info->mi_col_end - tile_info->mi_col_start + 2) >> 2;
3758 const int tile_mb_row = (mi_row - tile_info->mi_row_start + 2) >> 2;
3760 *tok = cpi->
token_info.tile_tok[tile_row][tile_col] +
3761 get_token_alloc(tile_mb_row, tile_mb_cols, sb_size_log2, num_planes);
3766 #define ALT_MIN_LAG 3
3767 static INLINE
int is_altref_enabled(
int lag_in_frames,
bool enable_auto_arf) {
3768 return lag_in_frames >= ALT_MIN_LAG && enable_auto_arf;
3771 static AOM_INLINE
int can_disable_altref(
const GFConfig *gf_cfg) {
3772 return is_altref_enabled(gf_cfg->lag_in_frames, gf_cfg->enable_auto_arf) &&
3773 (gf_cfg->gf_min_pyr_height == 0);
3777 static INLINE
int get_num_blocks(
const int frame_length,
const int mb_length) {
3778 return (frame_length + mb_length - 1) / mb_length;
3782 static INLINE
int is_stat_generation_stage(
const AV1_COMP *
const cpi) {
3789 static INLINE
int is_stat_consumption_stage_twopass(
const AV1_COMP *
const cpi) {
3794 static INLINE
int is_stat_consumption_stage(
const AV1_COMP *
const cpi) {
3795 return (is_stat_consumption_stage_twopass(cpi) ||
3801 static AOM_INLINE
bool av1_need_dv_costs(
const AV1_COMP *
const cpi) {
3802 return !cpi->
sf.
rt_sf.use_nonrd_pick_mode &&
3803 av1_allow_intrabc(&cpi->
common) && !is_stat_generation_stage(cpi);
3823 static INLINE
int is_one_pass_rt_params(
const AV1_COMP *cpi) {
3825 cpi->
oxcf.gf_cfg.lag_in_frames == 0;
3828 static INLINE
int use_one_pass_rt_reference_structure(
const AV1_COMP *cpi) {
3834 static INLINE
int get_stats_buf_size(
int num_lap_buffer,
int num_lag_buffer) {
3836 return (num_lap_buffer > 0 ? num_lap_buffer + 1 : num_lag_buffer);
3842 MV_REFERENCE_FRAME ref0,
3843 MV_REFERENCE_FRAME ref1) {
3845 get_ref_scale_factors_const(cm, ref0 >= LAST_FRAME ? ref0 : 1);
3847 get_ref_scale_factors_const(cm, ref1 >= LAST_FRAME ? ref1 : 1);
3850 static INLINE
int get_chessboard_index(
int frame_index) {
3851 return frame_index & 0x1;
3854 static INLINE
const int *cond_cost_list_const(
const struct AV1_COMP *cpi,
3855 const int *cost_list) {
3856 const int use_cost_list = cpi->
sf.
mv_sf.subpel_search_method != SUBPEL_TREE &&
3857 cpi->
sf.
mv_sf.use_fullpel_costlist;
3858 return use_cost_list ? cost_list : NULL;
3861 static INLINE
int *cond_cost_list(
const struct AV1_COMP *cpi,
int *cost_list) {
3862 const int use_cost_list = cpi->
sf.
mv_sf.subpel_search_method != SUBPEL_TREE &&
3863 cpi->
sf.
mv_sf.use_fullpel_costlist;
3864 return use_cost_list ? cost_list : NULL;
3868 double av1_get_compression_ratio(
const AV1_COMMON *
const cm,
3869 size_t encoded_frame_size);
3871 void av1_new_framerate(
AV1_COMP *cpi,
double framerate);
3873 void av1_setup_frame_size(
AV1_COMP *cpi);
3875 #define LAYER_IDS_TO_IDX(sl, tl, num_tl) ((sl) * (num_tl) + (tl))
3878 static INLINE
int av1_resize_scaled(
const AV1_COMMON *cm) {
3883 static INLINE
int av1_frame_scaled(
const AV1_COMMON *cm) {
3884 return !av1_superres_scaled(cm) && av1_resize_scaled(cm);
3890 static INLINE
int encode_show_existing_frame(
const AV1_COMMON *cm) {
3897 static INLINE
int get_mi_ext_idx(
const int mi_row,
const int mi_col,
3898 const BLOCK_SIZE mi_alloc_bsize,
3899 const int mbmi_ext_stride) {
3900 const int mi_ext_size_1d = mi_size_wide[mi_alloc_bsize];
3901 const int mi_ext_row = mi_row / mi_ext_size_1d;
3902 const int mi_ext_col = mi_col / mi_ext_size_1d;
3903 return mi_ext_row * mbmi_ext_stride + mi_ext_col;
3908 static INLINE
void set_mode_info_offsets(
3912 set_mi_offsets(mi_params, xd, mi_row, mi_col);
3913 const int ext_idx = get_mi_ext_idx(mi_row, mi_col, mi_params->
mi_alloc_bsize,
3921 static INLINE BLOCK_SIZE find_partition_size(BLOCK_SIZE bsize,
int rows_left,
3922 int cols_left,
int *bh,
int *bw) {
3923 int int_size = (int)bsize;
3924 if (rows_left <= 0 || cols_left <= 0) {
3925 return AOMMIN(bsize, BLOCK_8X8);
3927 for (; int_size > 0; int_size -= 3) {
3928 *bh = mi_size_high[int_size];
3929 *bw = mi_size_wide[int_size];
3930 if ((*bh <= rows_left) && (*bw <= cols_left)) {
3935 return (BLOCK_SIZE)int_size;
3938 static const uint8_t av1_ref_frame_flag_list[REF_FRAMES] = { 0,
3949 static const MV_REFERENCE_FRAME disable_order[] = {
3956 static const MV_REFERENCE_FRAME
3957 ref_frame_priority_order[INTER_REFS_PER_FRAME] = {
3958 LAST_FRAME, ALTREF_FRAME, BWDREF_FRAME, GOLDEN_FRAME,
3959 ALTREF2_FRAME, LAST2_FRAME, LAST3_FRAME,
3962 static INLINE
int get_ref_frame_flags(
const SPEED_FEATURES *
const sf,
3963 const int use_one_pass_rt_params,
3965 const int ext_ref_frame_flags) {
3970 int flags = ext_ref_frame_flags;
3972 for (
int i = 1; i < INTER_REFS_PER_FRAME; ++i) {
3978 (use_one_pass_rt_params && ref_frame_priority_order[i] == GOLDEN_FRAME)
3979 ? (1 + sf->
rt_sf.use_nonrd_altref_frame)
3981 for (
int j = 0; j < index; ++j) {
3985 if (this_ref == ref_frames[j] &&
3986 (flags & (1 << (ref_frame_priority_order[j] - 1)))) {
3987 flags &= ~(1 << (ref_frame_priority_order[i] - 1));
4006 #define MAX_GFUBOOST_FACTOR 10.0
4007 #define MIN_GFUBOOST_FACTOR 4.0
4009 static INLINE
int is_frame_tpl_eligible(
const GF_GROUP *
const gf_group,
4011 const FRAME_UPDATE_TYPE update_type = gf_group->update_type[index];
4012 return update_type == ARF_UPDATE || update_type == GF_UPDATE ||
4013 update_type == KF_UPDATE;
4016 static INLINE
int is_frame_eligible_for_ref_pruning(
const GF_GROUP *gf_group,
4017 int selective_ref_frame,
4018 int prune_ref_frames,
4020 return (selective_ref_frame > 0) && (prune_ref_frames > 0) &&
4021 !is_frame_tpl_eligible(gf_group, gf_index);
4025 static INLINE FRAME_UPDATE_TYPE get_frame_update_type(
const GF_GROUP *gf_group,
4026 int gf_frame_index) {
4027 return gf_group->update_type[gf_frame_index];
4030 static INLINE
int av1_pixels_to_mi(
int pixels) {
4031 return ALIGN_POWER_OF_TWO(pixels, 3) >> MI_SIZE_LOG2;
4034 static AOM_INLINE
int is_psnr_calc_enabled(
const AV1_COMP *cpi) {
4041 static INLINE
int is_frame_resize_pending(
const AV1_COMP *
const cpi) {
4044 return (resize_pending_params->
width && resize_pending_params->
height &&
4050 static INLINE
int is_restoration_used(
const AV1_COMMON *
const cm) {
4055 static INLINE
int is_inter_tx_size_search_level_one(
4056 const TX_SPEED_FEATURES *tx_sf) {
4057 return (tx_sf->inter_tx_size_search_init_depth_rect >= 1 &&
4058 tx_sf->inter_tx_size_search_init_depth_sqr >= 1);
4061 #if CONFIG_AV1_TEMPORAL_DENOISING
4062 static INLINE
int denoise_svc(
const struct AV1_COMP *
const cpi) {
4065 cpi->
svc.spatial_layer_id >= cpi->
svc.first_layer_denoise));
4069 #if CONFIG_COLLECT_PARTITION_STATS == 2
4070 static INLINE
void av1_print_fr_partition_timing_stats(
4071 const FramePartitionTimingStats *part_stats,
const char *filename) {
4072 FILE *f = fopen(filename,
"w");
4077 fprintf(f,
"bsize,redo,");
4078 for (
int part = 0; part < EXT_PARTITION_TYPES; part++) {
4079 fprintf(f,
"decision_%d,", part);
4081 for (
int part = 0; part < EXT_PARTITION_TYPES; part++) {
4082 fprintf(f,
"attempt_%d,", part);
4084 for (
int part = 0; part < EXT_PARTITION_TYPES; part++) {
4085 fprintf(f,
"time_%d,", part);
4089 static const int bsizes[6] = { 128, 64, 32, 16, 8, 4 };
4091 for (
int bsize_idx = 0; bsize_idx < 6; bsize_idx++) {
4092 fprintf(f,
"%d,%d,", bsizes[bsize_idx], part_stats->partition_redo);
4093 for (
int part = 0; part < EXT_PARTITION_TYPES; part++) {
4094 fprintf(f,
"%d,", part_stats->partition_decisions[bsize_idx][part]);
4096 for (
int part = 0; part < EXT_PARTITION_TYPES; part++) {
4097 fprintf(f,
"%d,", part_stats->partition_attempts[bsize_idx][part]);
4099 for (
int part = 0; part < EXT_PARTITION_TYPES; part++) {
4100 fprintf(f,
"%ld,", part_stats->partition_times[bsize_idx][part]);
4108 #if CONFIG_COLLECT_PARTITION_STATS
4109 static INLINE
int av1_get_bsize_idx_for_part_stats(BLOCK_SIZE bsize) {
4110 assert(bsize == BLOCK_128X128 || bsize == BLOCK_64X64 ||
4111 bsize == BLOCK_32X32 || bsize == BLOCK_16X16 || bsize == BLOCK_8X8 ||
4112 bsize == BLOCK_4X4);
4114 case BLOCK_128X128:
return 0;
4115 case BLOCK_64X64:
return 1;
4116 case BLOCK_32X32:
return 2;
4117 case BLOCK_16X16:
return 3;
4118 case BLOCK_8X8:
return 4;
4119 case BLOCK_4X4:
return 5;
4120 default: assert(0 &&
"Invalid bsize for partition_stats.");
return -1;
4125 #if CONFIG_COLLECT_COMPONENT_TIMING
4126 static INLINE
void start_timing(
AV1_COMP *cpi,
int component) {
4127 aom_usec_timer_start(&cpi->component_timer[component]);
4129 static INLINE
void end_timing(
AV1_COMP *cpi,
int component) {
4130 aom_usec_timer_mark(&cpi->component_timer[component]);
4131 cpi->frame_component_time[component] +=
4132 aom_usec_timer_elapsed(&cpi->component_timer[component]);
4134 static INLINE
char const *get_frame_type_enum(
int type) {
4136 case 0:
return "KEY_FRAME";
4137 case 1:
return "INTER_FRAME";
4138 case 2:
return "INTRA_ONLY_FRAME";
4139 case 3:
return "S_FRAME";
enum aom_chroma_sample_position aom_chroma_sample_position_t
List of chroma sample positions.
enum aom_transfer_characteristics aom_transfer_characteristics_t
List of supported transfer functions.
enum aom_color_range aom_color_range_t
List of supported color range.
enum aom_color_primaries aom_color_primaries_t
List of supported color primaries.
enum aom_matrix_coefficients aom_matrix_coefficients_t
List of supported matrix coefficients.
Provides definitions for using AOM or AV1 encoder algorithm within the aom Codec Interface.
struct AV1_COMP AV1_COMP
Top level encoder structure.
COST_UPDATE_TYPE
This enum controls how often the entropy costs should be updated.
Definition: encoder.h:228
@ COST_UPD_SBROW
Definition: encoder.h:230
@ COST_UPD_TILE
Definition: encoder.h:231
@ COST_UPD_OFF
Definition: encoder.h:232
@ NUM_COST_UPDATE_TYPES
Definition: encoder.h:233
@ COST_UPD_SB
Definition: encoder.h:229
struct EncodeFrameParams EncodeFrameParams
contains per-frame encoding parameters decided upon by av1_encode_strategy() and passed down to av1_e...
struct PrimaryMultiThreadInfo PrimaryMultiThreadInfo
Primary Encoder parameters related to multi-threading.
struct EncodeFrameInput EncodeFrameInput
Input frames and last input frame.
struct MultiThreadInfo MultiThreadInfo
Encoder parameters related to multi-threading.
struct AV1_COMP_DATA AV1_COMP_DATA
Structure to hold data corresponding to an encoded frame.
LOOPFILTER_CONTROL
This enum controls to which frames loopfilter is applied.
Definition: encoder.h:239
@ LOOPFILTER_ALL
Definition: encoder.h:241
@ LOOPFILTER_SELECTIVELY
Definition: encoder.h:243
@ LOOPFILTER_REFERENCE
Definition: encoder.h:242
@ LOOPFILTER_NONE
Definition: encoder.h:240
#define NUM_RECODES_PER_FRAME
Max number of recodes used to track the frame probabilities.
Definition: encoder.h:1521
struct AV1_PRIMARY AV1_PRIMARY
Top level primary encoder structure.
struct inter_modes_info InterModesInfo
Struct used to hold inter mode data for fast tx search.
struct RestoreStateBuffers RestoreStateBuffers
Buffers to be backed up during parallel encode set to be restored later.
struct AV1EncoderConfig AV1EncoderConfig
Main encoder configuration data structure.
#define MAX_PARALLEL_FRAMES
Max number of frames that can be encoded in a parallel encode set.
Definition: encoder.h:1526
@ RESTORE_SWITCHABLE_TYPES
Definition: enums.h:602
aom_dist_metric
Distortion metric to use for RD optimization.
Definition: aomcx.h:1566
aom_tune_content
Definition: aomcx.h:1528
aom_tune_metric
Model tuning parameters.
Definition: aomcx.h:1547
enum aom_bit_depth aom_bit_depth_t
Bit depth for codecThis enumeration determines the bit depth of the codec.
enum aom_superblock_size aom_superblock_size_t
Superblock size selection.
aom_codec_err_t
Algorithm return codes.
Definition: aom_codec.h:155
aom_superres_mode
Frame super-resolution mode.
Definition: aom_encoder.h:206
aom_rc_mode
Rate control mode.
Definition: aom_encoder.h:184
aom_enc_pass
Multi-pass Encoding Pass.
Definition: aom_encoder.h:175
long aom_enc_frame_flags_t
Encoded Frame Flags.
Definition: aom_encoder.h:376
@ AOM_RC_ONE_PASS
Definition: aom_encoder.h:176
@ AOM_RC_SECOND_PASS
Definition: aom_encoder.h:178
@ AOM_RC_FIRST_PASS
Definition: aom_encoder.h:177
int av1_get_compressed_data(AV1_COMP *cpi, AV1_COMP_DATA *const cpi_data)
Encode a frame.
Definition: encoder.c:4419
int av1_receive_raw_frame(AV1_COMP *cpi, aom_enc_frame_flags_t frame_flags, YV12_BUFFER_CONFIG *sd, int64_t time_stamp, int64_t end_time_stamp)
Obtain the raw frame data.
Definition: encoder.c:3833
int av1_encode(AV1_COMP *const cpi, uint8_t *const dest, const EncodeFrameInput *const frame_input, const EncodeFrameParams *const frame_params, EncodeFrameResults *const frame_results)
Run 1-pass/2-pass encoding.
Definition: encoder.c:3735
static int has_no_stats_stage(const AV1_COMP *const cpi)
Check if the current stage has statistics.
Definition: encoder.h:3815
Describes look ahead buffer operations.
Top level common structure used by both encoder and decoder.
Definition: av1_common_int.h:750
int superres_upscaled_width
Definition: av1_common_int.h:799
int superres_upscaled_height
Definition: av1_common_int.h:800
SequenceHeader * seq_params
Definition: av1_common_int.h:976
int width
Definition: av1_common_int.h:775
CurrentFrame current_frame
Definition: av1_common_int.h:754
int show_existing_frame
Definition: av1_common_int.h:900
FeatureFlags features
Definition: av1_common_int.h:905
int show_frame
Definition: av1_common_int.h:885
RefCntBuffer * ref_frame_map[REF_FRAMES]
Definition: av1_common_int.h:878
CommonTileParams tiles
Definition: av1_common_int.h:992
int height
Definition: av1_common_int.h:776
int render_width
Definition: av1_common_int.h:786
int render_height
Definition: av1_common_int.h:787
Encoder data related to row-based multi-threading.
Definition: encoder.h:1467
pthread_mutex_t * mutex_
Definition: encoder.h:1500
int allocated_tile_cols
Definition: encoder.h:1475
int allocated_cols
Definition: encoder.h:1489
int allocated_tile_rows
Definition: encoder.h:1471
int allocated_rows
Definition: encoder.h:1482
Encoder parameters for synchronization of row based multi-threading.
Definition: encoder.h:1354
int rows
Definition: encoder.h:1387
int sync_range
Definition: encoder.h:1376
int intrabc_extra_top_right_sb_delay
Definition: encoder.h:1383
int next_mi_row
Definition: encoder.h:1391
pthread_mutex_t * mutex_
Definition: encoder.h:1360
pthread_cond_t * cond_
Definition: encoder.h:1361
int num_threads_working
Definition: encoder.h:1395
Main encoder configuration data structure.
Definition: encoder.h:909
RateControlCfg rc_cfg
Definition: encoder.h:931
KeyFrameCfg kf_cfg
Definition: encoder.h:926
enum aom_enc_pass pass
Definition: encoder.h:1034
AlgoCfg algo_cfg
Definition: encoder.h:921
aom_fixed_buf_t twopass_stats_in
Definition: encoder.h:948
Structure to hold data corresponding to an encoded frame.
Definition: encoder.h:2360
int64_t ts_frame_end
Definition: encoder.h:2389
int pop_lookahead
Definition: encoder.h:2404
int64_t ts_frame_start
Definition: encoder.h:2384
unsigned char * cx_data
Definition: encoder.h:2364
size_t cx_data_sz
Definition: encoder.h:2369
int flush
Definition: encoder.h:2394
int frame_display_order_hint
Definition: encoder.h:2409
unsigned int lib_flags
Definition: encoder.h:2379
size_t frame_size
Definition: encoder.h:2374
const aom_rational64_t * timestamp_ratio
Definition: encoder.h:2399
Top level encoder structure.
Definition: encoder.h:2700
int do_update_frame_probs_warp[10]
Definition: encoder.h:3054
uint8_t * consec_zero_mv
Definition: encoder.h:3250
int do_update_frame_probs_obmc[10]
Definition: encoder.h:3049
struct aom_denoise_and_model_t * denoise_and_model
Definition: encoder.h:3117
int skip_tpl_setup_stats
Definition: encoder.h:2808
int frames_since_last_update
Definition: encoder.h:3395
int * mb_delta_q
Definition: encoder.h:3338
int vaq_refresh
Definition: encoder.h:3024
FRAME_TYPE last_frame_type
Definition: encoder.h:3215
YV12_BUFFER_CONFIG * unscaled_source
Definition: encoder.h:2776
CYCLIC_REFRESH * cyclic_refresh
Definition: encoder.h:2943
InitialDimensions initial_dimensions
Definition: encoder.h:2991
RATE_CONTROL rc
Definition: encoder.h:2902
int deltaq_used
Definition: encoder.h:3173
ActiveMap active_map
Definition: encoder.h:2948
TuneVMAFInfo vmaf_info
Definition: encoder.h:3191
WeberStats * mb_weber_stats
Definition: encoder.h:3323
bool refresh_idx_available
Definition: encoder.h:3288
TokenInfo token_info
Definition: encoder.h:3019
int64_t ambient_err
Definition: encoder.h:2871
aom_film_grain_table_t * film_grain_table
Definition: encoder.h:3110
int ref_refresh_index
Definition: encoder.h:3282
size_t available_bs_size
Definition: encoder.h:3266
SPEED_FEATURES sf
Definition: encoder.h:2922
TRELLIS_OPT_TYPE optimize_seg_arr[8]
Definition: encoder.h:2754
ExtPartController ext_part_controller
Definition: encoder.h:3272
FILE * second_pass_log_stream
Definition: encoder.h:3372
double * ssim_rdmult_scaling_factors
Definition: encoder.h:3185
RD_OPT rd
Definition: encoder.h:2876
int num_tg
Definition: encoder.h:3220
WinnerModeParams winner_mode_params
Definition: encoder.h:2892
ExternalFlags ext_flags
Definition: encoder.h:2854
EncSegmentationInfo enc_seg
Definition: encoder.h:2938
MotionVectorSearchParams mv_search_params
Definition: encoder.h:2927
int use_screen_content_tools
Definition: encoder.h:3132
int do_update_frame_probs_interpfilter[10]
Definition: encoder.h:3059
CODING_CONTEXT coding_context
Definition: encoder.h:2882
TemporalFilterCtx tf_ctx
Definition: encoder.h:2823
TuneButteraugliInfo butteraugli_info
Definition: encoder.h:3198
ForceIntegerMVInfo force_intpel_info
Definition: encoder.h:2828
GlobalMotionInfo gm_info
Definition: encoder.h:2887
CoeffBufferPool coeff_buffer_pool
Definition: encoder.h:2738
FRAME_INDEX_SET frame_index_set
Definition: encoder.h:2986
int ref_frame_flags
Definition: encoder.h:2912
RefCntBuffer * scaled_ref_buf[INTER_REFS_PER_FRAME]
Definition: encoder.h:2834
unsigned char gf_frame_index
Definition: encoder.h:2953
AV1EncoderConfig oxcf
Definition: encoder.h:2748
AV1_COMMON common
Definition: encoder.h:2743
AV1LrStruct lr_ctxt
Definition: encoder.h:3105
bool do_frame_data_update
Definition: encoder.h:3311
int do_update_frame_probs_txtype[10]
Definition: encoder.h:3044
FRAME_COUNTS counts
Definition: encoder.h:2720
COMPRESSOR_STAGE compressor_stage
Definition: encoder.h:3209
int intrabc_used
Definition: encoder.h:3095
int num_frame_recode
Definition: encoder.h:3034
int rt_reduce_num_ref_buffers
Definition: encoder.h:2849
RefreshFrameInfo refresh_frame
Definition: encoder.h:2844
int prune_ref_frame_mask
Definition: encoder.h:3100
YV12_BUFFER_CONFIG * unscaled_last_source
Definition: encoder.h:2786
THIRD_PASS_DEC_CTX * third_pass_ctx
Definition: encoder.h:3367
int all_one_sided_refs
Definition: encoder.h:2933
MultiThreadInfo mt_info
Definition: encoder.h:3083
VarBasedPartitionInfo vbp_info
Definition: encoder.h:3029
YV12_BUFFER_CONFIG * last_source
Definition: encoder.h:2770
int existing_fb_idx_to_show
Definition: encoder.h:3090
YV12_BUFFER_CONFIG * unfiltered_source
Definition: encoder.h:2797
FRAME_INFO frame_info
Definition: encoder.h:2981
int frame_header_count
Definition: encoder.h:3168
int droppable
Definition: encoder.h:2976
RefCntBuffer * last_show_frame_buf
Definition: encoder.h:2839
aom_superres_mode superres_mode
Definition: encoder.h:3227
MBMIExtFrameBufferInfo mbmi_ext_info
Definition: encoder.h:2725
double new_framerate
Definition: encoder.h:3073
AV1_PRIMARY * ppi
Definition: encoder.h:2704
uint64_t * src_sad_blk_64x64
Definition: encoder.h:3377
int64_t norm_wiener_variance
Definition: encoder.h:3333
double * tpl_rdmult_scaling_factors
Definition: encoder.h:2818
int sb_counter
Definition: encoder.h:3261
TileDataEnc * tile_data
Definition: encoder.h:3010
int is_screen_content_type
Definition: encoder.h:3140
BLOCK_SIZE weber_bsize
Definition: encoder.h:3328
InterpSearchFlags interp_search_flags
Definition: encoder.h:3123
TimeStamps time_stamps
Definition: encoder.h:2897
int ref_idx_to_skip
Definition: encoder.h:3295
YV12_BUFFER_CONFIG orig_source
Definition: encoder.h:2803
FirstPassData firstpass_data
Definition: encoder.h:3232
double framerate
Definition: encoder.h:2907
int speed
Definition: encoder.h:2917
BLOCK_SIZE fp_block_size
Definition: encoder.h:3255
int use_ducky_encode
Definition: encoder.h:3383
YV12_BUFFER_CONFIG trial_frame_rst
Definition: encoder.h:2866
bool is_dropped_frame
Definition: encoder.h:3343
ThreadData td
Definition: encoder.h:2715
ResizePendingParams resize_pending_params
Definition: encoder.h:3004
YV12_BUFFER_CONFIG scaled_source
Definition: encoder.h:2781
int do_update_vbr_bits_off_target_fast
Definition: encoder.h:3078
YV12_BUFFER_CONFIG last_frame_uf
Definition: encoder.h:2860
EncQuantDequantParams enc_quant_dequant_params
Definition: encoder.h:2710
RefFrameDistanceInfo ref_frame_dist_info
Definition: encoder.h:3178
DuckyEncodeInfo ducky_encode_info
Definition: encoder.h:3389
int initial_mbs
Definition: encoder.h:2999
YV12_BUFFER_CONFIG scaled_last_source
Definition: encoder.h:2791
MV_STATS mv_stats
Definition: encoder.h:3278
FrameProbInfo frame_new_probs[10]
Definition: encoder.h:3039
YV12_BUFFER_CONFIG * source
Definition: encoder.h:2761
int allocated_tiles
Definition: encoder.h:3014
SVC svc
Definition: encoder.h:3204
CB_COEFF_BUFFER * coeff_buffer_base
Definition: encoder.h:2732
NOISE_ESTIMATE noise_estimate
Definition: encoder.h:3237
TWO_PASS_FRAME twopass_frame
Definition: encoder.h:3362
Top level primary encoder structure.
Definition: encoder.h:2415
int num_fp_contexts
Definition: encoder.h:2472
bool buffer_removal_time_present
Definition: encoder.h:2586
int valid_gm_model_found[FRAME_UPDATE_TYPES]
Definition: encoder.h:2694
struct aom_codec_pkt_list * output_pkt_list
Definition: encoder.h:2516
int filter_level[2]
Definition: encoder.h:2477
SequenceHeader seq_params
Definition: encoder.h:2576
MV_STATS mv_stats
Definition: encoder.h:2624
struct AV1_COMP * cpi
Definition: encoder.h:2493
AV1LevelParams level_params
Definition: encoder.h:2546
int internal_altref_allowed
Definition: encoder.h:2521
int b_calculate_psnr
Definition: encoder.h:2551
PrimaryMultiThreadInfo p_mt_info
Definition: encoder.h:2681
TEMPORAL_FILTER_INFO tf_info
Definition: encoder.h:2571
TWO_PASS twopass
Definition: encoder.h:2561
int frames_left
Definition: encoder.h:2556
int64_t ts_start_last_show_frame
Definition: encoder.h:2462
PRIMARY_RATE_CONTROL p_rc
Definition: encoder.h:2566
int lap_enabled
Definition: encoder.h:2541
FrameProbInfo frame_probs
Definition: encoder.h:2686
int show_existing_alt_ref
Definition: encoder.h:2526
int fb_of_context_type[REF_FRAMES]
Definition: encoder.h:2676
int use_svc
Definition: encoder.h:2581
double * tpl_sb_rdmult_scaling_factors
Definition: encoder.h:2614
int filter_level_v
Definition: encoder.h:2487
int filter_level_u
Definition: encoder.h:2482
struct AV1_COMP * cpi_lap
Definition: encoder.h:2498
struct AV1_COMP * parallel_cpi[4]
Definition: encoder.h:2419
int64_t ts_end_last_show_frame
Definition: encoder.h:2467
struct lookahead_ctx * lookahead
Definition: encoder.h:2503
GF_STATE gf_state
Definition: encoder.h:2536
aom_variance_fn_ptr_t fn_ptr[BLOCK_SIZES_ALL]
Definition: encoder.h:2608
GF_GROUP gf_group
Definition: encoder.h:2531
struct AV1_COMP_DATA parallel_frames_data[4 - 1]
Definition: encoder.h:2425
TplParams tpl_data
Definition: encoder.h:2619
unsigned int number_temporal_layers
Definition: encoder.h:2591
unsigned int number_spatial_layers
Definition: encoder.h:2596
int seq_params_locked
Definition: encoder.h:2510
struct aom_internal_error_info error
Definition: encoder.h:2601
Algorithm configuration parameters.
Definition: encoder.h:809
int disable_trellis_quant
Definition: encoder.h:825
int sharpness
Definition: encoder.h:816
int arnr_max_frames
Definition: encoder.h:830
bool enable_tpl_model
Definition: encoder.h:848
LOOPFILTER_CONTROL loopfilter_control
Definition: encoder.h:863
uint8_t cdf_update_mode
Definition: encoder.h:843
bool enable_overlay
Definition: encoder.h:854
int arnr_strength
Definition: encoder.h:835
Stores the transforms coefficients for the whole superblock.
Definition: block.h:177
The stucture of CYCLIC_REFRESH.
Definition: aq_cyclicrefresh.h:36
Parameters related to CDEF.
Definition: av1_common_int.h:196
Definition: encoder.h:2303
uint8_t * entropy_ctx
Definition: encoder.h:2315
tran_low_t * tcoeff
Definition: encoder.h:2307
uint16_t * eobs
Definition: encoder.h:2311
Params related to MB_MODE_INFO arrays and related info.
Definition: av1_common_int.h:501
BLOCK_SIZE mi_alloc_bsize
Definition: av1_common_int.h:550
int cols
Definition: av1_common_int.h:428
unsigned int large_scale
Definition: av1_common_int.h:488
Encoder flags for compound prediction modes.
Definition: encoder.h:395
bool enable_masked_comp
Definition: encoder.h:404
bool enable_diff_wtd_comp
Definition: encoder.h:412
bool enable_smooth_interintra
Definition: encoder.h:408
bool enable_interintra_wedge
Definition: encoder.h:420
bool enable_interinter_wedge
Definition: encoder.h:416
bool enable_dist_wtd_comp
Definition: encoder.h:399
Contains buffers used by av1_compound_type_rd()
Definition: block.h:337
Segmentation related information for the current frame.
Definition: encoder.h:2266
uint8_t * map
Definition: encoder.h:2272
bool has_lossless_segment
Definition: encoder.h:2278
contains per-frame encoding parameters decided upon by av1_encode_strategy() and passed down to av1_e...
Definition: encoder.h:3413
int error_resilient_mode
Definition: encoder.h:3417
int remapped_ref_idx[REF_FRAMES]
Definition: encoder.h:3448
int ref_frame_flags
Definition: encoder.h:3443
int speed
Definition: encoder.h:3459
FRAME_TYPE frame_type
Definition: encoder.h:3421
int show_frame
Definition: encoder.h:3431
RefreshFrameInfo refresh_frame
Definition: encoder.h:3454
Frame refresh flags set by the external interface.
Definition: encoder.h:2133
bool golden_frame
Definition: encoder.h:2135
bool bwd_ref_frame
Definition: encoder.h:2136
bool update_pending
Definition: encoder.h:2142
bool last_frame
Definition: encoder.h:2134
bool alt_ref_frame
Definition: encoder.h:2138
bool alt2_ref_frame
Definition: encoder.h:2137
Flags signalled by the external interface at frame level.
Definition: encoder.h:2148
bool use_primary_ref_none
Definition: encoder.h:2189
bool use_ref_frame_mvs
Definition: encoder.h:2173
ExtRefreshFrameFlagsInfo refresh_frame
Definition: encoder.h:2157
int ref_frame_flags
Definition: encoder.h:2152
bool use_error_resilient
Definition: encoder.h:2178
bool use_s_frame
Definition: encoder.h:2183
bool refresh_frame_context
Definition: encoder.h:2162
bool refresh_frame_context_pending
Definition: encoder.h:2168
Frame level features.
Definition: av1_common_int.h:358
bool allow_screen_content_tools
Definition: av1_common_int.h:375
bool allow_intrabc
Definition: av1_common_int.h:376
bool error_resilient_mode
Definition: av1_common_int.h:400
bool all_lossless
Definition: av1_common_int.h:389
Encoder info used for decision on forcing integer motion vectors.
Definition: encoder.h:1696
int rate_size
Definition: encoder.h:1709
int rate_index
Definition: encoder.h:1705
Encoder-side probabilities for pruning of various AV1 tools.
Definition: encoder.h:1082
Data related to the current GF/ARF group and the individual frames within the group.
Definition: firstpass.h:344
Parameters related to global motion search.
Definition: encoder.h:1905
bool search_done
Definition: encoder.h:1909
int segment_map_h
Definition: encoder.h:1943
int num_src_corners
Definition: encoder.h:1949
unsigned char * src_buffer
Definition: encoder.h:1921
int segment_map_w
Definition: encoder.h:1942
Initial frame dimensions.
Definition: encoder.h:1968
int height
Definition: encoder.h:1970
int width
Definition: encoder.h:1969
Flags related to interpolation filter search.
Definition: encoder.h:1976
int default_interp_skip_flags
Definition: encoder.h:1981
uint16_t interp_filter_search_mask
Definition: encoder.h:1985
Encoder flags for intra prediction.
Definition: encoder.h:298
bool enable_diagonal_intra
Definition: encoder.h:328
bool enable_smooth_intra
Definition: encoder.h:311
bool auto_intra_tools_off
Definition: encoder.h:347
bool enable_filter_intra
Definition: encoder.h:307
bool enable_directional_intra
Definition: encoder.h:323
bool enable_paeth_intra
Definition: encoder.h:315
bool enable_intra_edge_filter
Definition: encoder.h:302
bool enable_cfl_intra
Definition: encoder.h:319
bool enable_angle_delta
Definition: encoder.h:333
Encoder config related to the coding of key frames.
Definition: encoder.h:462
int key_freq_max
Definition: encoder.h:471
int sframe_mode
Definition: encoder.h:489
bool auto_key
Definition: encoder.h:494
bool enable_intrabc
Definition: encoder.h:514
int sframe_dist
Definition: encoder.h:482
bool enable_sframe
Definition: encoder.h:509
int enable_keyframe_filtering
Definition: encoder.h:476
int fwd_kf_dist
Definition: encoder.h:499
int key_freq_min
Definition: encoder.h:466
bool fwd_kf_enabled
Definition: encoder.h:504
Buffer to store mode information at mi_alloc_bsize (4x4 or 8x8) level.
Definition: encoder.h:1742
int alloc_size
Definition: encoder.h:1751
int stride
Definition: encoder.h:1755
MB_MODE_INFO_EXT_FRAME * frame_base
Definition: encoder.h:1747
Stores best extended mode information at frame level.
Definition: block.h:213
Stores the prediction/txfm mode of the current coding block.
Definition: blockd.h:222
Parameters for motion vector search process.
Definition: encoder.h:1991
int max_mv_magnitude
Definition: encoder.h:1997
fractional_mv_step_fp * find_fractional_mv_step
Definition: encoder.h:2011
int mv_step_param
Definition: encoder.h:2002
Encoder parameters related to multi-threading.
Definition: encoder.h:1599
RestoreStateBuffers restore_state_buf
Definition: encoder.h:1680
AV1CdefWorkerData * cdef_worker
Definition: encoder.h:1675
AV1LrSync lr_row_sync
Definition: encoder.h:1650
struct EncWorkerData * tile_thr_data
Definition: encoder.h:1619
AV1TplRowMultiThreadInfo tpl_row_mt
Definition: encoder.h:1640
AV1EncPackBSSync pack_bs_sync
Definition: encoder.h:1655
AV1EncRowMultiThreadInfo enc_row_mt
Definition: encoder.h:1635
AV1LfSync lf_row_sync
Definition: encoder.h:1645
AV1CdefSync cdef_sync
Definition: encoder.h:1670
int num_mod_workers[NUM_MT_MODULES]
Definition: encoder.h:1608
int num_workers
Definition: encoder.h:1603
AVxWorker * workers
Definition: encoder.h:1613
bool pack_bs_mt_enabled
Definition: encoder.h:1630
bool row_mt_enabled
Definition: encoder.h:1625
AV1TemporalFilterSync tf_sync
Definition: encoder.h:1665
AV1GlobalMotionSync gm_sync
Definition: encoder.h:1660
Contains buffers used to speed up rdopt for obmc.
Definition: block.h:300
Contains color maps used in palette mode.
Definition: block.h:325
Primary Rate Control parameters and status.
Definition: ratectrl.h:262
Encoder config for coding block partitioning.
Definition: encoder.h:270
bool enable_rect_partitions
Definition: encoder.h:274
bool enable_1to4_partitions
Definition: encoder.h:282
BLOCK_SIZE max_partition_size
Definition: encoder.h:292
bool enable_ab_partitions
Definition: encoder.h:278
BLOCK_SIZE min_partition_size
Definition: encoder.h:287
Primary Encoder parameters related to multi-threading.
Definition: encoder.h:1557
struct EncWorkerData * tile_thr_data
Definition: encoder.h:1577
AV1CdefWorkerData * cdef_worker
Definition: encoder.h:1582
int num_workers
Definition: encoder.h:1561
AVxWorker * workers
Definition: encoder.h:1571
AVxWorker * p_workers[4]
Definition: encoder.h:1588
int p_num_workers
Definition: encoder.h:1593
int num_mod_workers[NUM_MT_MODULES]
Definition: encoder.h:1566
Rate Control parameters and status.
Definition: ratectrl.h:134
Encoder rate control configuration parameters.
Definition: encoder.h:520
int worst_allowed_q
Definition: encoder.h:590
int over_shoot_pct
Definition: encoder.h:585
unsigned int max_intra_bitrate_pct
Definition: encoder.h:555
int drop_frames_water_mark
Definition: encoder.h:573
int vbrmax_section
Definition: encoder.h:621
int64_t maximum_buffer_size_ms
Definition: encoder.h:539
unsigned int vbr_corpus_complexity_lap
Definition: encoder.h:550
unsigned int min_cr
Definition: encoder.h:569
int vbrbias
Definition: encoder.h:611
unsigned int gf_cbr_boost_pct
Definition: encoder.h:564
int vbrmin_section
Definition: encoder.h:616
unsigned int max_inter_bitrate_pct
Definition: encoder.h:560
int64_t starting_buffer_level_ms
Definition: encoder.h:529
int best_allowed_q
Definition: encoder.h:595
int under_shoot_pct
Definition: encoder.h:579
int64_t target_bandwidth
Definition: encoder.h:544
int64_t optimal_buffer_level_ms
Definition: encoder.h:534
int cq_level
Definition: encoder.h:599
Refrence frame distance related variables.
Definition: encoder.h:2050
int8_t nearest_past_ref
Definition: encoder.h:2058
int8_t nearest_future_ref
Definition: encoder.h:2062
Refresh frame flags for different type of frames.
Definition: encoder.h:2029
bool bwd_ref_frame
Definition: encoder.h:2031
bool golden_frame
Definition: encoder.h:2030
bool alt_ref_frame
Definition: encoder.h:2032
Encoder config related to resize.
Definition: encoder.h:250
uint8_t resize_scale_denominator
Definition: encoder.h:259
uint8_t resize_kf_scale_denominator
Definition: encoder.h:264
RESIZE_MODE resize_mode
Definition: encoder.h:254
Desired dimensions for an externally triggered resize.
Definition: encoder.h:2042
int width
Definition: encoder.h:2043
int height
Definition: encoder.h:2044
Buffers to be backed up during parallel encode set to be restored later.
Definition: encoder.h:1532
int32_t * rst_tmpbuf
Definition: encoder.h:1546
RestorationLineBuffers * rlbs
Definition: encoder.h:1551
uint16_t * cdef_colbuf[3]
Definition: encoder.h:1541
uint16_t * cdef_srcbuf
Definition: encoder.h:1536
Top level speed vs quality trade off data struture.
Definition: speed_features.h:1606
MV_SPEED_FEATURES mv_sf
Definition: speed_features.h:1635
REAL_TIME_SPEED_FEATURES rt_sf
Definition: speed_features.h:1675
The stucture of SVC.
Definition: svc_layercontext.h:87
Encoder config related to frame super-resolution.
Definition: encoder.h:426
uint8_t superres_kf_scale_denominator
Definition: encoder.h:448
aom_superres_mode superres_mode
Definition: encoder.h:452
int superres_kf_qthresh
Definition: encoder.h:436
bool enable_superres
Definition: encoder.h:456
uint8_t superres_scale_denominator
Definition: encoder.h:442
int superres_qthresh
Definition: encoder.h:431
Temporal filter info for a gop.
Definition: temporal_filter.h:156
Frame level Two pass status and control data.
Definition: firstpass.h:463
Two pass status and control data.
Definition: firstpass.h:420
Parameters related to temporal filtering.
Definition: temporal_filter.h:93
Frame time stamps.
Definition: encoder.h:2284
int64_t prev_ts_start
Definition: encoder.h:2288
int64_t first_ts_start
Definition: encoder.h:2296
int64_t prev_ts_end
Definition: encoder.h:2292
Params related to temporal dependency model.
Definition: tpl_model.h:142
Encoder flags for transform sizes and types.
Definition: encoder.h:353
bool enable_tx64
Definition: encoder.h:357
bool use_inter_dct_only
Definition: encoder.h:380
bool enable_flip_idtx
Definition: encoder.h:361
bool use_intra_default_tx_only
Definition: encoder.h:385
bool use_intra_dct_only
Definition: encoder.h:375
bool enable_rect_tx
Definition: encoder.h:365
bool reduced_tx_type_set
Definition: encoder.h:370
bool enable_tx_size_search
Definition: encoder.h:389
Thresholds for variance based partitioning.
Definition: encoder.h:1333
int64_t threshold_minmax
Definition: encoder.h:1348
Parameters used for winner mode processing.
Definition: encoder.h:2080
Generic fixed size buffer structure.
Definition: aom_encoder.h:87
Struct used to hold inter mode data for fast tx search.
Definition: encoder.h:1238
RD_STATS rd_cost_arr[MAX_INTER_MODES]
Definition: encoder.h:1267
int64_t est_rd_arr[MAX_INTER_MODES]
Definition: encoder.h:1259
int64_t sse_arr[MAX_INTER_MODES]
Definition: encoder.h:1255
RD_STATS rd_cost_y_arr[MAX_INTER_MODES]
Definition: encoder.h:1271
RD_STATS rd_cost_uv_arr[MAX_INTER_MODES]
Definition: encoder.h:1275
MB_MODE_INFO mbmi_arr[MAX_INTER_MODES]
Definition: encoder.h:1247
RdIdxPair rd_idx_pair_arr[MAX_INTER_MODES]
Definition: encoder.h:1263
int mode_rate_arr[MAX_INTER_MODES]
Definition: encoder.h:1251
int num
Definition: encoder.h:1243
Encoder's parameters related to the current coding block.
Definition: block.h:848
MB_MODE_INFO_EXT_FRAME * mbmi_ext_frame
Finalized mbmi_ext for the whole frame.
Definition: block.h:880
Variables related to current coding block.
Definition: blockd.h:577
const struct scale_factors * block_ref_scale_factors[2]
Definition: blockd.h:694
YV12 frame buffer data structure.
Definition: yv12config.h:39