 |
AOMedia AV1 Codec
|
Go to the documentation of this file.
15 #ifndef AOM_AV1_ENCODER_INTRA_MODE_SEARCH_H_
16 #define AOM_AV1_ENCODER_INTRA_MODE_SEARCH_H_
107 BLOCK_SIZE bsize,
unsigned int ref_frame_cost,
108 const PICK_MODE_CONTEXT *ctx, RD_STATS *rd_stats_y,
109 int64_t best_rd,
int *mode_cost_y, int64_t *rd_y);
140 MACROBLOCK *x, BLOCK_SIZE bsize, RD_STATS *rd_stats,
141 const RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv, int64_t best_rd);
171 BLOCK_SIZE bsize,
unsigned int ref_frame_cost,
172 PICK_MODE_CONTEXT *ctx, RD_STATS *this_rd_cost,
206 int *rate,
int *rate_tokenonly,
207 int64_t *distortion,
int *skippable,
208 BLOCK_SIZE bsize, int64_t best_rd,
209 PICK_MODE_CONTEXT *ctx);
241 int *rate,
int *rate_tokenonly,
242 int64_t *distortion,
int *skippable,
243 BLOCK_SIZE bsize, TX_SIZE max_tx_size);
248 int *val_count,
int *num_colors);
253 int cols,
int bit_depth,
int *val_count,
254 int *val_count_8bit,
int *num_color_bins,
261 memset(intra_search_state, 0,
sizeof(*intra_search_state));
269 #endif // AOM_AV1_ENCODER_INTRA_MODE_SEARCH_H_
void av1_rd_pick_palette_intra_sby(const struct AV1_COMP *cpi, struct macroblock *x, BLOCK_SIZE bsize, int dc_mode_cost, MB_MODE_INFO *best_mbmi, uint8_t *best_palette_color_map, int64_t *best_rd, int64_t *best_model_rd, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable, int *beat_best_rd, struct PICK_MODE_CONTEXT *ctx, uint8_t *best_blk_skip, uint8_t *tx_type_map)
Search for the best palette in the luma plane.
REAL_TIME_SPEED_FEATURES rt_sf
Definition: speed_features.h:1184
static int rd_pick_intra_angle_sbuv(const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int rate_overhead, int64_t best_rd, int *rate, RD_STATS *rd_stats)
Search for the best angle delta for chroma prediction.
Definition: intra_mode_search.c:299
bool enable_angle_delta
Definition: encoder.h:266
Declares top-level encoder structures and functions.
InterpFilter interp_filter
Definition: av1_common_int.h:383
int64_t av1_rd_pick_intra_sbuv_mode(const AV1_COMP *const cpi, MACROBLOCK *x, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable, BLOCK_SIZE bsize, TX_SIZE max_tx_size)
Perform intra-mode search on chroma channels.
Definition: intra_mode_search.c:558
int y_dc_delta_q
Definition: av1_common_int.h:592
static int intra_mode_info_cost_y(const AV1_COMP *cpi, const MACROBLOCK *x, const MB_MODE_INFO *mbmi, BLOCK_SIZE bsize, int mode_cost)
Returns the rate cost for luma prediction mode info of intra blocks.
Definition: intra_mode_search_utils.h:275
Variables related to intra-mode search during inter frame coding.
Definition: intra_mode_search.h:31
uint8_t ref_mv_idx
Which ref_mv to use.
Definition: blockd.h:308
static int64_t rd_pick_intra_angle_sby(const AV1_COMP *const cpi, MACROBLOCK *x, int *rate, RD_STATS *rd_stats, BLOCK_SIZE bsize, int mode_cost, int64_t best_rd, int64_t *best_model_rd, int skip_model_rd_for_zero_deg)
Search for the best angle delta for luma prediction.
Definition: intra_mode_search.c:871
Holds the entropy costs for various modes sent to the bitstream.
Definition: block.h:583
uint8_t directional_mode_skip_mask[INTRA_MODES]
Whether a directional mode is pruned.
Definition: intra_mode_search.h:49
TX_SIZE tx_size
Transform size when fixed size txfm is used (e.g. intra modes).
Definition: blockd.h:284
int8_t angle_delta[PLANE_TYPES]
Directional mode delta: the angle is base angle + (angle_delta * step).
Definition: blockd.h:266
Declares functions used in palette search.
#define AOM_PLANE_Y
Definition: aom_image.h:199
uint16_t interp_filter_search_mask
Definition: encoder.h:1723
uint8_t blk_skip[MAX_MIB_SIZE *MAX_MIB_SIZE]
Whether to skip transform and quantization on a txfm block level.
Definition: block.h:531
int skip_uvs
Whether the uv txfm is skippable.
Definition: intra_mode_search.h:65
int_interpfilters interp_filters
Filter used in subpel interpolation.
Definition: blockd.h:242
Defines utility functions used in intra mode search.
static int intra_mode_info_cost_uv(const AV1_COMP *cpi, const MACROBLOCK *x, const MB_MODE_INFO *mbmi, BLOCK_SIZE bsize, int mode_cost)
Return the rate cost for chroma prediction mode info of intra blocks.
Definition: intra_mode_search_utils.h:340
MB_MODE_INFO * above_mbmi
Definition: blockd.h:643
FrameProbInfo frame_probs
Definition: encoder.h:2496
FILTER_INTRA_MODE_INFO filter_intra_mode_info
The type of filter intra mode used (if applicable).
Definition: blockd.h:268
#define AOM_PLANE_U
Definition: aom_image.h:200
int mi_col
Definition: blockd.h:574
PREDICTION_MODE best_intra_mode
The best luma intra-mode found so far.
Definition: intra_mode_search.h:35
SPEED_FEATURES sf
Definition: encoder.h:2314
int default_interp_skip_flags
Definition: encoder.h:1719
unsigned char gf_frame_index
Definition: encoder.h:2362
CFL_CTX cfl
Definition: blockd.h:892
Encoder flags for intra prediction.
Definition: encoder.h:236
uint8_t color_index_map[MAX_SB_SQUARE]
The color map needed to reconstruct palette mode.
Definition: block.h:94
bool is_chroma_ref
Definition: blockd.h:599
WinnerModeStats * winner_mode_stats
Tracks the winner modes in the current coding block.
Definition: block.h:1117
static void init_intra_mode_search_state(IntraModeSearchState *intra_search_state)
Initializes the IntraModeSearchState struct.
Definition: intra_mode_search.h:259
bool allow_screen_content_tools
Definition: av1_common_int.h:351
int rdmult
Rate-distortion multiplier.
Definition: block.h:951
MB_MODE_INFO * left_mbmi
Definition: blockd.h:638
GF_GROUP gf_group
Definition: encoder.h:2357
Top level encoder structure.
Definition: encoder.h:2095
int dir_mode_skip_mask_ready
Whether directional_mode_skip_mask is valid for pruning.
Definition: intra_mode_search.h:53
uint8_t compound_idx
Indicates whether dist_wtd_comp(0) is used or not (0).
Definition: blockd.h:316
InterpSearchFlags interp_search_flags
Definition: encoder.h:2541
PALETTE_BUFFER * palette_buffer
Buffer to store the best palette map.
Definition: block.h:907
static int model_intra_yrd_and_prune(const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int64_t *best_model_rd)
Estimate the luma rdcost of a given intra mode and try to prune it.
Definition: intra_mode_search_utils.h:463
PALETTE_MODE_INFO palette_mode_info
Stores the size and colors of palette mode.
Definition: blockd.h:274
#define MAX_WINNER_MODE_COUNT_INTRA
Number of intra winner modes kept.
Definition: block.h:40
int64_t dist_uvs
Distortion of the uv_mode's recon.
Definition: intra_mode_search.h:64
AV1_COMMON common
Definition: encoder.h:2138
MV_REFERENCE_FRAME ref_frame[2]
The reference frames for the MV.
Definition: blockd.h:240
UV_PREDICTION_MODE uv_mode
The UV mode when intra is used.
Definition: blockd.h:228
INTERINTER_COMPOUND_DATA interinter_comp
Struct that stores the data used in interinter compound mode.
Definition: blockd.h:257
static int rd_pick_filter_intra_sby(const AV1_COMP *const cpi, MACROBLOCK *x, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable, BLOCK_SIZE bsize, int mode_cost, int64_t *best_rd, int64_t *best_model_rd, PICK_MODE_CONTEXT *ctx)
Search for the best filter_intra mode when coding intra frame.
Definition: intra_mode_search.c:124
static int64_t calc_rd_given_intra_angle(const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int mode_cost, int64_t best_rd_in, int8_t angle_delta, int max_angle_delta, int *rate, RD_STATS *rd_stats, int *best_angle_delta, TX_SIZE *best_tx_size, int64_t *best_rd, int64_t *best_model_rd, uint8_t *best_tx_type_map, uint8_t *best_blk_skip, int skip_model_rd)
Calculate the rdcost of a given luma intra angle.
Definition: intra_mode_search.c:73
static int intra_block_yrd(const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, const int *bmode_costs, int64_t *best_rd, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable, MB_MODE_INFO *best_mbmi, PICK_MODE_CONTEXT *ctx)
Get the intra prediction by searching through tx_type and tx_size.
Definition: intra_mode_search.c:822
int av1_search_palette_mode(IntraModeSearchState *intra_search_state, const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, unsigned int ref_frame_cost, PICK_MODE_CONTEXT *ctx, RD_STATS *this_rd_cost, int64_t best_rd)
Evaluate luma palette mode for inter frames.
Definition: intra_mode_search.c:718
int use_mb_mode_cache
Whether to reuse the mode stored in mb_mode_cache.
Definition: block.h:1172
bool enable_smooth_intra
Definition: encoder.h:249
MB_MODE_INFO mbmi
The mbmi used to reconstruct the winner mode.
Definition: block.h:84
int8_t uv_angle_delta
Angle delta if mode_uv directional.
Definition: intra_mode_search.h:68
WINNER_MODE_SPEED_FEATURES winner_mode_sf
Definition: speed_features.h:1174
Top level speed vs quality trade off data struture.
Definition: speed_features.h:1120
int64_t av1_rd_pick_intra_sby_mode(const AV1_COMP *const cpi, MACROBLOCK *x, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable, BLOCK_SIZE bsize, int64_t best_rd, PICK_MODE_CONTEXT *ctx)
Perform intra-mode search on luma channels for intra frames.
Definition: intra_mode_search.c:1153
int mbmode_cost[4][INTRA_MODES]
Luma mode cost for inter frame.
Definition: block.h:597
static int cfl_rd_pick_alpha(MACROBLOCK *const x, const AV1_COMP *const cpi, TX_SIZE tx_size, int64_t ref_best_rd, int cfl_search_range, int *token_rate, uint8_t *best_cfl_alpha_idx, int8_t *best_cfl_alpha_signs)
Pick the optimal parameters for Chroma to Luma (CFL) compoenent.
Definition: intra_mode_search.c:485
void av1_count_colors_highbd(const uint8_t *src8, int stride, int rows, int cols, int bit_depth, int *val_count, int *val_count_8bit, int *num_color_bins, int *num_colors)
See av1_count_colors(), but for highbd.
Definition: intra_mode_search.c:219
int rate_uv_intra
Total rate to transmit uv_mode.
Definition: intra_mode_search.h:62
BLOCK_SIZE bsize
The block size of the current coding block.
Definition: blockd.h:222
PALETTE_MODE_INFO pmi_uv
Color map if mode_uv is palette.
Definition: intra_mode_search.h:67
int switchable_interp_probs[FRAME_UPDATE_TYPES][((SWITCHABLE_FILTERS+1) *4)][SWITCHABLE_FILTERS]
Definition: encoder.h:990
CommonQuantParams quant_params
Definition: av1_common_int.h:899
int skip_intra_modes
Whether to terminate all intra mode search.
Definition: intra_mode_search.h:45
PREDICTION_MODE mode
The prediction mode used.
Definition: blockd.h:226
int_mv mv[2]
The motion vectors used by the current inter mode.
Definition: blockd.h:238
int base_qindex
Definition: av1_common_int.h:586
Top level common structure used by both encoder and decoder.
Definition: av1_common_int.h:723
int angle_delta_cost[DIRECTIONAL_MODES][2 *MAX_ANGLE_DELTA+1]
angle_delta_cost
Definition: block.h:607
INTRA_MODE_SPEED_FEATURES intra_sf
Definition: speed_features.h:1159
int rate_uv_tokenonly
Rate transmit txfm tokens.
Definition: intra_mode_search.h:63
int lossless[8]
Definition: blockd.h:815
int av1_search_intra_uv_modes_in_interframe(IntraModeSearchState *intra_search_state, const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, RD_STATS *rd_stats, const RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv, int64_t best_rd)
Search through all chroma intra-modes for inter frames.
Definition: intra_mode_search.c:1093
TxfmSearchInfo txfm_search_info
Results of the txfm searches that have been done.
Definition: block.h:1213
bool enable_paeth_intra
Definition: encoder.h:253
unsigned int pred_sse[REF_FRAMES]
SSE of the current predictor.
Definition: block.h:1230
int y_mode_costs[INTRA_MODES][INTRA_MODES][INTRA_MODES]
Luma mode cost for intra frame.
Definition: block.h:599
int8_t skip_txfm
Whether to skip transforming and sending.
Definition: blockd.h:282
UV_PREDICTION_MODE mode_uv
The best uv mode.
Definition: intra_mode_search.h:66
uint8_t comp_group_idx
Indicates if masked compound is used(1) or not (0).
Definition: blockd.h:314
#define AOM_PLANE_V
Definition: aom_image.h:201
const MB_MODE_INFO * mb_mode_cache
The mode to reuse during av1_rd_pick_intra_mode_sb and av1_rd_pick_inter_mode.
Definition: block.h:1175
int mi_row
Definition: blockd.h:573
int64_t av1_interpolation_filter_search(MACROBLOCK *const x, const AV1_COMP *const cpi, const TileDataEnc *tile_data, BLOCK_SIZE bsize, const BUFFER_SET *const tmp_dst, const BUFFER_SET *const orig_dst, int64_t *const rd, int *const switchable_rate, int *skip_build_pred, HandleInterModeArgs *args, int64_t ref_best_rd)
AV1 interpolation filter search.
Definition: interp_search.c:648
Stores the prediction/txfm mode of the current coding block.
Definition: blockd.h:216
Variables related to current coding block.
Definition: blockd.h:568
uint8_t best_palette_color_map[MAX_PALETTE_SQUARE]
The best color map found.
Definition: block.h:362
MACROBLOCKD e_mbd
Decoder's view of current coding block.
Definition: block.h:864
int av1_handle_intra_y_mode(IntraModeSearchState *intra_search_state, const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, unsigned int ref_frame_cost, const PICK_MODE_CONTEXT *ctx, RD_STATS *rd_stats_y, int64_t best_rd, int *mode_cost_y, int64_t *rd_y)
Evaluate a given luma intra-mode for inter frames.
Definition: intra_mode_search.c:1005
int winner_mode_count
Tracks how many winner modes there are.
Definition: block.h:1119
int8_t cfl_alpha_signs
Chroma from Luma: Joint sign of alpha Cb and alpha Cr.
Definition: blockd.h:270
uint8_t segment_id
The segment id.
Definition: blockd.h:304
uint8_t cfl_alpha_idx
Chroma from Luma: Index of the alpha Cb and alpha Cr combination.
Definition: blockd.h:272
AV1EncoderConfig oxcf
Definition: encoder.h:2143
SequenceHeader seq_params
Definition: av1_common_int.h:953
bool enable_cfl_intra
Definition: encoder.h:257
ModeCosts mode_costs
The rate needed to signal a mode to the bitstream.
Definition: block.h:959
struct macroblockd_plane plane[3]
Definition: blockd.h:604
static void handle_filter_intra_mode(const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, const PICK_MODE_CONTEXT *ctx, RD_STATS *rd_stats_y, int mode_cost, int64_t best_rd, int64_t best_rd_so_far)
Search for the best filter_intra mode when coding inter frame.
Definition: intra_mode_search.c:945
INTERP_FILTER_SPEED_FEATURES interp_sf
Definition: speed_features.h:1154
void av1_rd_pick_palette_intra_sbuv(const struct AV1_COMP *cpi, struct macroblock *x, int dc_mode_cost, uint8_t *best_palette_color_map, MB_MODE_INFO *const best_mbmi, int64_t *best_rd, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable)
Search for the best palette in the chroma plane.
int cfl_cost[CFL_JOINT_SIGNS][CFL_PRED_PLANES][CFL_ALPHABET_SIZE]
Rate rate associated with each alpha codeword.
Definition: block.h:610
Declares high level functions to search through intra modes.
FeatureFlags features
Definition: av1_common_int.h:882
CurrentFrame current_frame
Definition: av1_common_int.h:727
TRELLIS_OPT_TYPE optimize_seg_arr[8]
Definition: encoder.h:2154
void av1_count_colors(const uint8_t *src, int stride, int rows, int cols, int *val_count, int *num_colors)
Return the number of colors in src. Used by palette mode.
Definition: intra_mode_search.c:201
int recalc_luma_mc_data
Whether to recompute the luma prediction.
Definition: block.h:1163
int intra_uv_mode_cost[CFL_ALLOWED_TYPES][INTRA_MODES][UV_INTRA_MODES]
Chroma mode cost.
Definition: block.h:601
Flags related to interpolation filter search.
Definition: encoder.h:1714
int switchable_interp_costs[((SWITCHABLE_FILTERS+1) *4)][SWITCHABLE_FILTERS]
switchable_interp_costs
Definition: block.h:717
int filter_intra_cost[BLOCK_SIZES_ALL][2]
filter_intra_cost
Definition: block.h:603
struct IntraModeSearchState IntraModeSearchState
Variables related to intra-mode search during inter frame coding.
Encoder's parameters related to the current coding block.
Definition: block.h:846
uint8_t * tx_type_map
Definition: blockd.h:664
MB_MODE_INFO ** mi
Definition: blockd.h:615
int skip_txfm_cost[SKIP_CONTEXTS][2]
skip_txfm_cost
Definition: block.h:725