 |
AOMedia AV1 Codec
|
12 #ifndef AOM_AV1_ENCODER_PARTITION_SEARCH_H_
13 #define AOM_AV1_ENCODER_PARTITION_SEARCH_H_
17 #include "av1/encoder/encodeframe.h"
18 #include "av1/encoder/tokenize.h"
20 void av1_set_offsets_without_segment_id(
const AV1_COMP *
const cpi,
21 const TileInfo *
const tile,
23 int mi_col, BLOCK_SIZE bsize);
24 void av1_set_offsets(
const AV1_COMP *
const cpi,
const TileInfo *
const tile,
29 int mi_col, BLOCK_SIZE bsize,
int *rate,
30 int64_t *dist,
int do_recon, PC_TREE *pc_tree);
33 TokenExtra **tp,
int mi_row,
int mi_col,
34 BLOCK_SIZE bsize, PC_TREE *pc_tree);
35 #if CONFIG_RT_ML_PARTITIONING
36 void av1_nonrd_pick_partition(
AV1_COMP *cpi, ThreadData *td,
37 TileDataEnc *tile_data, TokenExtra **tp,
38 int mi_row,
int mi_col, BLOCK_SIZE bsize,
39 RD_STATS *rd_cost,
int do_recon, int64_t best_rd,
42 void av1_reset_part_sf(PARTITION_SPEED_FEATURES *part_sf);
44 bool av1_rd_partition_search(
AV1_COMP *
const cpi, ThreadData *td,
45 TileDataEnc *tile_data, TokenExtra **tp,
46 SIMPLE_MOTION_DATA_TREE *sms_root,
int mi_row,
47 int mi_col, BLOCK_SIZE bsize,
48 RD_STATS *best_rd_cost);
50 TileDataEnc *tile_data, TokenExtra **tp,
int mi_row,
51 int mi_col, BLOCK_SIZE bsize, RD_STATS *rd_cost,
52 RD_STATS best_rdc, PC_TREE *pc_tree,
53 SIMPLE_MOTION_DATA_TREE *sms_tree, int64_t *none_rd,
54 SB_MULTI_PASS_MODE multi_pass_mode,
55 RD_RECT_PART_WIN_INFO *rect_part_win_info);
57 static AOM_INLINE
void set_cb_offsets(uint16_t *cb_offset,
58 const uint16_t cb_offset_y,
59 const uint16_t cb_offset_uv) {
60 cb_offset[PLANE_TYPE_Y] = cb_offset_y;
61 cb_offset[PLANE_TYPE_UV] = cb_offset_uv;
64 static AOM_INLINE
void update_cb_offsets(
MACROBLOCK *x,
const BLOCK_SIZE bsize,
65 const int subsampling_x,
66 const int subsampling_y) {
67 const BLOCK_SIZE plane_bsize =
68 get_plane_block_size(bsize, subsampling_x, subsampling_y);
69 x->
cb_offset[PLANE_TYPE_Y] += block_size_wide[bsize] * block_size_high[bsize];
72 block_size_wide[plane_bsize] * block_size_high[plane_bsize];
75 #endif // AOM_AV1_ENCODER_PARTITION_SEARCH_H_
uint16_t cb_offset[PLANE_TYPES]
Offset of current coding block's coeff buffer relative to the sb.
Definition: block.h:902
REAL_TIME_SPEED_FEATURES rt_sf
Definition: speed_features.h:1184
static void pick_sb_modes(AV1_COMP *const cpi, TileDataEnc *tile_data, MACROBLOCK *const x, int mi_row, int mi_col, RD_STATS *rd_cost, PARTITION_TYPE partition, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, RD_STATS best_rd)
Interface for AV1 mode search for an individual coding block.
Definition: partition_search.c:629
int16_t mode_context[MODE_CTX_REF_FRAMES]
Context used to encode the current mode.
Definition: block.h:207
CommonContexts above_contexts
Definition: av1_common_int.h:982
Declares top-level encoder structures and functions.
Stores best extended mode information at frame level.
Definition: block.h:216
InterpFilter interp_filter
Definition: av1_common_int.h:383
uint8_t ref_mv_idx
Which ref_mv to use.
Definition: blockd.h:308
TXFM_CONTEXT left_txfm_context_buffer[MAX_MIB_SIZE]
Definition: blockd.h:745
Holds the entropy costs for various modes sent to the bitstream.
Definition: block.h:583
uint8_t tx_type_map_[MAX_MIB_SIZE *MAX_MIB_SIZE]
Transform types inside the partition block.
Definition: block.h:542
struct macroblock_plane plane[3]
Each of the encoding plane.
Definition: block.h:856
TX_SIZE tx_size
Transform size when fixed size txfm is used (e.g. intra modes).
Definition: blockd.h:284
int8_t interintra_wedge_index
The type of wedge used in interintra mode.
Definition: blockd.h:255
void av1_rd_use_partition(AV1_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, MB_MODE_INFO **mib, TokenExtra **tp, int mi_row, int mi_col, BLOCK_SIZE bsize, int *rate, int64_t *dist, int do_recon, PC_TREE *pc_tree)
AV1 block partition search (partition estimation and partial search).
Definition: partition_search.c:1525
Encoder data related to row-based multi-threading.
Definition: encoder.h:1321
BLOCK_SIZE min_partition_size
Maximum partition size for the sb.
Definition: block.h:56
uint8_t height
Definition: blockd.h:764
const struct scale_factors * block_ref_scale_factors[2]
Definition: blockd.h:685
PARTITION_SPEED_FEATURES part_sf
Definition: speed_features.h:1139
uint16_t weight[USABLE_REF_MV_STACK_SIZE]
The weights used to compute the ref mvs.
Definition: block.h:220
int partition_cost[PARTITION_CONTEXTS][EXT_PARTITION_TYPES]
Cost for coding the partition.
Definition: block.h:589
int8_t delta_lf_from_base
Definition: blockd.h:294
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
bool enable_1to4_partitions
Definition: encoder.h:220
MB_MODE_INFO_EXT mbmi_ext
Derived coding information.
Definition: block.h:871
Params related to MB_MODE_INFO arrays and related info.
Definition: av1_common_int.h:477
MB_MODE_INFO * above_mbmi
Definition: blockd.h:643
uint8_t width
Definition: blockd.h:763
@ AOM_BITS_8
Definition: aom_codec.h:319
Defines the parameters used to perform txfm search.
Definition: block.h:425
int mi_col
Definition: blockd.h:574
TXFM_CONTEXT * above_txfm_context
Definition: blockd.h:731
int use_svc
Definition: encoder.h:2632
SPEED_FEATURES sf
Definition: encoder.h:2314
int is_key_frame
Definition: svc_layercontext.h:80
unsigned char gf_frame_index
Definition: encoder.h:2362
AV1EncRowMultiThreadInfo enc_row_mt
Definition: encoder.h:1418
void av1_rd_pick_inter_mode(struct AV1_COMP *cpi, struct TileDataEnc *tile_data, struct macroblock *x, struct RD_STATS *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, int64_t best_rd_so_far)
AV1 inter mode selection.
Definition: rdopt.c:5163
SuperBlockEnc sb_enc
Information on a whole superblock level.
Definition: block.h:1018
CFL_CTX cfl
Definition: blockd.h:892
struct segmentation seg
Definition: av1_common_int.h:904
bool cur_frame_force_integer_mv
Definition: av1_common_int.h:347
uint8_t * txb_entropy_ctx
Contexts used to code the transform coefficients.
Definition: block.h:115
static void encode_sb(const AV1_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, TokenExtra **tp, int mi_row, int mi_col, RUN_TYPE dry_run, BLOCK_SIZE bsize, PC_TREE *pc_tree, int *rate)
Reconstructs a partition (may contain multiple coding blocks)
Definition: partition_search.c:1363
void av1_rd_pick_intra_mode_sb(const struct AV1_COMP *cpi, struct macroblock *x, struct RD_STATS *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, int64_t best_rd)
AV1 intra mode selection for intra frames.
Definition: rdopt.c:3107
int8_t delta_lf[FRAME_LF_COUNT]
Definition: blockd.h:866
unsigned int txb_split_count
Number of txb splits.
Definition: block.h:567
int bd
Definition: blockd.h:806
bool is_chroma_ref
Definition: blockd.h:599
uint8_t use_wedge_interintra
Whether to use interintra wedge.
Definition: blockd.h:318
MB_MODE_INFO_EXT_FRAME * mbmi_ext_frame
Finalized mbmi_ext for the whole frame.
Definition: block.h:878
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:1657
int sb_counter
Definition: encoder.h:2708
LAYER_CONTEXT layer_context[32]
Definition: svc_layercontext.h:126
bool allow_screen_content_tools
Definition: av1_common_int.h:351
RefCntBuffer * cur_frame
Definition: av1_common_int.h:809
MultiThreadInfo mt_info
Definition: encoder.h:2501
int16_t mode_context
Context used to encode the current mode.
Definition: block.h:227
uint16_t cb_offset[PLANE_TYPES]
Offset of current coding block's coeff buffer relative to the sb.
Definition: block.h:229
uint8_t * last_frame_seg_map
Definition: av1_common_int.h:909
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
PartitionSearchInfo part_search_info
Stores some partition-search related buffers.
Definition: block.h:1077
uint8_t compound_idx
Indicates whether dist_wtd_comp(0) is used or not (0).
Definition: blockd.h:316
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
int qindex
Quantization index for the current partition block.
Definition: block.h:934
Encoder config for coding block partitioning.
Definition: encoder.h:208
INTERINTRA_MODE interintra_mode
The type of intra mode used by inter-intra.
Definition: blockd.h:253
PALETTE_MODE_INFO palette_mode_info
Stores the size and colors of palette mode.
Definition: blockd.h:274
int quad_tree_idx
Current index on the partition block quad tree.
Definition: block.h:396
int mi_stride
Definition: av1_common_int.h:543
uint16_t * eobs
Location of the end of qcoeff (end of block).
Definition: block.h:113
uint8_t skip_mode
Inter skip mode.
Definition: blockd.h:310
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
Each source plane of the current macroblock.
Definition: block.h:103
const YV12_BUFFER_CONFIG * cur_buf
Definition: blockd.h:693
int use_mb_mode_cache
Whether to reuse the mode stored in mb_mode_cache.
Definition: block.h:1172
CANDIDATE_MV ref_mv_stack[USABLE_REF_MV_STACK_SIZE]
The reference mv list for the current block.
Definition: block.h:218
aom_variance_fn_ptr_t fn_ptr[BLOCK_SIZES_ALL]
Definition: encoder.h:2347
FRAME_CONTEXT * tile_ctx
Definition: blockd.h:801
WINNER_MODE_SPEED_FEATURES winner_mode_sf
Definition: speed_features.h:1174
int mi_rows
Definition: av1_common_int.h:498
EncSegmentationInfo enc_seg
Definition: encoder.h:2330
const WarpedMotionParams * global_motion
Definition: blockd.h:841
static void hybrid_intra_mode_search(AV1_COMP *cpi, MACROBLOCK *const x, RD_STATS *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx)
Hybrid intra mode search.
Definition: partition_search.c:585
tran_low_t * dqcoeff
Dequantized coefficients.
Definition: block.h:107
int use_screen_content_tools
Definition: encoder.h:2550
uint16_t weight[MODE_CTX_REF_FRAMES][USABLE_REF_MV_STACK_SIZE]
The weights used to compute the ref mvs.
Definition: block.h:201
FullMvLimits mv_limits
Limit for the range of motion vectors.
Definition: block.h:1194
enum aom_enc_pass pass
Definition: encoder.h:930
INTER_MODE_SPEED_FEATURES inter_sf
Definition: speed_features.h:1149
Extended mode info derived from mbmi.
Definition: block.h:196
BLOCK_SIZE bsize
The block size of the current coding block.
Definition: blockd.h:222
tran_low_t * qcoeff
Quantized coefficients.
Definition: block.h:109
PARTITION_TYPE partition
The partition type of the current coding block.
Definition: blockd.h:224
MBMIExtFrameBufferInfo mbmi_ext_info
Definition: encoder.h:2120
Encoder parameters for synchronization of row based multi-threading.
Definition: encoder.h:1232
MOTION_MODE motion_mode
The motion mode used by the inter prediction.
Definition: blockd.h:244
RD_OPT rd
Definition: encoder.h:2268
int show_frame
Definition: av1_common_int.h:862
void(* sync_read_ptr)(AV1EncRowMultiThreadSync *const, int, int)
Definition: encoder.h:1364
static void pick_sb_modes_nonrd(AV1_COMP *const cpi, TileDataEnc *tile_data, MACROBLOCK *const x, int mi_row, int mi_col, RD_STATS *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx)
Top level function to pick block mode for non-RD optimized case.
Definition: partition_search.c:1923
uint8_t ref_mv_count[MODE_CTX_REF_FRAMES]
Number of ref mvs in the drl.
Definition: block.h:203
int8_t delta_lf_from_base
Definition: blockd.h:851
static void encode_b(const AV1_COMP *const cpi, TileDataEnc *tile_data, ThreadData *td, TokenExtra **tp, int mi_row, int mi_col, RUN_TYPE dry_run, BLOCK_SIZE bsize, PARTITION_TYPE partition, PICK_MODE_CONTEXT *const ctx, int *rate)
Reconstructs an individual coding block.
Definition: partition_search.c:1201
CommonQuantParams quant_params
Definition: av1_common_int.h:899
YV12 frame buffer data structure.
Definition: yv12config.h:38
tran_low_t * coeff
Transformed coefficients.
Definition: block.h:111
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
bool allow_warped_motion
Definition: av1_common_int.h:353
struct buf_2d src
A buffer containing the source frame.
Definition: block.h:117
WinnerModeParams winner_mode_params
Definition: encoder.h:2284
FRAME_CONTEXT * fc
Definition: av1_common_int.h:958
TXFM_CONTEXT ** txfm
Definition: av1_common_int.h:709
int base_qindex
Definition: av1_common_int.h:586
void av1_update_intra_mb_txb_context(const AV1_COMP *cpi, ThreadData *td, RUN_TYPE dry_run, BLOCK_SIZE bsize, uint8_t allow_update_cdf)
Update the probability model (cdf) and the entropy context related to coefficient coding for all tran...
int must_find_valid_partition
Whether to disable some features to force a mode in current block.
Definition: block.h:1086
uint8_t * map
Definition: encoder.h:2008
bool switchable_motion_mode
Definition: av1_common_int.h:381
Top level common structure used by both encoder and decoder.
Definition: av1_common_int.h:723
int mb_energy
Energy in the current source coding block. Used to calculate rdmult.
Definition: block.h:954
int lossless[8]
Definition: blockd.h:815
TxfmSearchInfo txfm_search_info
Results of the txfm searches that have been done.
Definition: block.h:1213
int_mv global_mvs[REF_FRAMES]
Global mvs.
Definition: block.h:225
int errorperbit
A multiplier that converts mv cost to l2 error.
Definition: block.h:979
TX_MODE tx_mode_search_type
How to search for the optimal tx_size.
Definition: block.h:468
void av1_nonrd_use_partition(AV1_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, MB_MODE_INFO **mib, TokenExtra **tp, int mi_row, int mi_col, BLOCK_SIZE bsize, PC_TREE *pc_tree)
AV1 block partition application (minimal RD search).
Definition: partition_search.c:2035
int_mv global_mvs[REF_FRAMES]
Global mvs.
Definition: block.h:205
int8_t skip_txfm
Whether to skip transforming and sending.
Definition: blockd.h:282
int current_base_qindex
Definition: blockd.h:826
uint8_t comp_group_idx
Indicates if masked compound is used(1) or not (0).
Definition: blockd.h:314
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
Stores various encoding/search decisions related to txfm search.
Definition: block.h:520
int mi_row
Definition: blockd.h:573
Stores the prediction/txfm mode of the current coding block.
Definition: blockd.h:216
int tx_type_map_stride
Definition: blockd.h:669
DeltaQInfo delta_q_info
Definition: av1_common_int.h:942
Variables related to current coding block.
Definition: blockd.h:568
bool av1_rd_pick_partition(AV1_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, TokenExtra **tp, int mi_row, int mi_col, BLOCK_SIZE bsize, RD_STATS *rd_cost, RD_STATS best_rdc, PC_TREE *pc_tree, SIMPLE_MOTION_DATA_TREE *sms_tree, int64_t *none_rd, SB_MULTI_PASS_MODE multi_pass_mode, RD_RECT_PART_WIN_INFO *rect_part_win_info)
AV1 block partition search (full search).
Definition: partition_search.c:4002
MACROBLOCKD e_mbd
Decoder's view of current coding block.
Definition: block.h:864
int mi_cols
Definition: av1_common_int.h:503
TxfmSearchParams txfm_search_params
Parameters that control how motion search is done.
Definition: block.h:1206
uint8_t segment_id
The segment id.
Definition: blockd.h:304
int8_t delta_lf[FRAME_LF_COUNT]
Definition: blockd.h:296
int vaq_refresh
Definition: encoder.h:2486
bool has_lossless_segment
Definition: encoder.h:2014
CYCLIC_REFRESH * cyclic_refresh
Definition: encoder.h:2335
int mi_stride
Definition: blockd.h:580
AV1EncoderConfig oxcf
Definition: encoder.h:2143
SequenceHeader seq_params
Definition: av1_common_int.h:953
TXFM_CONTEXT * left_txfm_context
Definition: blockd.h:738
ModeCosts mode_costs
The rate needed to signal a mode to the bitstream.
Definition: block.h:959
TX_SIZE inter_tx_size[INTER_TX_SIZE_BUF_LEN]
Transform size when recursive txfm tree is on.
Definition: blockd.h:286
bool allow_high_precision_mv
Definition: av1_common_int.h:343
struct macroblockd_plane plane[3]
Definition: blockd.h:604
uint8_t ref_mv_count
Number of ref mvs in the drl.
Definition: block.h:222
TileInfo tile
Definition: blockd.h:609
uint8_t * consec_zero_mv
Definition: encoder.h:2692
CurrentFrame current_frame
Definition: av1_common_int.h:727
FeatureFlags features
Definition: av1_common_int.h:882
TRELLIS_OPT_TYPE optimize_seg_arr[8]
Definition: encoder.h:2154
YV12_BUFFER_CONFIG * source
Definition: encoder.h:2161
int current_qindex
The q index for the current coding block.
Definition: blockd.h:230
CommonModeInfoParams mi_params
Definition: av1_common_int.h:887
unsigned int source_variance
Variance of the source frame.
Definition: block.h:1228
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
void av1_nonrd_pick_inter_mode_sb(struct AV1_COMP *cpi, struct TileDataEnc *tile_data, struct macroblock *x, struct 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:2066
SVC svc
Definition: encoder.h:2636