FFmpeg
Loading...
Searching...
No Matches
cabac.h
Go to the documentation of this file.
1/*
2 * VVC CABAC decoder
3 *
4 * Copyright (C) 2022 Nuo Mi
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#ifndef AVCODEC_VVC_CABAC_H
24#define AVCODEC_VVC_CABAC_H
25
26#include "ctu.h"
27
28int ff_vvc_cabac_init(VVCLocalContext *lc, int ctu_idx, int rx, int ry);
29
30//sao
37
38//alf
39int ff_vvc_alf_ctb_flag(VVCLocalContext *lc, int rx, int ry, int c_idx);
43int ff_vvc_alf_ctb_filter_alt_idx(VVCLocalContext *lc, int c_idx, int num_chroma_filters);
44int ff_vvc_alf_ctb_cc_idc(VVCLocalContext *lc, int rx, int ry, int idx, int cc_filters_signalled);
45
46//coding_tree
47int ff_vvc_split_cu_flag(VVCLocalContext* lc, int x0, int y0, int cb_width, int cb_height,
48 int ch_type, const VVCAllowedSplit *a);
49VVCSplitMode ff_vvc_split_mode(VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height,
50 int cqt_depth, int mtt_depth, int ch_type, const VVCAllowedSplit *a);
51int ff_vvc_non_inter_flag(VVCLocalContext *lc, int x0, int y0, int ch_type);
52
53//coding unit
54int ff_vvc_pred_mode_flag(VVCLocalContext *lc, int is_chroma);
60int ff_vvc_cu_skip_flag(VVCLocalContext *lc, const uint8_t *cu_skip_flag);
61int ff_vvc_pred_mode_ibc_flag(VVCLocalContext *lc, int ch_type);
69
70//intra
71int ff_vvc_intra_mip_flag(VVCLocalContext *lc, const uint8_t *intra_mip_flag);
76enum IspType ff_vvc_isp_split_type(VVCLocalContext *lc, int intra_subpartitions_mode_flag);
78int ff_vvc_intra_luma_not_planar_flag(VVCLocalContext *lc, int intra_subpartitions_mode_flag);
86int ff_vvc_new_palette_entries(VVCLocalContext *lc, int bit_dpeth);
89bool ff_vvc_run_copy_flag(VVCLocalContext *lc, int prev_run_type, int prev_run_position, int cur_pos);
91int ff_vvc_palette_idx_idc(VVCLocalContext *lc, int max_palette_index, bool adjust);
93
94//inter
97int ff_vvc_merge_subblock_idx(VVCLocalContext *lc, int max_num_subblock_merge_cand);
98int ff_vvc_regular_merge_flag(VVCLocalContext *lc, int cu_skip_flag);
102void ff_vvc_mmvd_offset_coding(VVCLocalContext *lc, Mv *mvd_offset, int ph_mmvd_fullpel_only_flag);
105int ff_vvc_merge_gpm_idx(VVCLocalContext *lc, int idx);
110int ff_vvc_ref_idx_lx(VVCLocalContext *lc, uint8_t nb_refs);
116int ff_vvc_amvr_shift(VVCLocalContext *lc, int inter_affine_flag, PredMode pred_mode, int has_amvr_flag);
117int ff_vvc_bcw_idx(VVCLocalContext *lc, int no_backward_pred_flag);
118
119//transform
121int ff_vvc_tu_cr_coded_flag(VVCLocalContext *lc, int tu_cb_coded_flag);
126int ff_vvc_tu_joint_cbcr_residual_flag(VVCLocalContext *lc, int tu_cb_coded_flag, int tu_cr_coded_flag);
131
135
136#endif //AVCODEC_VVC_CABAC_H
static AVFormatContext * ctx
IspType
Definition ctu.h:121
VVCSplitMode
Definition ctu.h:127
#define max(a, b)
int a
PredMode
Definition hevcdec.h:105
PredFlag
Definition hevcdec.h:117
static int adjust(int x, int size)
Definition mobiclip.c:514
static int inc(int num, int period)
Definition perlin.c:34
Definition hevcdec.h:303
void ff_vvc_mmvd_offset_coding(VVCLocalContext *lc, Mv *mvd_offset, int ph_mmvd_fullpel_only_flag)
Definition cabac.c:1507
int ff_vvc_intra_bdpcm_chroma_dir_flag(VVCLocalContext *lc)
Definition cabac.c:1275
int ff_vvc_abs_mvd_greater0_flag(VVCLocalContext *lc)
Definition cabac.c:1619
int ff_vvc_end_of_slice_flag_decode(VVCLocalContext *lc)
Definition cabac.c:2563
int ff_vvc_palette_predictor_run(VVCLocalContext *lc, const int max)
Definition cabac.c:1392
int ff_vvc_palette_escape_val(VVCLocalContext *lc, const int max)
Definition cabac.c:1439
PredFlag ff_vvc_pred_flag(VVCLocalContext *lc, int is_b)
Definition cabac.c:1573
int ff_vvc_mmvd_merge_flag(VVCLocalContext *lc)
Definition cabac.c:1482
int ff_vvc_sao_offset_abs_decode(VVCLocalContext *lc)
Definition cabac.c:1040
int ff_vvc_sbt_quad_flag(VVCLocalContext *lc)
Definition cabac.c:2526
int ff_vvc_intra_bdpcm_luma_dir_flag(VVCLocalContext *lc)
Definition cabac.c:1265
int ff_vvc_cclm_mode_idx(VVCLocalContext *lc)
Definition cabac.c:1378
int ff_vvc_cabac_init(VVCLocalContext *lc, int ctu_idx, int rx, int ry)
Definition cabac.c:845
int ff_vvc_bcw_idx(VVCLocalContext *lc, int no_backward_pred_flag)
Definition cabac.c:1683
int ff_vvc_cu_skip_flag(VVCLocalContext *lc, const uint8_t *cu_skip_flag)
Definition cabac.c:1280
int ff_vvc_cclm_mode_flag(VVCLocalContext *lc)
Definition cabac.c:1373
int ff_vvc_end_of_tile_one_bit(VVCLocalContext *lc)
Definition cabac.c:2568
int ff_vvc_transform_skip_flag(VVCLocalContext *lc, int ctx)
Definition cabac.c:1820
int ff_vvc_end_of_subset_one_bit(VVCLocalContext *lc)
Definition cabac.c:2573
VVCSplitMode ff_vvc_split_mode(VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int cqt_depth, int mtt_depth, int ch_type, const VVCAllowedSplit *a)
Definition cabac.c:1200
int ff_vvc_alf_luma_fixed_filter_idx(VVCLocalContext *lc)
Definition cabac.c:1085
int ff_vvc_abs_mvd_minus2(VVCLocalContext *lc)
Definition cabac.c:1629
int ff_vvc_pred_mode_ibc_flag(VVCLocalContext *lc, int ch_type)
Definition cabac.c:1286
int ff_vvc_mmvd_cand_flag(VVCLocalContext *lc)
Definition cabac.c:1487
int ff_vvc_merge_gpm_partition_idx(VVCLocalContext *lc)
Definition cabac.c:1549
int ff_vvc_intra_bdpcm_luma_flag(VVCLocalContext *lc)
Definition cabac.c:1260
int ff_vvc_sao_offset_sign_decode(VVCLocalContext *lc)
Definition cabac.c:1050
int ff_vvc_alf_luma_prev_filter_idx(VVCLocalContext *lc)
Definition cabac.c:1080
int ff_vvc_sbt_pos_flag(VVCLocalContext *lc)
Definition cabac.c:2539
int ff_vvc_sao_type_idx_decode(VVCLocalContext *lc)
Definition cabac.c:1025
int ff_vvc_intra_subpartitions_mode_flag(VVCLocalContext *lc)
Definition cabac.c:1338
int ff_vvc_ciip_flag(VVCLocalContext *lc)
Definition cabac.c:1568
int ff_vvc_sym_mvd_flag(VVCLocalContext *lc)
Definition cabac.c:1599
int ff_vvc_alf_use_aps_flag(VVCLocalContext *lc)
Definition cabac.c:1075
int ff_vvc_intra_bdpcm_chroma_flag(VVCLocalContext *lc)
Definition cabac.c:1270
int ff_vvc_intra_luma_mpm_flag(VVCLocalContext *lc)
Definition cabac.c:1350
int ff_vvc_cu_chroma_qp_offset_idx(VVCLocalContext *lc)
Definition cabac.c:1761
int ff_vvc_cu_chroma_qp_offset_flag(VVCLocalContext *lc)
Definition cabac.c:1756
int ff_vvc_mvp_lx_flag(VVCLocalContext *lc)
Definition cabac.c:1639
int ff_vvc_intra_mip_mode(VVCLocalContext *lc)
Definition cabac.c:1319
int ff_vvc_mvd_sign_flag(VVCLocalContext *lc)
Definition cabac.c:1634
int ff_vvc_pred_mode_plt_flag(VVCLocalContext *lc)
Definition cabac.c:1255
int ff_vvc_cu_act_enabled_flag(VVCLocalContext *lc)
Definition cabac.c:1718
int ff_vvc_intra_luma_mpm_idx(VVCLocalContext *lc)
Definition cabac.c:1360
int ff_vvc_sbt_horizontal_flag(VVCLocalContext *lc)
Definition cabac.c:2531
int ff_vvc_merge_subblock_idx(VVCLocalContext *lc, int max_num_subblock_merge_cand)
Definition cabac.c:1466
bool ff_vvc_palette_escape_val_present_flag(VVCLocalContext *lc)
Definition cabac.c:1407
int ff_vvc_intra_luma_ref_idx(VVCLocalContext *lc)
Definition cabac.c:1328
int ff_vvc_tu_joint_cbcr_residual_flag(VVCLocalContext *lc, int tu_cb_coded_flag, int tu_cr_coded_flag)
Definition cabac.c:1815
int ff_vvc_sao_eo_class_decode(VVCLocalContext *lc)
Definition cabac.c:1055
int ff_vvc_sao_merge_flag_decode(VVCLocalContext *lc)
Definition cabac.c:1020
int ff_vvc_cu_coded_flag(VVCLocalContext *lc)
Definition cabac.c:2513
bool ff_vvc_run_copy_flag(VVCLocalContext *lc, int prev_run_type, int prev_run_position, int cur_pos)
Definition cabac.c:1417
int ff_vvc_cu_affine_type_flag(VVCLocalContext *lc)
Definition cabac.c:1594
int ff_vvc_pred_mode_flag(VVCLocalContext *lc, int is_chroma)
Definition cabac.c:1244
int ff_vvc_sbt_flag(VVCLocalContext *lc)
Definition cabac.c:2518
int ff_vvc_regular_merge_flag(VVCLocalContext *lc, int cu_skip_flag)
Definition cabac.c:1476
int ff_vvc_intra_chroma_pred_mode(VVCLocalContext *lc)
Definition cabac.c:1385
int ff_vvc_ref_idx_lx(VVCLocalContext *lc, uint8_t nb_refs)
Definition cabac.c:1604
int ff_vvc_intra_mip_flag(VVCLocalContext *lc, const uint8_t *intra_mip_flag)
Definition cabac.c:1306
bool ff_vvc_copy_above_palette_indices_flag(VVCLocalContext *lc)
Definition cabac.c:1429
int ff_vvc_split_cu_flag(VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int ch_type, const VVCAllowedSplit *a)
Definition cabac.c:1122
int ff_vvc_mts_idx(VVCLocalContext *lc)
Definition cabac.c:2553
int ff_vvc_residual_coding(VVCLocalContext *lc, TransformBlock *tb)
Definition cabac.c:2505
int ff_vvc_tu_cr_coded_flag(VVCLocalContext *lc, int tu_cb_coded_flag)
Definition cabac.c:1699
int ff_vvc_tu_cb_coded_flag(VVCLocalContext *lc)
Definition cabac.c:1694
int ff_vvc_merge_subblock_flag(VVCLocalContext *lc)
Definition cabac.c:1460
bool ff_vvc_palette_transpose_flag(VVCLocalContext *lc)
Definition cabac.c:1412
enum IspType ff_vvc_isp_split_type(VVCLocalContext *lc, int intra_subpartitions_mode_flag)
Definition cabac.c:1343
int ff_vvc_abs_mvd_greater1_flag(VVCLocalContext *lc)
Definition cabac.c:1624
int ff_vvc_non_inter_flag(VVCLocalContext *lc, int x0, int y0, int ch_type)
Definition cabac.c:1234
int ff_vvc_intra_luma_not_planar_flag(VVCLocalContext *lc, int intra_subpartitions_mode_flag)
Definition cabac.c:1355
int ff_vvc_sao_band_position_decode(VVCLocalContext *lc)
Definition cabac.c:1035
int ff_vvc_alf_ctb_filter_alt_idx(VVCLocalContext *lc, int c_idx, int num_chroma_filters)
Definition cabac.c:1090
int ff_vvc_tu_y_coded_flag(VVCLocalContext *lc)
Definition cabac.c:1704
int ff_vvc_intra_mip_transposed_flag(VVCLocalContext *lc)
Definition cabac.c:1314
int ff_vvc_num_signalled_palette_entries(VVCLocalContext *lc, const int max)
Definition cabac.c:1397
int ff_vvc_intra_luma_mpm_remainder(VVCLocalContext *lc)
Definition cabac.c:1368
int ff_vvc_new_palette_entries(VVCLocalContext *lc, int bit_dpeth)
Definition cabac.c:1402
int ff_vvc_amvr_shift(VVCLocalContext *lc, int inter_affine_flag, PredMode pred_mode, int has_amvr_flag)
Definition cabac.c:1660
int ff_vvc_alf_ctb_cc_idc(VVCLocalContext *lc, int rx, int ry, int idx, int cc_filters_signalled)
Definition cabac.c:1100
int ff_vvc_inter_affine_flag(VVCLocalContext *lc)
Definition cabac.c:1588
int ff_vvc_general_merge_flag(VVCLocalContext *lc)
Definition cabac.c:1444
int ff_vvc_cu_qp_delta_abs(VVCLocalContext *lc)
Definition cabac.c:1723
int ff_vvc_merge_gpm_idx(VVCLocalContext *lc, int idx)
Definition cabac.c:1554
int ff_vvc_lfnst_idx(VVCLocalContext *lc, int inc)
Definition cabac.c:2544
int ff_vvc_cu_qp_delta_sign_flag(VVCLocalContext *lc)
Definition cabac.c:1751
int ff_vvc_palette_idx_idc(VVCLocalContext *lc, int max_palette_index, bool adjust)
Definition cabac.c:1434
int ff_vvc_alf_ctb_flag(VVCLocalContext *lc, int rx, int ry, int c_idx)
Definition cabac.c:1060
int ff_vvc_merge_idx(VVCLocalContext *lc)
Definition cabac.c:1534