Libav
Macros | Functions | Variables
hevc_cabac.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/common.h"
#include "cabac_functions.h"
#include "hevc.h"

Go to the source code of this file.

Macros

#define CABAC_MAX_BIN   100
 
#define CNU   154
 
#define GET_CABAC(ctx)   get_cabac(&s->HEVClc.cc, &s->HEVClc.cabac_state[ctx])
 
#define LAST_SIG_COEFF(elem)
 

Functions

void ff_hevc_save_states (HEVCContext *s, int ctb_addr_ts)
 
static void load_states (HEVCContext *s)
 
static void cabac_reinit (HEVCLocalContext *lc)
 
static void cabac_init_decoder (HEVCContext *s)
 
static void cabac_init_state (HEVCContext *s)
 
void ff_hevc_cabac_init (HEVCContext *s, int ctb_addr_ts)
 
int ff_hevc_sao_merge_flag_decode (HEVCContext *s)
 
int ff_hevc_sao_type_idx_decode (HEVCContext *s)
 
int ff_hevc_sao_band_position_decode (HEVCContext *s)
 
int ff_hevc_sao_offset_abs_decode (HEVCContext *s)
 
int ff_hevc_sao_offset_sign_decode (HEVCContext *s)
 
int ff_hevc_sao_eo_class_decode (HEVCContext *s)
 
int ff_hevc_end_of_slice_flag_decode (HEVCContext *s)
 
int ff_hevc_cu_transquant_bypass_flag_decode (HEVCContext *s)
 
int ff_hevc_skip_flag_decode (HEVCContext *s, int x0, int y0, int x_cb, int y_cb)
 
int ff_hevc_cu_qp_delta_abs (HEVCContext *s)
 
int ff_hevc_cu_qp_delta_sign_flag (HEVCContext *s)
 
int ff_hevc_pred_mode_decode (HEVCContext *s)
 
int ff_hevc_split_coding_unit_flag_decode (HEVCContext *s, int ct_depth, int x0, int y0)
 
int ff_hevc_part_mode_decode (HEVCContext *s, int log2_cb_size)
 
int ff_hevc_pcm_flag_decode (HEVCContext *s)
 
int ff_hevc_prev_intra_luma_pred_flag_decode (HEVCContext *s)
 
int ff_hevc_mpm_idx_decode (HEVCContext *s)
 
int ff_hevc_rem_intra_luma_pred_mode_decode (HEVCContext *s)
 
int ff_hevc_intra_chroma_pred_mode_decode (HEVCContext *s)
 
int ff_hevc_merge_idx_decode (HEVCContext *s)
 
int ff_hevc_merge_flag_decode (HEVCContext *s)
 
int ff_hevc_inter_pred_idc_decode (HEVCContext *s, int nPbW, int nPbH)
 
int ff_hevc_ref_idx_lx_decode (HEVCContext *s, int num_ref_idx_lx)
 
int ff_hevc_mvp_lx_flag_decode (HEVCContext *s)
 
int ff_hevc_no_residual_syntax_flag_decode (HEVCContext *s)
 
int ff_hevc_abs_mvd_greater0_flag_decode (HEVCContext *s)
 
int ff_hevc_abs_mvd_greater1_flag_decode (HEVCContext *s)
 
int ff_hevc_mvd_decode (HEVCContext *s)
 
int ff_hevc_mvd_sign_flag_decode (HEVCContext *s)
 
int ff_hevc_split_transform_flag_decode (HEVCContext *s, int log2_trafo_size)
 
int ff_hevc_cbf_cb_cr_decode (HEVCContext *s, int trafo_depth)
 
int ff_hevc_cbf_luma_decode (HEVCContext *s, int trafo_depth)
 
int ff_hevc_transform_skip_flag_decode (HEVCContext *s, int c_idx)
 
int ff_hevc_last_significant_coeff_x_prefix_decode (HEVCContext *s, int c_idx, int log2_size)
 
int ff_hevc_last_significant_coeff_y_prefix_decode (HEVCContext *s, int c_idx, int log2_size)
 
int ff_hevc_last_significant_coeff_suffix_decode (HEVCContext *s, int last_significant_coeff_prefix)
 
int ff_hevc_significant_coeff_group_flag_decode (HEVCContext *s, int c_idx, int ctx_cg)
 
int ff_hevc_significant_coeff_flag_decode (HEVCContext *s, int c_idx, int x_c, int y_c, int log2_trafo_size, int scan_idx, int prev_sig)
 
int ff_hevc_coeff_abs_level_greater1_flag_decode (HEVCContext *s, int c_idx, int inc)
 
int ff_hevc_coeff_abs_level_greater2_flag_decode (HEVCContext *s, int c_idx, int inc)
 
int ff_hevc_coeff_abs_level_remaining (HEVCContext *s, int base_level, int rc_rice_param)
 
int ff_hevc_coeff_sign_flag (HEVCContext *s, uint8_t nb)
 

Variables

static av_unused const int8_t num_bins_in_se []
 number of bin by SyntaxElement. More...
 
static const int elem_offset [sizeof(num_bins_in_se)]
 Offset to ctxIdx 0 in init_values and states, indexed by SyntaxElement. More...
 
static const uint8_t init_values [3][HEVC_CONTEXTS]
 Indexed by init_type. More...
 

Macro Definition Documentation

§ CABAC_MAX_BIN

#define CABAC_MAX_BIN   100

§ CNU

#define CNU   154

Definition at line 130 of file hevc_cabac.c.

§ GET_CABAC

#define GET_CABAC (   ctx)    get_cabac(&s->HEVClc.cc, &s->HEVClc.cabac_state[ctx])

§ LAST_SIG_COEFF

#define LAST_SIG_COEFF (   elem)
Value:
int i = 0; \
int max = (log2_size << 1) - 1; \
int ctx_offset, ctx_shift; \
if (c_idx == 0) { \
ctx_offset = 3 * (log2_size - 2) + ((log2_size - 1) >> 2); \
ctx_shift = (log2_size + 1) >> 2; \
} else { \
ctx_offset = 15; \
ctx_shift = log2_size - 2; \
} \
while (i < max && \
GET_CABAC(elem_offset[elem] + (i >> ctx_shift) + ctx_offset)) \
i++; \
return i;
#define GET_CABAC(ctx)
Definition: hevc_cabac.c:415
static const int elem_offset[sizeof(num_bins_in_se)]
Offset to ctxIdx 0 in init_values and states, indexed by SyntaxElement.
Definition: hevc_cabac.c:84
if(ac->has_optimized_func)

Definition at line 722 of file hevc_cabac.c.

Referenced by ff_hevc_last_significant_coeff_x_prefix_decode(), and ff_hevc_last_significant_coeff_y_prefix_decode().

Function Documentation

§ ff_hevc_save_states()

void ff_hevc_save_states ( HEVCContext s,
int  ctb_addr_ts 
)

Definition at line 326 of file hevc_cabac.c.

Referenced by hls_slice_data().

§ load_states()

static void load_states ( HEVCContext s)
static

Definition at line 336 of file hevc_cabac.c.

Referenced by ff_hevc_cabac_init().

§ cabac_reinit()

static void cabac_reinit ( HEVCLocalContext lc)
static

Definition at line 341 of file hevc_cabac.c.

Referenced by ff_hevc_cabac_init().

§ cabac_init_decoder()

static void cabac_init_decoder ( HEVCContext s)
static

Definition at line 346 of file hevc_cabac.c.

Referenced by ff_hevc_cabac_init().

§ cabac_init_state()

static void cabac_init_state ( HEVCContext s)
static

Definition at line 356 of file hevc_cabac.c.

Referenced by ff_hevc_cabac_init().

§ ff_hevc_cabac_init()

void ff_hevc_cabac_init ( HEVCContext s,
int  ctb_addr_ts 
)

Definition at line 377 of file hevc_cabac.c.

Referenced by hls_slice_data().

§ ff_hevc_sao_merge_flag_decode()

int ff_hevc_sao_merge_flag_decode ( HEVCContext s)

Definition at line 417 of file hevc_cabac.c.

Referenced by hls_sao_param().

§ ff_hevc_sao_type_idx_decode()

int ff_hevc_sao_type_idx_decode ( HEVCContext s)

Definition at line 422 of file hevc_cabac.c.

Referenced by hls_sao_param().

§ ff_hevc_sao_band_position_decode()

int ff_hevc_sao_band_position_decode ( HEVCContext s)

Definition at line 432 of file hevc_cabac.c.

Referenced by hls_sao_param().

§ ff_hevc_sao_offset_abs_decode()

int ff_hevc_sao_offset_abs_decode ( HEVCContext s)

Definition at line 442 of file hevc_cabac.c.

Referenced by hls_sao_param().

§ ff_hevc_sao_offset_sign_decode()

int ff_hevc_sao_offset_sign_decode ( HEVCContext s)

Definition at line 452 of file hevc_cabac.c.

Referenced by hls_sao_param().

§ ff_hevc_sao_eo_class_decode()

int ff_hevc_sao_eo_class_decode ( HEVCContext s)

Definition at line 457 of file hevc_cabac.c.

Referenced by hls_sao_param().

§ ff_hevc_end_of_slice_flag_decode()

int ff_hevc_end_of_slice_flag_decode ( HEVCContext s)

Definition at line 464 of file hevc_cabac.c.

Referenced by hls_slice_data().

§ ff_hevc_cu_transquant_bypass_flag_decode()

int ff_hevc_cu_transquant_bypass_flag_decode ( HEVCContext s)

Definition at line 469 of file hevc_cabac.c.

Referenced by hls_coding_unit().

§ ff_hevc_skip_flag_decode()

int ff_hevc_skip_flag_decode ( HEVCContext s,
int  x0,
int  y0,
int  x_cb,
int  y_cb 
)

Definition at line 474 of file hevc_cabac.c.

Referenced by hls_coding_unit().

§ ff_hevc_cu_qp_delta_abs()

int ff_hevc_cu_qp_delta_abs ( HEVCContext s)

Definition at line 489 of file hevc_cabac.c.

Referenced by hls_transform_unit().

§ ff_hevc_cu_qp_delta_sign_flag()

int ff_hevc_cu_qp_delta_sign_flag ( HEVCContext s)

Definition at line 514 of file hevc_cabac.c.

Referenced by hls_transform_unit().

§ ff_hevc_pred_mode_decode()

int ff_hevc_pred_mode_decode ( HEVCContext s)

Definition at line 519 of file hevc_cabac.c.

Referenced by hls_coding_unit().

§ ff_hevc_split_coding_unit_flag_decode()

int ff_hevc_split_coding_unit_flag_decode ( HEVCContext s,
int  ct_depth,
int  x0,
int  y0 
)

Definition at line 524 of file hevc_cabac.c.

Referenced by hls_coding_quadtree().

§ ff_hevc_part_mode_decode()

int ff_hevc_part_mode_decode ( HEVCContext s,
int  log2_cb_size 
)

Definition at line 543 of file hevc_cabac.c.

Referenced by hls_coding_unit().

§ ff_hevc_pcm_flag_decode()

int ff_hevc_pcm_flag_decode ( HEVCContext s)

Definition at line 580 of file hevc_cabac.c.

Referenced by hls_coding_unit().

§ ff_hevc_prev_intra_luma_pred_flag_decode()

int ff_hevc_prev_intra_luma_pred_flag_decode ( HEVCContext s)

Definition at line 585 of file hevc_cabac.c.

Referenced by intra_prediction_unit().

§ ff_hevc_mpm_idx_decode()

int ff_hevc_mpm_idx_decode ( HEVCContext s)

Definition at line 590 of file hevc_cabac.c.

Referenced by intra_prediction_unit().

§ ff_hevc_rem_intra_luma_pred_mode_decode()

int ff_hevc_rem_intra_luma_pred_mode_decode ( HEVCContext s)

Definition at line 598 of file hevc_cabac.c.

Referenced by intra_prediction_unit().

§ ff_hevc_intra_chroma_pred_mode_decode()

int ff_hevc_intra_chroma_pred_mode_decode ( HEVCContext s)

Definition at line 608 of file hevc_cabac.c.

Referenced by intra_prediction_unit().

§ ff_hevc_merge_idx_decode()

int ff_hevc_merge_idx_decode ( HEVCContext s)

Definition at line 619 of file hevc_cabac.c.

Referenced by hls_prediction_unit().

§ ff_hevc_merge_flag_decode()

int ff_hevc_merge_flag_decode ( HEVCContext s)

Definition at line 630 of file hevc_cabac.c.

Referenced by hls_prediction_unit().

§ ff_hevc_inter_pred_idc_decode()

int ff_hevc_inter_pred_idc_decode ( HEVCContext s,
int  nPbW,
int  nPbH 
)

Definition at line 635 of file hevc_cabac.c.

Referenced by hls_prediction_unit().

§ ff_hevc_ref_idx_lx_decode()

int ff_hevc_ref_idx_lx_decode ( HEVCContext s,
int  num_ref_idx_lx 
)

Definition at line 645 of file hevc_cabac.c.

Referenced by hls_prediction_unit().

§ ff_hevc_mvp_lx_flag_decode()

int ff_hevc_mvp_lx_flag_decode ( HEVCContext s)

Definition at line 661 of file hevc_cabac.c.

Referenced by hls_prediction_unit().

§ ff_hevc_no_residual_syntax_flag_decode()

int ff_hevc_no_residual_syntax_flag_decode ( HEVCContext s)

Definition at line 666 of file hevc_cabac.c.

Referenced by hls_coding_unit().

§ ff_hevc_abs_mvd_greater0_flag_decode()

int ff_hevc_abs_mvd_greater0_flag_decode ( HEVCContext s)

Definition at line 671 of file hevc_cabac.c.

Referenced by hls_mvd_coding().

§ ff_hevc_abs_mvd_greater1_flag_decode()

int ff_hevc_abs_mvd_greater1_flag_decode ( HEVCContext s)

Definition at line 676 of file hevc_cabac.c.

Referenced by hls_mvd_coding().

§ ff_hevc_mvd_decode()

int ff_hevc_mvd_decode ( HEVCContext s)

Definition at line 681 of file hevc_cabac.c.

Referenced by hls_mvd_coding().

§ ff_hevc_mvd_sign_flag_decode()

int ff_hevc_mvd_sign_flag_decode ( HEVCContext s)

Definition at line 697 of file hevc_cabac.c.

Referenced by hls_mvd_coding().

§ ff_hevc_split_transform_flag_decode()

int ff_hevc_split_transform_flag_decode ( HEVCContext s,
int  log2_trafo_size 
)

Definition at line 702 of file hevc_cabac.c.

Referenced by hls_transform_tree().

§ ff_hevc_cbf_cb_cr_decode()

int ff_hevc_cbf_cb_cr_decode ( HEVCContext s,
int  trafo_depth 
)

Definition at line 707 of file hevc_cabac.c.

Referenced by hls_transform_tree().

§ ff_hevc_cbf_luma_decode()

int ff_hevc_cbf_luma_decode ( HEVCContext s,
int  trafo_depth 
)

Definition at line 712 of file hevc_cabac.c.

Referenced by hls_transform_tree().

§ ff_hevc_transform_skip_flag_decode()

int ff_hevc_transform_skip_flag_decode ( HEVCContext s,
int  c_idx 
)

Definition at line 717 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_last_significant_coeff_x_prefix_decode()

int ff_hevc_last_significant_coeff_x_prefix_decode ( HEVCContext s,
int  c_idx,
int  log2_size 
)

Definition at line 739 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_last_significant_coeff_y_prefix_decode()

int ff_hevc_last_significant_coeff_y_prefix_decode ( HEVCContext s,
int  c_idx,
int  log2_size 
)

Definition at line 745 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_last_significant_coeff_suffix_decode()

int ff_hevc_last_significant_coeff_suffix_decode ( HEVCContext s,
int  last_significant_coeff_prefix 
)

Definition at line 751 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_significant_coeff_group_flag_decode()

int ff_hevc_significant_coeff_group_flag_decode ( HEVCContext s,
int  c_idx,
int  ctx_cg 
)

Definition at line 763 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_significant_coeff_flag_decode()

int ff_hevc_significant_coeff_flag_decode ( HEVCContext s,
int  c_idx,
int  x_c,
int  y_c,
int  log2_trafo_size,
int  scan_idx,
int  prev_sig 
)

Definition at line 772 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_coeff_abs_level_greater1_flag_decode()

int ff_hevc_coeff_abs_level_greater1_flag_decode ( HEVCContext s,
int  c_idx,
int  inc 
)

Definition at line 822 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_coeff_abs_level_greater2_flag_decode()

int ff_hevc_coeff_abs_level_greater2_flag_decode ( HEVCContext s,
int  c_idx,
int  inc 
)

Definition at line 831 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_coeff_abs_level_remaining()

int ff_hevc_coeff_abs_level_remaining ( HEVCContext s,
int  base_level,
int  rc_rice_param 
)

Definition at line 839 of file hevc_cabac.c.

Referenced by hls_residual_coding().

§ ff_hevc_coeff_sign_flag()

int ff_hevc_coeff_sign_flag ( HEVCContext s,
uint8_t  nb 
)

Definition at line 864 of file hevc_cabac.c.

Referenced by hls_residual_coding().

Variable Documentation

§ num_bins_in_se

av_unused const int8_t num_bins_in_se[]
static

number of bin by SyntaxElement.

Definition at line 35 of file hevc_cabac.c.

§ elem_offset

const int elem_offset[sizeof(num_bins_in_se)]
static

§ init_values

const uint8_t init_values[3][HEVC_CONTEXTS]
static

Indexed by init_type.

Definition at line 134 of file hevc_cabac.c.

Referenced by cabac_init_state().