122 const uint32_t r_param, int32_t base_level);
124 uint32_t symbol, uint32_t count);
126 uint32_t symbol, int32_t offset,
127 uint32_t max_symbol,
double* bits_out);
131#define CTX_ENTROPY_FBITS(ctx, val) kvz_f_entropy_bits[(ctx)->uc_state ^ (val)]
133#define CABAC_FBITS_UPDATE(cabac, ctx, val, bits, name) do { \
134 if((cabac)->only_count) (bits) += kvz_f_entropy_bits[(ctx)->uc_state ^ (val)]; \
135 if((cabac)->update) {\
136 (cabac)->cur_ctx = ctx;\
137 CABAC_BIN((cabac), (val), (name));\
142#define CTX_STATE(ctx) ((ctx)->uc_state >> 1)
143#define CTX_MPS(ctx) ((ctx)->uc_state & 1)
144#define CTX_UPDATE_LPS(ctx) { (ctx)->uc_state = kvz_g_auc_next_state_lps[ (ctx)->uc_state ]; }
145#define CTX_UPDATE_MPS(ctx) { (ctx)->uc_state = kvz_g_auc_next_state_mps[ (ctx)->uc_state ]; }
149 #define CABAC_BIN(data, value, name) { \
150 uint32_t prev_state = (data)->cur_ctx->uc_state; \
151 kvz_cabac_encode_bin((data), (value)); \
152 if(!(data)->only_count) printf("%s = %u, state = %u -> %u MPS = %u\n", \
153 (name), (uint32_t)(value), prev_state, (data)->cur_ctx->uc_state, CTX_MPS((data)->cur_ctx)); }
155 #define CABAC_BINS_EP(data, value, bins, name) { \
156 uint32_t prev_state = (data)->cur_ctx->uc_state; \
157 kvz_cabac_encode_bins_ep((data), (value), (bins)); \
158 if(!(data)->only_count) printf("%s = %u(%u bins), state = %u -> %u\n", \
159 (name), (uint32_t)(value), (bins), prev_state, (data)->cur_ctx->uc_state); }
161 #define CABAC_BIN_EP(data, value, name) { \
162 uint32_t prev_state = (data)->cur_ctx->uc_state; \
163 kvz_cabac_encode_bin_ep((data), (value)); \
164 if(!(data)->only_count) printf("%s = %u, state = %u -> %u\n", \
165 (name), (uint32_t)(value), prev_state, (data)->cur_ctx->uc_state); }
167 #define CABAC_BIN(data, value, name) \
168 kvz_cabac_encode_bin((data), (value));
169 #define CABAC_BINS_EP(data, value, bins, name) \
170 kvz_cabac_encode_bins_ep((data), (value), (bins));
171 #define CABAC_BIN_EP(data, value, name) \
172 kvz_cabac_encode_bin_ep((data), (value));
Appending bits into an Annex-B coded bitstream.
const uint8_t kvz_g_auc_lpst_table[64][4]
Definition cabac.c:64
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)
Definition cabac.c:303
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.
Definition cabac.c:526
void kvz_cabac_write(cabac_data_t *data)
Definition cabac.c:137
void kvz_cabac_encode_bin_ep(cabac_data_t *data, uint32_t bin_value)
Definition cabac.c:228
void kvz_cabac_encode_bins_ep(cabac_data_t *data, uint32_t bin_values, int num_bins)
Definition cabac.c:244
int kvz_cabac_write_coeff_remain(cabac_data_t *cabac, uint32_t symbol, uint32_t r_param)
Coding of coeff_abs_level_minus3.
Definition cabac.c:275
void kvz_cabac_encode_bin_trm(cabac_data_t *data, uint8_t bin_value)
Encode terminating bin.
Definition cabac.c:204
const uint8_t kvz_g_auc_next_state_lps[128]
Definition cabac.c:52
void kvz_cabac_encode_bin(cabac_data_t *data, uint32_t bin_value)
Definition cabac.c:104
void kvz_cabac_start(cabac_data_t *data)
Initialize struct cabac_data.
Definition cabac.c:90
const uint8_t kvz_g_auc_next_state_mps[128]
Definition cabac.c:40
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)
Definition cabac.c:498
uint32_t kvz_cabac_write_ep_ex_golomb(struct encoder_state_t *const state, cabac_data_t *data, uint32_t symbol, uint32_t count)
Definition cabac.c:556
const uint8_t kvz_g_auc_renorm_table[32]
Definition cabac.c:81
const float kvz_f_entropy_bits[128]
Definition rdo.c:83
void kvz_cabac_finish(cabac_data_t *data)
Definition cabac.c:173
Header that is included in every other header.
static kvz_rc_data * data
Definition rate_control.c:48
A stream of bits.
Definition bitstream.h:50
uint8_t uc_state
Definition cabac.h:50
int8_t only_count
Definition cabac.h:61
int32_t num_buffered_bytes
Definition cabac.h:59
cabac_ctx_t cu_qt_root_cbf_model
Definition cabac.h:97
cabac_ctx_t sao_merge_flag_model
Definition cabac.h:67
cabac_ctx_t cu_merge_flag_ext_model
Definition cabac.h:92
int8_t update
Definition cabac.h:62
cabac_ctx_t * cur_ctx
Definition cabac.h:55
bitstream_t * stream
Definition cabac.h:63
int32_t bits_left
Definition cabac.h:60
cabac_ctx_t intra_mode_model
intra mode context models
Definition cabac.h:70
cabac_ctx_t transform_skip_model_chroma
Definition cabac.h:99
cabac_ctx_t cu_merge_idx_ext_model
Definition cabac.h:91
uint32_t low
Definition cabac.h:56
uint32_t buffered_byte
Definition cabac.h:58
cabac_ctx_t cu_transquant_bypass
Definition cabac.h:93
uint32_t range
Definition cabac.h:57
cabac_ctx_t transform_skip_model_luma
Definition cabac.h:98
cabac_ctx_t sao_type_idx_model
Definition cabac.h:68
cabac_ctx_t cu_pred_mode_model
Definition cabac.h:89
Definition encoderstate.h:274