AOMedia AV1 Codec
palette.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3  *
4  * This source code is subject to the terms of the BSD 2 Clause License and
5  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6  * was not distributed with this source code in the LICENSE file, you can
7  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8  * Media Patent License 1.0 was not distributed with this source code in the
9  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10  */
11 
15 #ifndef AOM_AV1_ENCODER_PALETTE_H_
16 #define AOM_AV1_ENCODER_PALETTE_H_
17 
18 #include "av1/common/blockd.h"
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 struct AV1_COMP;
25 struct PICK_MODE_CONTEXT;
26 struct macroblock;
27 
29 #define AV1_K_MEANS_RENAME(func, dim) func##_dim##dim##_c
30 
31 void AV1_K_MEANS_RENAME(av1_k_means, 1)(const int *data, int *centroids,
32  uint8_t *indices, int n, int k,
33  int max_itr);
34 void AV1_K_MEANS_RENAME(av1_k_means, 2)(const int *data, int *centroids,
35  uint8_t *indices, int n, int k,
36  int max_itr);
54 static INLINE void av1_calc_indices(const int *data, const int *centroids,
55  uint8_t *indices, int n, int k, int dim) {
56  assert(n > 0);
57  assert(k > 0);
58  if (dim == 1) {
59  av1_calc_indices_dim1(data, centroids, indices, n, k);
60  } else if (dim == 2) {
61  av1_calc_indices_dim2(data, centroids, indices, n, k);
62  } else {
63  assert(0 && "Untemplated k means dimension");
64  }
65 }
66 
87 static INLINE void av1_k_means(const int *data, int *centroids,
88  uint8_t *indices, int n, int k, int dim,
89  int max_itr) {
90  assert(n > 0);
91  assert(k > 0);
92  if (dim == 1) {
93  AV1_K_MEANS_RENAME(av1_k_means, 1)(data, centroids, indices, n, k, max_itr);
94  } else if (dim == 2) {
95  AV1_K_MEANS_RENAME(av1_k_means, 2)(data, centroids, indices, n, k, max_itr);
96  } else {
97  assert(0 && "Untemplated k means dimension");
98  }
99 }
100 
113 int av1_remove_duplicates(int *centroids, int num_centroids);
114 
130 int av1_index_color_cache(const uint16_t *color_cache, int n_cache,
131  const uint16_t *colors, int n_colors,
132  uint8_t *cache_color_found, int *out_cache_colors);
133 
146 int av1_get_palette_delta_bits_v(const PALETTE_MODE_INFO *const pmi,
147  int bit_depth, int *zero_count, int *min_bits);
148 
160 int av1_palette_color_cost_y(const PALETTE_MODE_INFO *const pmi,
161  const uint16_t *color_cache, int n_cache,
162  int bit_depth);
163 
175 int av1_palette_color_cost_uv(const PALETTE_MODE_INFO *const pmi,
176  const uint16_t *color_cache, int n_cache,
177  int bit_depth);
178 
186  const struct AV1_COMP *cpi, struct macroblock *x, BLOCK_SIZE bsize,
187  int dc_mode_cost, MB_MODE_INFO *best_mbmi, uint8_t *best_palette_color_map,
188  int64_t *best_rd, int *rate, int *rate_tokenonly, int64_t *distortion,
189  int *skippable, int *beat_best_rd, struct PICK_MODE_CONTEXT *ctx,
190  uint8_t *best_blk_skip, uint8_t *tx_type_map);
191 
198 void av1_rd_pick_palette_intra_sbuv(const struct AV1_COMP *cpi,
199  struct macroblock *x, int dc_mode_cost,
200  uint8_t *best_palette_color_map,
201  MB_MODE_INFO *const best_mbmi,
202  int64_t *best_rd, int *rate,
203  int *rate_tokenonly, int64_t *distortion,
204  int *skippable);
205 
208 void av1_restore_uv_color_map(const struct AV1_COMP *cpi, struct macroblock *x);
209 
210 #ifdef __cplusplus
211 } // extern "C"
212 #endif
213 
214 #endif // AOM_AV1_ENCODER_PALETTE_H_
SPEED_FEATURES::rt_sf
REAL_TIME_SPEED_FEATURES rt_sf
Definition: speed_features.h:1457
MB_MODE_INFO_EXT::mode_context
int16_t mode_context[MODE_CTX_REF_FRAMES]
Context used to encode the current mode.
Definition: block.h:207
av1_index_color_cache
int av1_index_color_cache(const uint16_t *color_cache, int n_cache, const uint16_t *colors, int n_colors, uint8_t *cache_color_found, int *out_cache_colors)
Checks what colors are in the color cache.
Definition: palette.c:78
block.h
encoder.h
Declares top-level encoder structures and functions.
FeatureFlags::interp_filter
InterpFilter interp_filter
Definition: av1_common_int.h:411
CommonQuantParams::y_dc_delta_q
int y_dc_delta_q
Definition: av1_common_int.h:624
MB_MODE_INFO::wm_params
WarpedMotionParams wm_params
The parameters used in warp motion mode.
Definition: blockd.h:257
intra_mode_info_cost_y
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
FeatureFlags
Frame level features.
Definition: av1_common_int.h:362
MvCosts::mv_cost_stack
int ** mv_cost_stack
Points to the nmv_cost_hp in use.
Definition: block.h:701
MB_MODE_INFO::ref_mv_idx
uint8_t ref_mv_idx
Which ref_mv to use.
Definition: blockd.h:314
ModeCosts::zeromv_mode_cost
int zeromv_mode_cost[GLOBALMV_MODE_CONTEXTS][2]
zeromv_mode_cost
Definition: block.h:569
ModeCosts
Holds the entropy costs for various modes sent to the bitstream.
Definition: block.h:507
av1_palette_color_cost_uv
int av1_palette_color_cost_uv(const PALETTE_MODE_INFO *const pmi, const uint16_t *color_cache, int n_cache, int bit_depth)
Gets the rate cost for transmitting luma palette chroma values.
Definition: palette.c:139
macroblock::color_sensitivity_sb
uint8_t color_sensitivity_sb[2]
Whether there is a strong color activity.
Definition: block.h:1165
macroblock::plane
struct macroblock_plane plane[3]
Each of the encoding plane.
Definition: block.h:788
MB_MODE_INFO::tx_size
TX_SIZE tx_size
Transform size when fixed size txfm is used (e.g. intra modes).
Definition: blockd.h:290
WARP_SAMPLE_INFO
Holds the motion samples for warp motion model estimation.
Definition: block.h:739
MB_MODE_INFO::angle_delta
int8_t angle_delta[PLANE_TYPES]
Directional mode delta: the angle is base angle + (angle_delta * step).
Definition: blockd.h:272
palette.h
Declares functions used in palette search.
macroblock::pred_mv1_sad
int pred_mv1_sad[REF_FRAMES]
The sad of the 2nd mv ref (near).
Definition: block.h:974
AOM_PLANE_Y
#define AOM_PLANE_Y
Definition: aom_image.h:199
TxfmSearchInfo::blk_skip
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
MB_MODE_INFO::interp_filters
int_interpfilters interp_filters
Filter used in subpel interpolation.
Definition: blockd.h:248
intra_mode_search_utils.h
Defines utility functions used in intra mode search.
macroblock::mbmi_ext
MB_MODE_INFO_EXT mbmi_ext
Derived coding information.
Definition: block.h:803
intra_mode_info_cost_uv
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
macroblockd::above_mbmi
MB_MODE_INFO * above_mbmi
Definition: blockd.h:652
AOM_BITS_8
@ AOM_BITS_8
Definition: aom_codec.h:319
TxfmSearchParams
Defines the parameters used to perform txfm search.
Definition: block.h:393
MB_MODE_INFO::filter_intra_mode_info
FILTER_INTRA_MODE_INFO filter_intra_mode_info
The type of filter intra mode used (if applicable).
Definition: blockd.h:274
AOM_PLANE_U
#define AOM_PLANE_U
Definition: aom_image.h:200
macroblockd::mi_col
int mi_col
Definition: blockd.h:583
AV1_COMP::speed
int speed
Definition: encoder.h:2828
macroblockd::mb_to_bottom_edge
int mb_to_bottom_edge
Definition: blockd.h:687
AV1_COMP::sf
SPEED_FEATURES sf
Definition: encoder.h:2833
LAYER_CONTEXT::is_key_frame
int is_key_frame
Definition: svc_layercontext.h:76
TxfmSearchInfo::skip_txfm
int skip_txfm
Whether to skip transform and quantization on a partition block level.
Definition: block.h:456
AV1Common::seg
struct segmentation seg
Definition: av1_common_int.h:932
estimate_intra_mode
static void estimate_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int use_modeled_non_rd_cost, int best_early_term, unsigned int ref_cost_intra, int reuse_prediction, struct buf_2d *orig_dst, PRED_BUFFER *tmp_buffers, PRED_BUFFER **this_mode_pred, RD_STATS *best_rdc, BEST_PICKMODE *best_pickmode)
Estimates best intra mode for inter mode search.
Definition: nonrd_pickmode.c:1883
av1_txfm_uvrd
int av1_txfm_uvrd(const AV1_COMP *const cpi, MACROBLOCK *x, RD_STATS *rd_stats, BLOCK_SIZE bsize, int64_t ref_best_rd)
Chroma block transform search.
macroblockd::bd
int bd
Definition: blockd.h:815
macroblock::content_state_sb
CONTENT_STATE_SB content_state_sb
Characteristics of the current superblock.
Definition: block.h:957
macroblock::nonrd_prune_ref_frame_search
int nonrd_prune_ref_frame_search
Prune ref frames in real-time mode.
Definition: block.h:1005
av1_nonrd_pick_intra_mode
void av1_nonrd_pick_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, RD_STATS *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx)
AV1 intra mode selection based on Non-RD optimized model.
Definition: nonrd_pickmode.c:1713
macroblock_plane::quant_fp_QTX
const int16_t * quant_fp_QTX
Quantization step size used by AV1_XFORM_QUANT_FP.
Definition: block.h:127
SVC::layer_context
LAYER_CONTEXT layer_context[32]
Definition: svc_layercontext.h:125
FeatureFlags::allow_screen_content_tools
bool allow_screen_content_tools
Definition: av1_common_int.h:379
av1_restore_uv_color_map
void av1_restore_uv_color_map(const struct AV1_COMP *cpi, struct macroblock *x)
Resets palette color map for chroma channels.
av1_k_means
static void av1_k_means(const int *data, int *centroids, uint8_t *indices, int n, int k, int dim, int max_itr)
Performs k-means cluster on the data.
Definition: palette.h:87
macroblock::rdmult
int rdmult
Rate-distortion multiplier.
Definition: block.h:883
PALETTE_BUFFER::kmeans_data_buf
int kmeans_data_buf[2 *MAX_PALETTE_SQUARE]
A temporary buffer used for k-means clustering.
Definition: block.h:332
ModeCosts::motion_mode_cost
int motion_mode_cost[BLOCK_SIZES_ALL][MOTION_MODES]
motion_mode_cost
Definition: block.h:637
macroblockd::left_mbmi
MB_MODE_INFO * left_mbmi
Definition: blockd.h:647
WARP_SAMPLE_INFO::num
int num
Number of samples.
Definition: block.h:741
AV1_COMP
Top level encoder structure.
Definition: encoder.h:2632
macroblock::part_search_info
PartitionSearchInfo part_search_info
Stores some partition-search related buffers.
Definition: block.h:1013
MB_MODE_INFO::compound_idx
uint8_t compound_idx
Indicates whether dist_wtd_comp(0) is used or not (0).
Definition: blockd.h:322
AV1Common::height
int height
Definition: av1_common_int.h:781
MB_MODE_INFO_EXT::ref_mv_stack
CANDIDATE_MV ref_mv_stack[MODE_CTX_REF_FRAMES][USABLE_REF_MV_STACK_SIZE]
The reference mv list for the current block.
Definition: block.h:199
SVC
The stucture of SVC.
Definition: svc_layercontext.h:87
macroblock_plane::round_fp_QTX
const int16_t * round_fp_QTX
Offset used for rounding in the quantizer process by AV1_XFORM_QUANT_FP.
Definition: block.h:129
AOM_CBR
@ AOM_CBR
Definition: aom_encoder.h:186
macroblockd::mb_to_right_edge
int mb_to_right_edge
Definition: blockd.h:685
MB_MODE_INFO::interintra_mode
INTERINTRA_MODE interintra_mode
The type of intra mode used by inter-intra.
Definition: blockd.h:259
macroblock::palette_buffer
PALETTE_BUFFER * palette_buffer
Buffer to store the best palette map.
Definition: block.h:839
MB_MODE_INFO::palette_mode_info
PALETTE_MODE_INFO palette_mode_info
Stores the size and colors of palette mode.
Definition: blockd.h:280
macroblock::pred_mv0_sad
int pred_mv0_sad[REF_FRAMES]
The sad of the 1st mv ref (nearest).
Definition: block.h:972
RateControlCfg::mode
enum aom_rc_mode mode
Definition: encoder.h:587
find_predictors
static void find_predictors(AV1_COMP *cpi, MACROBLOCK *x, MV_REFERENCE_FRAME ref_frame, int_mv frame_mv[MB_MODE_COUNT][REF_FRAMES], TileDataEnc *tile_data, struct buf_2d yv12_mb[8][3], BLOCK_SIZE bsize, int force_skip_low_temp_var, int skip_pred_mv)
Finds predicted motion vectors for a block.
Definition: nonrd_pickmode.c:379
macroblock_plane::eobs
uint16_t * eobs
Location of the end of qcoeff (end of block).
Definition: block.h:113
MotionVectorSearchParams::search_site_cfg
search_site_config search_site_cfg[SS_CFG_TOTAL][NUM_DISTINCT_SEARCH_METHODS]
Definition: encoder.h:1964
macroblock::mv_costs
MvCosts * mv_costs
Definition: block.h:895
AV1Common::seq_params
SequenceHeader * seq_params
Definition: av1_common_int.h:981
AV1_COMP::common
AV1_COMMON common
Definition: encoder.h:2675
macroblock::pred_mv_sad
int pred_mv_sad[REF_FRAMES]
Sum absolute distortion of the predicted mv for each ref frame.
Definition: block.h:968
MB_MODE_INFO::ref_frame
MV_REFERENCE_FRAME ref_frame[2]
The reference frames for the MV.
Definition: blockd.h:246
MB_MODE_INFO::uv_mode
UV_PREDICTION_MODE uv_mode
The UV mode when intra is used.
Definition: blockd.h:234
MB_MODE_INFO::interinter_comp
INTERINTER_COMPOUND_DATA interinter_comp
Struct that stores the data used in interinter compound mode.
Definition: blockd.h:263
MotionVectorSearchParams::mv_step_param
int mv_step_param
Definition: encoder.h:1948
macroblock_plane
Each source plane of the current macroblock.
Definition: block.h:103
WARP_SAMPLE_INFO::pts_inref
int pts_inref[16]
Sample location in the reference frame.
Definition: block.h:745
AV1_COMP::mv_search_params
MotionVectorSearchParams mv_search_params
Definition: encoder.h:2838
RATE_CONTROL::frames_since_golden
int frames_since_golden
Definition: ratectrl.h:152
av1_remove_duplicates
int av1_remove_duplicates(int *centroids, int num_centroids)
Removes duplicated centroid indices.
Definition: palette.c:38
SPEED_FEATURES::winner_mode_sf
WINNER_MODE_SPEED_FEATURES winner_mode_sf
Definition: speed_features.h:1447
CommonModeInfoParams::mi_rows
int mi_rows
Definition: av1_common_int.h:526
macroblockd::global_motion
const WarpedMotionParams * global_motion
Definition: blockd.h:850
macroblock_plane::src_diff
int16_t * src_diff
Stores source - pred so the txfm can be computed later.
Definition: block.h:105
CommonQuantParams
Parameters related to quantization at the frame level.
Definition: av1_common_int.h:614
macroblock_plane::dqcoeff
tran_low_t * dqcoeff
Dequantized coefficients.
Definition: block.h:107
macroblock_plane::dequant_QTX
const int16_t * dequant_QTX
Dequantizer.
Definition: block.h:139
macroblock::warp_sample_info
WARP_SAMPLE_INFO warp_sample_info[REF_FRAMES]
Warp motion samples buffer.
Definition: block.h:988
search_filter_ref
static void search_filter_ref(AV1_COMP *cpi, MACROBLOCK *x, RD_STATS *this_rdc, int mi_row, int mi_col, PRED_BUFFER *tmp, BLOCK_SIZE bsize, int reuse_inter_pred, PRED_BUFFER **this_mode_pred, int *this_early_term, int use_model_yrd_large)
Searches for the best intrpolation filter.
Definition: nonrd_pickmode.c:1389
av1_count_colors_highbd
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
av1_get_palette_delta_bits_v
int av1_get_palette_delta_bits_v(const PALETTE_MODE_INFO *const pmi, int bit_depth, int *zero_count, int *min_bits)
Gets the rate cost for each delta-encoding v palette.
Definition: palette.c:106
SPEED_FEATURES::inter_sf
INTER_MODE_SPEED_FEATURES inter_sf
Definition: speed_features.h:1422
MB_MODE_INFO_EXT
Extended mode info derived from mbmi.
Definition: block.h:196
MB_MODE_INFO::bsize
BLOCK_SIZE bsize
The block size of the current coding block.
Definition: blockd.h:228
macroblock_plane::qcoeff
tran_low_t * qcoeff
Quantized coefficients.
Definition: block.h:109
MB_MODE_INFO::motion_mode
MOTION_MODE motion_mode
The motion mode used by the inter prediction.
Definition: blockd.h:250
AV1_COMP::rd
RD_OPT rd
Definition: encoder.h:2787
MotionVectorSearchParams::find_fractional_mv_step
fractional_mv_step_fp * find_fractional_mv_step
Definition: encoder.h:1957
MB_MODE_INFO_EXT::ref_mv_count
uint8_t ref_mv_count[MODE_CTX_REF_FRAMES]
Number of ref mvs in the drl.
Definition: block.h:203
estimate_block_intra
static void estimate_block_intra(int plane, int block, int row, int col, BLOCK_SIZE plane_bsize, TX_SIZE tx_size, void *arg)
Estimation of RD cost of an intra mode for Non-RD optimized case.
Definition: nonrd_pickmode.c:1208
av1_calc_indices
static void av1_calc_indices(const int *data, const int *centroids, uint8_t *indices, int n, int k, int dim)
Calculates the cluster to which each data point belong.
Definition: palette.h:54
macroblock::color_sensitivity
uint8_t color_sensitivity[2]
Color sensitivity flag for the coding block.
Definition: block.h:1167
AV1Common::quant_params
CommonQuantParams quant_params
Definition: av1_common_int.h:927
AV1_PRIMARY::use_svc
int use_svc
Definition: encoder.h:2503
yv12_buffer_config
YV12 frame buffer data structure.
Definition: yv12config.h:39
PartitionSearchInfo::variance_low
uint8_t variance_low[105]
Variance of the subblocks in the superblock.
Definition: block.h:386
macroblock_plane::coeff
tran_low_t * coeff
Transformed coefficients.
Definition: block.h:111
MB_MODE_INFO::mode
PREDICTION_MODE mode
The prediction mode used.
Definition: blockd.h:232
WARP_SAMPLE_INFO::pts
int pts[16]
Sample locations in current frame.
Definition: block.h:743
MB_MODE_INFO::mv
int_mv mv[2]
The motion vectors used by the current inter mode.
Definition: blockd.h:244
FeatureFlags::allow_warped_motion
bool allow_warped_motion
Definition: av1_common_int.h:381
macroblock_plane::src
struct buf_2d src
A buffer containing the source frame.
Definition: block.h:117
AV1_COMP::rc
RATE_CONTROL rc
Definition: encoder.h:2813
ModeCosts::refmv_mode_cost
int refmv_mode_cost[REFMV_MODE_CONTEXTS][2]
refmv_mode_cost
Definition: block.h:571
CommonQuantParams::base_qindex
int base_qindex
Definition: av1_common_int.h:618
FeatureFlags::switchable_motion_mode
bool switchable_motion_mode
Definition: av1_common_int.h:409
AV1Common
Top level common structure used by both encoder and decoder.
Definition: av1_common_int.h:755
ModeCosts::angle_delta_cost
int angle_delta_cost[DIRECTIONAL_MODES][2 *MAX_ANGLE_DELTA+1]
angle_delta_cost
Definition: block.h:531
AV1_COMP::ref_frame_flags
int ref_frame_flags
Definition: encoder.h:2823
macroblock::thresh_freq_fact
int thresh_freq_fact[BLOCK_SIZES_ALL][MAX_MODES]
Factors used for rd-thresholding.
Definition: block.h:1043
SPEED_FEATURES::intra_sf
INTRA_MODE_SPEED_FEATURES intra_sf
Definition: speed_features.h:1432
macroblockd::lossless
int lossless[8]
Definition: blockd.h:824
MB_MODE_INFO::num_proj_ref
uint8_t num_proj_ref
Number of samples used by warp causal.
Definition: blockd.h:252
macroblock::txfm_search_info
TxfmSearchInfo txfm_search_info
Results of the txfm searches that have been done.
Definition: block.h:1158
av1_palette_color_cost_y
int av1_palette_color_cost_y(const PALETTE_MODE_INFO *const pmi, const uint16_t *color_cache, int n_cache, int bit_depth)
Gets the rate cost for transmitting luma palette color values.
Definition: palette.c:125
MvCosts::nmv_joint_cost
int nmv_joint_cost[4]
Costs for coding the zero components.
Definition: block.h:690
TxfmSearchParams::tx_mode_search_type
TX_MODE tx_mode_search_type
How to search for the optimal tx_size.
Definition: block.h:434
macroblock::pred_sse
unsigned int pred_sse[REF_FRAMES]
SSE of the current predictor.
Definition: block.h:1177
ModeCosts::y_mode_costs
int y_mode_costs[INTRA_MODES][INTRA_MODES][INTRA_MODES]
Luma mode cost for intra frame.
Definition: block.h:523
MB_MODE_INFO_EXT::global_mvs
int_mv global_mvs[REF_FRAMES]
Global mvs.
Definition: block.h:205
MB_MODE_INFO::skip_txfm
int8_t skip_txfm
Whether to skip transforming and sending.
Definition: blockd.h:288
MB_MODE_INFO::comp_group_idx
uint8_t comp_group_idx
Indicates if masked compound is used(1) or not (0).
Definition: blockd.h:320
AOM_PLANE_V
#define AOM_PLANE_V
Definition: aom_image.h:201
ModeCosts::newmv_mode_cost
int newmv_mode_cost[NEWMV_MODE_CONTEXTS][2]
newmv_mode_cost
Definition: block.h:567
TxfmSearchInfo
Stores various encoding/search decisions related to txfm search.
Definition: block.h:454
ModeCosts::single_ref_cost
int single_ref_cost[REF_CONTEXTS][SINGLE_REFS - 1][2]
single_ref_cost
Definition: block.h:581
macroblockd::mi_row
int mi_row
Definition: blockd.h:582
AV1_COMP::ppi
AV1_PRIMARY * ppi
Definition: encoder.h:2636
ModeCosts::inter_compound_mode_cost
int inter_compound_mode_cost[INTER_MODE_CONTEXTS][INTER_COMPOUND_MODES]
inter_compound_mode_cost
Definition: block.h:609
MB_MODE_INFO
Stores the prediction/txfm mode of the current coding block.
Definition: blockd.h:222
macroblockd
Variables related to current coding block.
Definition: blockd.h:577
ModeCosts::intra_inter_cost
int intra_inter_cost[INTRA_INTER_CONTEXTS][2]
intra_inter_cost
Definition: block.h:607
macroblock::e_mbd
MACROBLOCKD e_mbd
Decoder's view of current coding block.
Definition: block.h:796
CommonModeInfoParams::mi_cols
int mi_cols
Definition: av1_common_int.h:531
macroblock::txfm_search_params
TxfmSearchParams txfm_search_params
Parameters that control how motion search is done.
Definition: block.h:1151
palette_rd_y
static void palette_rd_y(const AV1_COMP *const cpi, MACROBLOCK *x, MB_MODE_INFO *mbmi, BLOCK_SIZE bsize, int dc_mode_cost, const int *data, int *centroids, int n, uint16_t *color_cache, int n_cache, bool do_header_rd_based_gating, 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, PICK_MODE_CONTEXT *ctx, uint8_t *blk_skip, uint8_t *tx_type_map, int *beat_best_palette_rd, bool *do_header_rd_based_breakout)
Calculate the luma palette cost from a given color palette.
Definition: palette.c:217
macroblockd::ref_mv_stack
CANDIDATE_MV ref_mv_stack[MODE_CTX_REF_FRAMES][MAX_REF_MV_STACK_SIZE]
Definition: blockd.h:783
MB_MODE_INFO::segment_id
uint8_t segment_id
The segment id.
Definition: blockd.h:310
block_yrd
static void block_yrd(AV1_COMP *cpi, MACROBLOCK *x, int mi_row, int mi_col, RD_STATS *this_rdc, int *skippable, BLOCK_SIZE bsize, TX_SIZE tx_size)
Calculates RD Cost using Hadamard transform.
Definition: nonrd_pickmode.c:759
AV1Common::width
int width
Definition: av1_common_int.h:780
SVC::downsample_filter_phase
int downsample_filter_phase[4]
Definition: svc_layercontext.h:136
AV1_COMP::oxcf
AV1EncoderConfig oxcf
Definition: encoder.h:2680
macroblock_plane::zbin_QTX
const int16_t * zbin_QTX
Size of the quantization bin around 0. Only Used by QUANT_B.
Definition: block.h:137
av1_rd_pick_palette_intra_sby
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.
macroblock::mode_costs
ModeCosts mode_costs
The rate needed to signal a mode to the bitstream.
Definition: block.h:891
AV1_PRIMARY::fn_ptr
aom_variance_fn_ptr_t fn_ptr[BLOCK_SIZES_ALL]
Definition: encoder.h:2530
SPEED_FEATURES::mv_sf
MV_SPEED_FEATURES mv_sf
Definition: speed_features.h:1417
macroblock_plane::quant_shift_QTX
const int16_t * quant_shift_QTX
Scale factor to shift coefficients toward zero. Only used by QUANT_B.
Definition: block.h:135
MB_MODE_INFO::inter_tx_size
TX_SIZE inter_tx_size[INTER_TX_SIZE_BUF_LEN]
Transform size when recursive txfm tree is on.
Definition: blockd.h:292
FeatureFlags::allow_high_precision_mv
bool allow_high_precision_mv
Definition: av1_common_int.h:371
macroblockd::plane
struct macroblockd_plane plane[3]
Definition: blockd.h:613
AV1EncoderConfig::rc_cfg
RateControlCfg rc_cfg
Definition: encoder.h:916
SPEED_FEATURES::interp_sf
INTERP_FILTER_SPEED_FEATURES interp_sf
Definition: speed_features.h:1427
av1_rd_pick_palette_intra_sbuv
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.
av1_pick_uniform_tx_size_type_yrd
void av1_pick_uniform_tx_size_type_yrd(const AV1_COMP *const cpi, MACROBLOCK *x, RD_STATS *rd_stats, BLOCK_SIZE bs, int64_t ref_best_rd)
Uniform transform size and type search.
search_new_mv
static int search_new_mv(AV1_COMP *cpi, MACROBLOCK *x, int_mv frame_mv[][REF_FRAMES], MV_REFERENCE_FRAME ref_frame, int gf_temporal_ref, BLOCK_SIZE bsize, int mi_row, int mi_col, int *rate_mv, RD_STATS *best_rdc)
Searches for the best New Motion Vector.
Definition: nonrd_pickmode.c:299
intra_mode_search.h
Declares high level functions to search through intra modes.
AV1Common::current_frame
CurrentFrame current_frame
Definition: av1_common_int.h:759
AV1Common::features
FeatureFlags features
Definition: av1_common_int.h:910
combined_motion_search
static int combined_motion_search(AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int mi_row, int mi_col, int_mv *tmp_mv, int *rate_mv, int64_t best_rd_sofar, int use_base_mv)
Runs Motion Estimation for a specific block and specific ref frame.
Definition: nonrd_pickmode.c:185
av1_count_colors
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
ModeCosts::filter_intra_cost
int filter_intra_cost[BLOCK_SIZES_ALL][2]
filter_intra_cost
Definition: block.h:527
macroblockd::weight
uint16_t weight[MODE_CTX_REF_FRAMES][MAX_REF_MV_STACK_SIZE]
Definition: blockd.h:788
AV1Common::mi_params
CommonModeInfoParams mi_params
Definition: av1_common_int.h:915
macroblock::source_variance
unsigned int source_variance
Variance of the source frame.
Definition: block.h:1175
macroblock
Encoder's parameters related to the current coding block.
Definition: block.h:778
macroblockd::tx_type_map
uint8_t * tx_type_map
Definition: blockd.h:673
AV1_COMP::noise_estimate
NOISE_ESTIMATE noise_estimate
Definition: encoder.h:3153
macroblockd::mi
MB_MODE_INFO ** mi
Definition: blockd.h:624
ModeCosts::skip_txfm_cost
int skip_txfm_cost[SKIP_CONTEXTS][2]
skip_txfm_cost
Definition: block.h:649
av1_nonrd_pick_inter_mode_sb
void av1_nonrd_pick_inter_mode_sb(AV1_COMP *cpi, TileDataEnc *tile_data, MACROBLOCK *x, RD_STATS *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx)
AV1 inter mode selection based on Non-RD optimized model.
Definition: nonrd_pickmode.c:2242
AV1_COMP::svc
SVC svc
Definition: encoder.h:3120