TUT HEVC Encoder
Loading...
Searching...
No Matches
cabac.h File Reference

Coding bins using CABAC.

#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)
 
#define CABAC_FBITS_UPDATE(cabac, ctx, val, bits, name)
 
#define CTX_STATE(ctx)
 
#define CTX_MPS(ctx)
 
#define CTX_UPDATE_LPS(ctx)
 
#define CTX_UPDATE_MPS(ctx)
 
#define CABAC_BIN(data, value, name)
 
#define CABAC_BINS_EP(data, value, bins, name)
 
#define CABAC_BIN_EP(data, value, name)
 

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 )
Value:
void kvz_cabac_encode_bin(cabac_data_t *data, uint32_t bin_value)
Definition cabac.c:104
static kvz_rc_data * data
Definition rate_control.c:48

◆ CABAC_BIN_EP

#define CABAC_BIN_EP ( data,
value,
name )
Value:
void kvz_cabac_encode_bin_ep(cabac_data_t *data, uint32_t bin_value)
Definition cabac.c:228

◆ CABAC_BINS_EP

#define CABAC_BINS_EP ( data,
value,
bins,
name )
Value:
kvz_cabac_encode_bins_ep((data), (value), (bins));
void kvz_cabac_encode_bins_ep(cabac_data_t *data, uint32_t bin_values, int num_bins)
Definition cabac.c:244

◆ 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

◆ CTX_ENTROPY_FBITS

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

◆ CTX_MPS

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

◆ CTX_STATE

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

◆ CTX_UPDATE_LPS

#define CTX_UPDATE_LPS ( ctx)
Value:
{ (ctx)->uc_state = kvz_g_auc_next_state_lps[ (ctx)->uc_state ]; }
const uint8_t kvz_g_auc_next_state_lps[128]
Definition cabac.c:52

◆ CTX_UPDATE_MPS

#define CTX_UPDATE_MPS ( ctx)
Value:
{ (ctx)->uc_state = kvz_g_auc_next_state_mps[ (ctx)->uc_state ]; }
const uint8_t kvz_g_auc_next_state_mps[128]
Definition cabac.c:40

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