12#ifndef AOM_AV1_ENCODER_ENCODETXB_H_
13#define AOM_AV1_ENCODER_ENCODETXB_H_
15#include "config/aom_config.h"
17#include "av1/common/av1_common_int.h"
18#include "av1/common/blockd.h"
19#include "av1/common/txb_common.h"
22#include "aom_dsp/bitwriter.h"
28#define TXB_SKIP_CTX_MASK 15
29#define DC_SIGN_CTX_SHIFT 4
30#define DC_SIGN_CTX_MASK 3
32int av1_get_eob_pos_token(
const int eob,
int *
const extra);
90 aom_writer *w,
int blk_row,
int blk_col,
int plane,
91 int block, TX_SIZE tx_size);
111 aom_writer *w, BLOCK_SIZE bsize);
127 const SCAN_ORDER *scan_order,
int eob);
146 RUN_TYPE dry_run, BLOCK_SIZE bsize,
147 uint8_t allow_update_cdf);
185 int blk_col, BLOCK_SIZE plane_bsize,
186 TX_SIZE tx_size,
void *arg);
221 BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
void *arg);
255 const TXB_CTX *
const txb_ctx,
int plane,
257 const TX_SIZE txs_ctx = get_txsize_entropy_ctx(tx_size);
258 const PLANE_TYPE plane_type = get_plane_type(plane);
261 return coeff_costs_->
txb_skip_cost[txb_ctx->txb_skip_ctx][1];
266static const int plane_rd_mult[REF_TYPES][PLANE_TYPES] = {
Declares top-level encoder structures and functions.
uint8_t av1_get_txb_entropy_context(const tran_low_t *qcoeff, const SCAN_ORDER *scan_order, int eob)
Pack the context info of the current transform block into an uint8_t.
void av1_alloc_txb_buf(AV1_COMP *cpi)
Allocate the memory resources for all the macro blocks in the current coding frame.
void av1_write_intra_coeffs_mb(const AV1_COMMON *const cm, MACROBLOCK *x, aom_writer *w, BLOCK_SIZE bsize)
Write quantized coefficients of all transform blocks in an intra macroblock into the bitstream using ...
void av1_write_coeffs_txb(const AV1_COMMON *const cm, MACROBLOCK *const x, aom_writer *w, int blk_row, int blk_col, int plane, int block, TX_SIZE tx_size)
Write quantized coefficients in a transform block into bitstream using entropy coding.
void av1_record_txb_context(int plane, int block, int blk_row, int blk_col, BLOCK_SIZE plane_bsize, TX_SIZE tx_size, void *arg)
Update the entropy context related to coefficient coding for a transform block.
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...
static int av1_cost_skip_txb(const CoeffCosts *coeff_costs, const TXB_CTX *const txb_ctx, int plane, TX_SIZE tx_size)
Returns the entropy cost associated with skipping the current transform block.
Definition encodetxb.h:254
void av1_free_txb_buf(AV1_COMP *cpi)
Free the memory resources for all the macro blocks in the current coding frame.
void av1_update_and_record_txb_context(int plane, int block, int blk_row, int blk_col, BLOCK_SIZE plane_bsize, TX_SIZE tx_size, void *arg)
Update the probability model (cdf) and the entropy context related to coefficient coding for a transf...
CB_COEFF_BUFFER * av1_get_cb_coeff_buffer(const struct AV1_COMP *cpi, int mi_row, int mi_col)
Get the corresponding CB_COEFF_BUFFER of the current macro block.
Top level common structure used by both encoder and decoder.
Definition av1_common_int.h:757
Top level encoder structure.
Definition encoder.h:2870
Stores the transforms coefficients for the whole superblock.
Definition block.h:206
Holds the costs needed to encode the coefficients.
Definition block.h:806
LV_MAP_COEFF_COST coeff_costs[TX_SIZES][PLANE_TYPES]
Costs for coding the coefficients.
Definition block.h:808
Costs for encoding the coefficients within a level.
Definition block.h:173
int txb_skip_cost[13][2]
Cost to skip txfm for the current txfm block.
Definition block.h:175
Encoder's parameters related to the current coding block.
Definition block.h:878