AOMedia AV1 Codec
TxfmSearchInfo Struct Reference

Stores various encoding/search decisions related to txfm search. More...

#include <block.h>

Collaboration diagram for TxfmSearchInfo:

Data Fields

int skip_txfm
 Whether to skip transform and quantization on a partition block level.
 
uint8_t blk_skip [MAX_MIB_SIZE *MAX_MIB_SIZE]
 Whether to skip transform and quantization on a txfm block level. More...
 
uint8_t tx_type_map_ [MAX_MIB_SIZE *MAX_MIB_SIZE]
 Transform types inside the partition block. More...
 
TxbRdRecordstxb_rd_records
 Txfm hash records. More...
 
unsigned int txb_split_count
 Number of txb splits. More...
 

Detailed Description

Stores various encoding/search decisions related to txfm search.

This struct contains a cache of previous txfm results, and some buffers for the current txfm decision.

Field Documentation

◆ blk_skip

uint8_t TxfmSearchInfo::blk_skip[MAX_MIB_SIZE *MAX_MIB_SIZE]

Whether to skip transform and quantization on a txfm block level.

Skips transform and quantization on a transform block level inside the current partition block. Each element of this array is used as a bit-field. So for example, the we are skipping on the luma plane, then the last bit would be set to 1.

Referenced by av1_rd_pick_inter_mode(), av1_rd_pick_intra_mode_sb(), av1_rd_pick_intra_sby_mode(), av1_rd_pick_partition(), av1_search_palette_mode(), calc_rd_given_intra_angle(), handle_filter_intra_mode(), handle_inter_mode(), intra_block_yrd(), motion_mode_rd(), palette_rd_y(), rd_pick_filter_intra_sby(), rd_pick_intra_angle_sby(), rd_pick_intrabc_mode_sb(), and search_intra_modes_in_interframe().

◆ tx_type_map_

uint8_t TxfmSearchInfo::tx_type_map_[MAX_MIB_SIZE *MAX_MIB_SIZE]

Transform types inside the partition block.

Keeps a record of what kind of transform to use for each of the transform block inside the partition block.

Attention
The buffer here is never directly used. Instead, this just allocates the memory for MACROBLOCKD::tx_type_map during rdopt on the partition block. So if we need to save memory, we could move the allocation to pick_sb_mode instead.

Referenced by pick_sb_modes(), and pick_sb_modes_nonrd().

◆ txb_rd_records

TxbRdRecords* TxfmSearchInfo::txb_rd_records

Txfm hash records.

Hash records of the transform search results based on the residue. There are two main types here:

  • MB_RD_RECORD: records a whole partition block's inter-mode txfm result. Since this operates on the partition block level, this can give us a whole txfm partition tree.
  • TXB_RD_RECORD: records a txfm search result within a transform block itself. This operates on txb level only and only applies to square txfms.

◆ txb_split_count

unsigned int TxfmSearchInfo::txb_split_count

Number of txb splits.

Keep track of how many times we've used split tx partition for transform blocks. Somewhat misleadingly, this parameter doesn't actually keep track of the count of the current block. Instead, it's a cumulative count across of the whole frame. The main usage is that if txb_split_count is zero, then we can signal TX_MODE_LARGEST at frame level.

Referenced by encode_frame_internal().


The documentation for this struct was generated from the following file: