 |
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_
110 BLOCK_SIZE bsize,
unsigned int ref_frame_cost,
111 const PICK_MODE_CONTEXT *ctx, RD_STATS *rd_stats_y,
112 int64_t best_rd,
int *mode_cost_y, int64_t *rd_y,
113 int64_t *best_model_rd,
114 int64_t top_intra_model_rd[]);
145 MACROBLOCK *x, BLOCK_SIZE bsize, RD_STATS *rd_stats,
146 const RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv, int64_t best_rd);
176 BLOCK_SIZE bsize,
unsigned int ref_frame_cost,
177 PICK_MODE_CONTEXT *ctx, RD_STATS *this_rd_cost,
211 int *rate,
int *rate_tokenonly,
212 int64_t *distortion,
int *skippable,
213 BLOCK_SIZE bsize, int64_t best_rd,
214 PICK_MODE_CONTEXT *ctx);
246 int *rate,
int *rate_tokenonly,
247 int64_t *distortion,
int *skippable,
248 BLOCK_SIZE bsize, TX_SIZE max_tx_size);
253 int *val_count,
int *num_colors);
258 int cols,
int bit_depth,
int *val_count,
259 int *val_count_8bit,
int *num_color_bins,
266 memset(intra_search_state, 0,
sizeof(*intra_search_state));
294 int64_t top_intra_model_rd[],
int max_model_cnt_allowed,
295 int model_rd_index_for_pruning);
301 #endif // AOM_AV1_ENCODER_INTRA_MODE_SEARCH_H_
REAL_TIME_SPEED_FEATURES rt_sf
Definition: speed_features.h:1457
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:434
bool enable_angle_delta
Definition: encoder.h:330
FrameProbInfo frame_probs
Definition: encoder.h:2618
Declares top-level encoder structures and functions.
bool enable_diagonal_intra
Definition: encoder.h:325
InterpFilter interp_filter
Definition: av1_common_int.h:411
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:686
int y_dc_delta_q
Definition: av1_common_int.h:624
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:467
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:314
Holds the entropy costs for various modes sent to the bitstream.
Definition: block.h:507
uint8_t directional_mode_skip_mask[INTRA_MODES]
Whether a directional mode is pruned.
Definition: intra_mode_search.h:49
struct macroblock_plane plane[3]
Each of the encoding plane.
Definition: block.h:788
TX_SIZE tx_size
Transform size when fixed size txfm is used (e.g. intra modes).
Definition: blockd.h:290
int8_t angle_delta[PLANE_TYPES]
Directional mode delta: the angle is base angle + (angle_delta * step).
Definition: blockd.h:272
Declares functions used in palette search.
#define AOM_PLANE_Y
Definition: aom_image.h:199
uint16_t interp_filter_search_mask
Definition: encoder.h:1931
uint8_t blk_skip[MAX_MIB_SIZE *MAX_MIB_SIZE]
Whether to skip transform and quantization on a txfm block level.
Definition: block.h:465
int skip_uvs
Whether the uv txfm is skippable.
Definition: intra_mode_search.h:65
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, RD_STATS *best_rd_stats, uint8_t *best_cfl_alpha_idx, int8_t *best_cfl_alpha_signs)
Pick the optimal parameters for Chroma to Luma (CFL) component.
Definition: intra_mode_search.c:629
int_interpfilters interp_filters
Filter used in subpel interpolation.
Definition: blockd.h:248
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:532
MB_MODE_INFO * above_mbmi
Definition: blockd.h:652
FILTER_INTRA_MODE_INFO filter_intra_mode_info
The type of filter intra mode used (if applicable).
Definition: blockd.h:274
#define AOM_PLANE_U
Definition: aom_image.h:200
int mi_col
Definition: blockd.h:583
int mb_to_bottom_edge
Definition: blockd.h:687
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:2833
int default_interp_skip_flags
Definition: encoder.h:1927
unsigned char gf_frame_index
Definition: encoder.h:2864
CFL_CTX cfl
Definition: blockd.h:901
int prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, int64_t top_intra_model_rd[], int max_model_cnt_allowed, int model_rd_index_for_pruning)
prune luma intra mode based on the model rd.
Definition: intra_mode_search.c:371
bool enable_directional_intra
Definition: encoder.h:320
Encoder flags for intra prediction.
Definition: encoder.h:295
GF_GROUP gf_group
Definition: encoder.h:2453
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:608
WinnerModeStats * winner_mode_stats
Tracks the winner modes in the current coding block.
Definition: block.h:1053
bool up_available
Definition: blockd.h:629
static void init_intra_mode_search_state(IntraModeSearchState *intra_search_state)
Initializes the IntraModeSearchState struct.
Definition: intra_mode_search.h:264
bool allow_screen_content_tools
Definition: av1_common_int.h:379
int rdmult
Rate-distortion multiplier.
Definition: block.h:883
MB_MODE_INFO * left_mbmi
Definition: blockd.h:647
Top level encoder structure.
Definition: encoder.h:2632
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:322
int qindex
Quantization index for the current partition block.
Definition: block.h:866
InterpSearchFlags interp_search_flags
Definition: encoder.h:3039
int mb_to_right_edge
Definition: blockd.h:685
PALETTE_BUFFER * palette_buffer
Buffer to store the best palette map.
Definition: block.h:839
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:628
PALETTE_MODE_INFO palette_mode_info
Stores the size and colors of palette mode.
Definition: blockd.h:280
#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
SequenceHeader * seq_params
Definition: av1_common_int.h:981
AV1_COMMON common
Definition: encoder.h:2675
MV_REFERENCE_FRAME ref_frame[2]
The reference frames for the MV.
Definition: blockd.h:246
UV_PREDICTION_MODE uv_mode
The UV mode when intra is used.
Definition: blockd.h:234
INTERINTER_COMPOUND_DATA interinter_comp
Struct that stores the data used in interinter compound mode.
Definition: blockd.h:263
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:943
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:840
int use_mb_mode_cache
Whether to reuse the mode stored in mb_mode_cache.
Definition: block.h:1108
bool enable_smooth_intra
Definition: encoder.h:308
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:1447
Top level speed vs quality trade off data struture.
Definition: speed_features.h:1388
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:1213
int mbmode_cost[4][INTRA_MODES]
Luma mode cost for inter frame.
Definition: block.h:521
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:283
void set_y_mode_and_delta_angle(const int mode_idx, MB_MODE_INFO *const mbmi)
set the luma intra mode and delta angles for a given mode index. The total number of luma intra mode ...
Definition: intra_mode_search.c:326
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:228
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:1091
CommonQuantParams quant_params
Definition: av1_common_int.h:927
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:232
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, int64_t *best_model_rd, int64_t top_intra_model_rd[])
Evaluate a given luma intra-mode for inter frames.
Definition: intra_mode_search.c:1052
int_mv mv[2]
The motion vectors used by the current inter mode.
Definition: blockd.h:244
struct buf_2d src
A buffer containing the source frame.
Definition: block.h:117
int base_qindex
Definition: av1_common_int.h:618
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, PREDICTION_MODE best_mode_so_far, 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:174
Top level common structure used by both encoder and decoder.
Definition: av1_common_int.h:755
INTRA_MODE_SPEED_FEATURES intra_sf
Definition: speed_features.h:1432
int rate_uv_tokenonly
Rate transmit txfm tokens.
Definition: intra_mode_search.h:63
int lossless[8]
Definition: blockd.h:824
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:1153
TxfmSearchInfo txfm_search_info
Results of the txfm searches that have been done.
Definition: block.h:1158
bool enable_paeth_intra
Definition: encoder.h:312
unsigned int pred_sse[REF_FRAMES]
SSE of the current predictor.
Definition: block.h:1177
int y_mode_costs[INTRA_MODES][INTRA_MODES][INTRA_MODES]
Luma mode cost for intra frame.
Definition: block.h:523
int8_t skip_txfm
Whether to skip transforming and sending.
Definition: blockd.h:288
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:320
#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:1111
int mi_row
Definition: blockd.h:582
AV1_PRIMARY * ppi
Definition: encoder.h:2636
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:654
Stores the prediction/txfm mode of the current coding block.
Definition: blockd.h:222
Variables related to current coding block.
Definition: blockd.h:577
uint8_t best_palette_color_map[MAX_PALETTE_SQUARE]
The best color map found.
Definition: block.h:330
MACROBLOCKD e_mbd
Decoder's view of current coding block.
Definition: block.h:796
int winner_mode_count
Tracks how many winner modes there are.
Definition: block.h:1055
int8_t cfl_alpha_signs
Chroma from Luma: Joint sign of alpha Cb and alpha Cr.
Definition: blockd.h:276
uint8_t segment_id
The segment id.
Definition: blockd.h:310
uint8_t cfl_alpha_idx
Chroma from Luma: Index of the alpha Cb and alpha Cr combination.
Definition: blockd.h:278
bool left_available
Definition: blockd.h:633
AV1EncoderConfig oxcf
Definition: encoder.h:2680
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, 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.
bool enable_cfl_intra
Definition: encoder.h:316
ModeCosts mode_costs
The rate needed to signal a mode to the bitstream.
Definition: block.h:891
aom_variance_fn_ptr_t fn_ptr[BLOCK_SIZES_ALL]
Definition: encoder.h:2530
struct macroblockd_plane plane[3]
Definition: blockd.h:613
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:991
INTERP_FILTER_SPEED_FEATURES interp_sf
Definition: speed_features.h:1427
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:534
Declares high level functions to search through intra modes.
FeatureFlags features
Definition: av1_common_int.h:910
CurrentFrame current_frame
Definition: av1_common_int.h:759
TRELLIS_OPT_TYPE optimize_seg_arr[8]
Definition: encoder.h:2686
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:265
int recalc_luma_mc_data
Whether to recompute the luma prediction.
Definition: block.h:1099
int intra_uv_mode_cost[CFL_ALLOWED_TYPES][INTRA_MODES][UV_INTRA_MODES]
Chroma mode cost.
Definition: block.h:525
Flags related to interpolation filter search.
Definition: encoder.h:1922
int switchable_interp_costs[((SWITCHABLE_FILTERS+1) *4)][SWITCHABLE_FILTERS]
switchable_interp_costs
Definition: block.h:641
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:778
uint8_t * tx_type_map
Definition: blockd.h:673
MB_MODE_INFO ** mi
Definition: blockd.h:624
int skip_txfm_cost[SKIP_CONTEXTS][2]
skip_txfm_cost
Definition: block.h:649