TUT HEVC Encoder
Loading...
Searching...
No Matches
Data Structures | Macros | Functions | Variables
cabac.h File Reference

Coding bins using CABAC. More...

#include "global.h"
#include "bitstream.h"
Include dependency graph for cabac.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  cabac_ctx_t
 
struct  cabac_data_t
 

Macros

#define CTX_ENTROPY_FBITS(ctx, val)   kvz_f_entropy_bits[(ctx)->uc_state ^ (val)]
 
#define CABAC_FBITS_UPDATE(cabac, ctx, val, bits, name)
 
#define CTX_STATE(ctx)   ((ctx)->uc_state >> 1)
 
#define CTX_MPS(ctx)   ((ctx)->uc_state & 1)
 
#define CTX_UPDATE_LPS(ctx)   { (ctx)->uc_state = kvz_g_auc_next_state_lps[ (ctx)->uc_state ]; }
 
#define CTX_UPDATE_MPS(ctx)   { (ctx)->uc_state = kvz_g_auc_next_state_mps[ (ctx)->uc_state ]; }
 
#define CABAC_BIN(data, value, name)    kvz_cabac_encode_bin((data), (value));
 
#define CABAC_BINS_EP(data, value, bins, name)    kvz_cabac_encode_bins_ep((data), (value), (bins));
 
#define CABAC_BIN_EP(data, value, name)    kvz_cabac_encode_bin_ep((data), (value));
 

Functions

void kvz_cabac_start (cabac_data_t *data)
 Initialize struct cabac_data.
 
void kvz_cabac_encode_bin (cabac_data_t *data, uint32_t bin_value)
 
void kvz_cabac_encode_bin_ep (cabac_data_t *data, uint32_t bin_value)
 
void kvz_cabac_encode_bins_ep (cabac_data_t *data, uint32_t bin_values, int num_bins)
 
void kvz_cabac_encode_bin_trm (cabac_data_t *data, uint8_t bin_value)
 Encode terminating bin.
 
void kvz_cabac_write (cabac_data_t *data)
 
void kvz_cabac_finish (cabac_data_t *data)
 
int kvz_cabac_write_coeff_remain (cabac_data_t *cabac, uint32_t symbol, uint32_t r_param)
 Coding of coeff_abs_level_minus3.
 
void kvz_cabac_write_coeff_remain_encry (struct encoder_state_t *const state, cabac_data_t *const cabac, const uint32_t symbol, const uint32_t r_param, int32_t base_level)
 
uint32_t kvz_cabac_write_ep_ex_golomb (struct encoder_state_t *const state, cabac_data_t *data, uint32_t symbol, uint32_t count)
 
void kvz_cabac_write_unary_max_symbol (cabac_data_t *data, cabac_ctx_t *ctx, uint32_t symbol, int32_t offset, uint32_t max_symbol, double *bits_out)
 
void kvz_cabac_write_unary_max_symbol_ep (cabac_data_t *data, unsigned int symbol, unsigned int max_symbol)
 This can be used for Truncated Rice binarization with cRiceParam=0.
 

Variables

const uint8_t kvz_g_auc_next_state_mps [128]
 
const uint8_t kvz_g_auc_next_state_lps [128]
 
const uint8_t kvz_g_auc_lpst_table [64][4]
 
const uint8_t kvz_g_auc_renorm_table [32]
 
const float kvz_f_entropy_bits [128]
 

Macro Definition Documentation

◆ CABAC_BIN

#define CABAC_BIN (   data,
  value,
  name 
)     kvz_cabac_encode_bin((data), (value));

◆ CABAC_BIN_EP

#define CABAC_BIN_EP (   data,
  value,
  name 
)     kvz_cabac_encode_bin_ep((data), (value));

◆ CABAC_BINS_EP

#define CABAC_BINS_EP (   data,
  value,
  bins,
  name 
)     kvz_cabac_encode_bins_ep((data), (value), (bins));

◆ CABAC_FBITS_UPDATE

#define CABAC_FBITS_UPDATE (   cabac,
  ctx,
  val,
  bits,
  name 
)
Value:
do { \
if((cabac)->only_count) (bits) += kvz_f_entropy_bits[(ctx)->uc_state ^ (val)]; \
if((cabac)->update) {\
(cabac)->cur_ctx = ctx;\
CABAC_BIN((cabac), (val), (name));\
} \
} while(0)
const float kvz_f_entropy_bits[128]
Definition rdo.c:83
#define MAX_TILES_PER_DIM
Definition global.h:232

◆ CTX_ENTROPY_FBITS

#define CTX_ENTROPY_FBITS (   ctx,
  val 
)    kvz_f_entropy_bits[(ctx)->uc_state ^ (val)]

◆ CTX_MPS

#define CTX_MPS (   ctx)    ((ctx)->uc_state & 1)

◆ CTX_STATE

#define CTX_STATE (   ctx)    ((ctx)->uc_state >> 1)

◆ CTX_UPDATE_LPS

#define CTX_UPDATE_LPS (   ctx)    { (ctx)->uc_state = kvz_g_auc_next_state_lps[ (ctx)->uc_state ]; }

◆ CTX_UPDATE_MPS

#define CTX_UPDATE_MPS (   ctx)    { (ctx)->uc_state = kvz_g_auc_next_state_mps[ (ctx)->uc_state ]; }

Function Documentation

◆ kvz_cabac_encode_bin()

void kvz_cabac_encode_bin ( cabac_data_t data,
uint32_t  bin_value 
)
Here is the call graph for this function:

◆ kvz_cabac_encode_bin_ep()

void kvz_cabac_encode_bin_ep ( cabac_data_t data,
uint32_t  bin_value 
)
Here is the call graph for this function:

◆ kvz_cabac_encode_bin_trm()

void kvz_cabac_encode_bin_trm ( cabac_data_t *const  data,
const uint8_t  bin_value 
)
Parameters
binValuebin value
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kvz_cabac_encode_bins_ep()

void kvz_cabac_encode_bins_ep ( cabac_data_t data,
uint32_t  bin_values,
int  num_bins 
)
Here is the call graph for this function:

◆ kvz_cabac_finish()

void kvz_cabac_finish ( cabac_data_t data)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kvz_cabac_start()

void kvz_cabac_start ( cabac_data_t data)
Here is the caller graph for this function:

◆ kvz_cabac_write()

void kvz_cabac_write ( cabac_data_t data)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kvz_cabac_write_coeff_remain()

int kvz_cabac_write_coeff_remain ( cabac_data_t *const  cabac,
const uint32_t  symbol,
const uint32_t  r_param 
)
Parameters
symbolValue of coeff_abs_level_minus3.
r_paramReference to Rice parameter.
Here is the caller graph for this function:

◆ kvz_cabac_write_coeff_remain_encry()

void kvz_cabac_write_coeff_remain_encry ( struct encoder_state_t *const  state,
cabac_data_t *const  cabac,
const uint32_t  symbol,
const uint32_t  r_param,
int32_t  base_level 
)
Here is the caller graph for this function:

◆ kvz_cabac_write_ep_ex_golomb()

uint32_t kvz_cabac_write_ep_ex_golomb ( struct encoder_state_t *const  state,
cabac_data_t data,
uint32_t  symbol,
uint32_t  count 
)
Here is the caller graph for this function:

◆ kvz_cabac_write_unary_max_symbol()

void kvz_cabac_write_unary_max_symbol ( cabac_data_t data,
cabac_ctx_t ctx,
uint32_t  symbol,
int32_t  offset,
uint32_t  max_symbol,
double bits_out 
)
Here is the caller graph for this function:

◆ kvz_cabac_write_unary_max_symbol_ep()

void kvz_cabac_write_unary_max_symbol_ep ( cabac_data_t data,
unsigned int  symbol,
unsigned int  max_symbol 
)
Here is the caller graph for this function:

Variable Documentation

◆ kvz_f_entropy_bits

const float kvz_f_entropy_bits[128]
extern

◆ kvz_g_auc_lpst_table

const uint8_t kvz_g_auc_lpst_table[64][4]
extern

◆ kvz_g_auc_next_state_lps

const uint8_t kvz_g_auc_next_state_lps[128]
extern

◆ kvz_g_auc_next_state_mps

const uint8_t kvz_g_auc_next_state_mps[128]
extern

◆ kvz_g_auc_renorm_table

const uint8_t kvz_g_auc_renorm_table[32]
extern