FFmpeg
|
#include "libavcodec/refstruct.h"
#include "vvc_cabac.h"
#include "vvc_ctu.h"
#include "vvc_inter.h"
#include "vvc_mvs.h"
Go to the source code of this file.
Macros | |
#define | PROF_TEMP_SIZE (PROF_BLOCK_SIZE) * sizeof(int16_t) |
#define | TAB_MSM(fc, depth, x, y) fc->tab.msm[(depth)][((y) >> 5) * fc->ps.pps->width32 + ((x) >> 5)] |
#define | TAB_ISPMF(fc, x, y) fc->tab.ispmf[((y) >> 6) * fc->ps.pps->width64 + ((x) >> 6)] |
#define | TRANSFORM_TREE(x, y) |
#define | TRANSFORM_UNIT(x, width, idx) |
#define | TRANSFORM_UNIT(y, height, idx) |
#define | SKIPPED_TRANSFORM_TREE(x, y) |
#define | CODING_TREE(x, idx) |
#define | CODING_TREE(y, idx) |
#define | CODING_TREE(x, w, sub_div, idx) |
#define | CODING_TREE(y, h, sub_div, idx) |
#define | CODING_TREE(x, y, idx) |
#define | DUAL_TREE(x, y) |
#define | CODING_TREE(tree_type) |
#define | SET_SAO(elem, value) |
Typedefs | |
typedef int(* | coding_tree_fn) (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, VVCTreeType tree_type, VVCModeType mode_type) |
Enumerations | |
enum | VVCModeType { MODE_TYPE_ALL, MODE_TYPE_INTER, MODE_TYPE_INTRA } |
Functions | |
static void | set_tb_pos (const VVCFrameContext *fc, const TransformBlock *tb) |
static void | set_tb_tab (uint8_t *tab, uint8_t v, const VVCFrameContext *fc, const TransformBlock *tb) |
static int | get_qp_y_pred (const VVCLocalContext *lc) |
static void | set_cb_tab (const VVCLocalContext *lc, uint8_t *tab, const uint8_t v) |
static int | set_qp_y (VVCLocalContext *lc, const int x0, const int y0, const int has_qp_delta) |
static void | set_qp_c_tab (const VVCLocalContext *lc, const TransformUnit *tu, const TransformBlock *tb) |
static void | set_qp_c (VVCLocalContext *lc) |
static TransformUnit * | alloc_tu (VVCFrameContext *fc, CodingUnit *cu) |
static TransformUnit * | add_tu (VVCFrameContext *fc, CodingUnit *cu, const int x0, const int y0, const int tu_width, const int tu_height) |
static TransformBlock * | add_tb (TransformUnit *tu, VVCLocalContext *lc, const int x0, const int y0, const int tb_width, const int tb_height, const int c_idx) |
static uint8_t | tu_y_coded_flag_decode (VVCLocalContext *lc, const int is_sbt_not_coded, const int sub_tu_index, const int is_isp, const int is_chroma_coded) |
static void | chroma_qp_offset_decode (VVCLocalContext *lc, const int is_128, const int is_chroma_coded) |
static int | hls_transform_unit (VVCLocalContext *lc, int x0, int y0, int tu_width, int tu_height, int sub_tu_index, int ch_type) |
static int | hls_transform_tree (VVCLocalContext *lc, int x0, int y0, int tu_width, int tu_height, int ch_type) |
static int | skipped_transform_tree (VVCLocalContext *lc, int x0, int y0, int tu_width, int tu_height) |
static void | can_split (const VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int mtt_depth, int depth_offset, int part_idx, VVCSplitMode last_split_mode, VVCTreeType tree_type, VVCModeType mode_type, VVCAllowedSplit *split) |
static int | get_num_intra_subpartitions (enum IspType isp_split_type, int cb_width, int cb_height) |
static int | get_cclm_enabled (const VVCLocalContext *lc, const int x0, const int y0) |
static int | less (const void *a, const void *b) |
static enum IntraPredMode | luma_intra_pred_mode (VVCLocalContext *lc, const int intra_subpartitions_mode_flag) |
static int | lfnst_idx_decode (VVCLocalContext *lc) |
static MtsIdx | mts_idx_decode (VVCLocalContext *lc) |
static enum IntraPredMode | derive_center_luma_intra_pred_mode (const VVCFrameContext *fc, const VVCSPS *sps, const VVCPPS *pps, const CodingUnit *cu) |
static void | derive_chroma_intra_pred_mode (VVCLocalContext *lc, const int cclm_mode_flag, const int cclm_mode_idx, const int intra_chroma_pred_mode) |
static void | intra_luma_pred_modes (VVCLocalContext *lc) |
static void | intra_chroma_pred_modes (VVCLocalContext *lc) |
static PredMode | pred_mode_decode (VVCLocalContext *lc, const VVCTreeType tree_type, const VVCModeType mode_type) |
static void | sbt_info (VVCLocalContext *lc, const VVCSPS *sps) |
static int | skipped_transform_tree_unit (VVCLocalContext *lc) |
static void | set_cb_pos (const VVCFrameContext *fc, const CodingUnit *cu) |
static CodingUnit * | alloc_cu (VVCLocalContext *lc, const int x0, const int y0) |
static CodingUnit * | add_cu (VVCLocalContext *lc, const int x0, const int y0, const int cb_width, const int cb_height, const int cqt_depth, const VVCTreeType tree_type) |
static void | set_cu_tabs (const VVCLocalContext *lc, const CodingUnit *cu) |
static void | derive_mmvd (const VVCLocalContext *lc, MvField *mvf, const Mv *mmvd_offset) |
static void | mvf_to_mi (const MvField *mvf, MotionInfo *mi) |
static void | mv_merge_refine_pred_flag (MvField *mvf, const int width, const int height) |
static void | merge_data_subblock (VVCLocalContext *lc) |
static void | merge_data_regular (VVCLocalContext *lc) |
static int | ciip_flag_decode (VVCLocalContext *lc, const int ciip_avaiable, const int gpm_avaiable, const int is_128) |
static void | merge_data_gpm (VVCLocalContext *lc) |
static void | merge_data_ciip (VVCLocalContext *lc) |
static void | merge_data_block (VVCLocalContext *lc) |
static void | merge_data_ibc (VVCLocalContext *lc) |
static int | hls_merge_data (VVCLocalContext *lc) |
static void | hls_mvd_coding (VVCLocalContext *lc, Mv *mvd) |
static int | bcw_idx_decode (VVCLocalContext *lc, const MotionInfo *mi, const int cb_width, const int cb_height) |
static int8_t | ref_idx_decode (VVCLocalContext *lc, const VVCSH *sh, const int sym_mvd_flag, const int lx) |
static int | mvds_decode (VVCLocalContext *lc, Mv mvds[2][MAX_CONTROL_POINTS], const int num_cp_mv, const int lx) |
static void | mvp_add_difference (MotionInfo *mi, const int num_cp_mv, const Mv mvds[2][MAX_CONTROL_POINTS], const int amvr_shift) |
static int | mvp_data_ibc (VVCLocalContext *lc) |
static int | mvp_data (VVCLocalContext *lc) |
static void | derive_dmvr_bdof_flag (const VVCLocalContext *lc, PredictionUnit *pu) |
static void | refine_regular_subblock (const VVCLocalContext *lc) |
static void | fill_dmvr_info (const VVCLocalContext *lc) |
static int | inter_data (VVCLocalContext *lc) |
static int | hls_coding_unit (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int cqt_depth, const VVCTreeType tree_type, VVCModeType mode_type) |
static int | derive_mode_type_condition (const VVCLocalContext *lc, const VVCSplitMode split, const int cb_width, const int cb_height, const VVCModeType mode_type_curr) |
static VVCModeType | mode_type_decode (VVCLocalContext *lc, const int x0, const int y0, const int cb_width, const int cb_height, const VVCSplitMode split, const int ch_type, const VVCModeType mode_type_curr) |
static int | hls_coding_tree (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, int part_idx, VVCSplitMode last_split_mode, VVCTreeType tree_type_curr, VVCModeType mode_type_curr) |
static int | coding_tree_btv (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, VVCTreeType tree_type, VVCModeType mode_type) |
static int | coding_tree_bth (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, VVCTreeType tree_type, VVCModeType mode_type) |
static int | coding_tree_ttv (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, VVCTreeType tree_type, VVCModeType mode_type) |
static int | coding_tree_tth (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, VVCTreeType tree_type, VVCModeType mode_type) |
static int | coding_tree_qt (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, VVCTreeType tree_type, VVCModeType mode_type) |
static int | dual_tree_implicit_qt_split (VVCLocalContext *lc, const int x0, const int y0, const int cb_size, const int cqt_depth) |
static void | hls_sao (VVCLocalContext *lc, const int rx, const int ry) |
static void | alf_params (VVCLocalContext *lc, const int rx, const int ry) |
static void | deblock_params (VVCLocalContext *lc, const int rx, const int ry) |
static int | hls_coding_tree_unit (VVCLocalContext *lc, const int x0, const int y0, const int ctu_idx, const int rx, const int ry) |
static int | has_inter_luma (const CodingUnit *cu) |
static int | pred_get_y (const int y0, const Mv *mv, const int height) |
static void | cu_get_max_y (const CodingUnit *cu, int max_y[2][VVC_MAX_REF_ENTRIES], const VVCFrameContext *fc) |
static void | ctu_get_pred (VVCLocalContext *lc, const int rs) |
int | ff_vvc_coding_tree_unit (VVCLocalContext *lc, const int ctu_idx, const int rs, const int rx, const int ry) |
parse a CTU More... | |
void | ff_vvc_decode_neighbour (VVCLocalContext *lc, const int x_ctb, const int y_ctb, const int rx, const int ry, const int rs) |
void | ff_vvc_set_neighbour_available (VVCLocalContext *lc, const int x0, const int y0, const int w, const int h) |
void | ff_vvc_ctu_free_cus (CTU *ctu) |
int | ff_vvc_get_qPy (const VVCFrameContext *fc, const int xc, const int yc) |
void | ff_vvc_ep_init_stat_coeff (EntryPoint *ep, const int bit_depth, const int persistent_rice_adaptation_enabled_flag) |
Variables | |
const static coding_tree_fn | coding_tree [] |
#define PROF_TEMP_SIZE (PROF_BLOCK_SIZE) * sizeof(int16_t) |
#define TRANSFORM_TREE | ( | x, | |
y | |||
) |
#define TRANSFORM_UNIT | ( | x, | |
width, | |||
idx | |||
) |
#define TRANSFORM_UNIT | ( | y, | |
height, | |||
idx | |||
) |
#define SKIPPED_TRANSFORM_TREE | ( | x, | |
y | |||
) |
#define CODING_TREE | ( | x, | |
idx | |||
) |
#define CODING_TREE | ( | y, | |
idx | |||
) |
#define CODING_TREE | ( | x, | |
w, | |||
sub_div, | |||
idx | |||
) |
#define CODING_TREE | ( | y, | |
h, | |||
sub_div, | |||
idx | |||
) |
#define CODING_TREE | ( | x, | |
y, | |||
idx | |||
) |
#define DUAL_TREE | ( | x, | |
y | |||
) |
#define CODING_TREE | ( | tree_type | ) |
#define SET_SAO | ( | elem, | |
value | |||
) |
typedef int(* coding_tree_fn) (VVCLocalContext *lc, int x0, int y0, int cb_width, int cb_height, int qg_on_y, int qg_on_c, int cb_sub_div, int cqt_depth, int mtt_depth, int depth_offset, VVCTreeType tree_type, VVCModeType mode_type) |
enum VVCModeType |
|
static |
Definition at line 41 of file vvc_ctu.c.
Referenced by hls_transform_unit(), and skipped_transform_tree().
|
static |
Definition at line 62 of file vvc_ctu.c.
Referenced by hls_transform_unit(), set_cu_tabs(), and set_qp_c_tab().
|
static |
Definition at line 77 of file vvc_ctu.c.
Referenced by set_qp_y().
|
static |
Definition at line 124 of file vvc_ctu.c.
Referenced by intra_luma_pred_modes(), merge_data_subblock(), mvp_data(), set_cu_tabs(), and set_qp_y().
|
static |
Definition at line 144 of file vvc_ctu.c.
Referenced by hls_transform_unit(), and skipped_transform_tree_unit().
|
static |
Definition at line 179 of file vvc_ctu.c.
Referenced by set_cu_tabs().
|
static |
Definition at line 187 of file vvc_ctu.c.
Referenced by hls_coding_unit(), and skipped_transform_tree_unit().
|
static |
|
static |
Definition at line 231 of file vvc_ctu.c.
Referenced by hls_transform_unit(), and skipped_transform_tree().
|
static |
Definition at line 249 of file vvc_ctu.c.
Referenced by hls_transform_unit(), and skipped_transform_tree().
|
static |
Definition at line 273 of file vvc_ctu.c.
Referenced by hls_transform_unit().
|
static |
Definition at line 293 of file vvc_ctu.c.
Referenced by hls_transform_unit().
|
static |
Definition at line 314 of file vvc_ctu.c.
Referenced by hls_transform_tree().
|
static |
Definition at line 406 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 482 of file vvc_ctu.c.
Referenced by skipped_transform_tree_unit().
|
static |
Definition at line 525 of file vvc_ctu.c.
Referenced by hls_coding_tree(), and hls_write_packet().
|
static |
Definition at line 624 of file vvc_ctu.c.
Referenced by intra_luma_pred_modes().
|
static |
Definition at line 633 of file vvc_ctu.c.
Referenced by intra_chroma_pred_modes().
|
static |
Definition at line 678 of file vvc_ctu.c.
Referenced by luma_intra_pred_mode().
|
static |
Definition at line 684 of file vvc_ctu.c.
Referenced by derive_chroma_intra_pred_mode(), and intra_luma_pred_modes().
|
static |
Definition at line 795 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 846 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 867 of file vvc_ctu.c.
Referenced by derive_chroma_intra_pred_mode().
|
static |
Definition at line 886 of file vvc_ctu.c.
Referenced by intra_chroma_pred_modes().
|
static |
Definition at line 951 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 1004 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 1036 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 1091 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 1130 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
|
static |
|
static |
Definition at line 1195 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 1232 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 1257 of file vvc_ctu.c.
Referenced by merge_data_regular().
|
static |
Definition at line 1298 of file vvc_ctu.c.
Referenced by merge_data_ciip(), and merge_data_regular().
Definition at line 1312 of file vvc_ctu.c.
Referenced by merge_data_ciip(), and merge_data_regular().
|
static |
Definition at line 1321 of file vvc_ctu.c.
Referenced by hls_merge_data().
|
static |
Definition at line 1336 of file vvc_ctu.c.
Referenced by merge_data_block().
|
static |
Definition at line 1366 of file vvc_ctu.c.
Referenced by merge_data_block().
|
static |
Definition at line 1378 of file vvc_ctu.c.
Referenced by merge_data_block().
|
static |
Definition at line 1396 of file vvc_ctu.c.
Referenced by merge_data_block().
|
static |
Definition at line 1417 of file vvc_ctu.c.
Referenced by hls_merge_data().
|
static |
Definition at line 1447 of file vvc_ctu.c.
Referenced by hls_merge_data().
|
static |
Definition at line 1463 of file vvc_ctu.c.
Referenced by inter_data().
|
static |
Definition at line 1485 of file vvc_ctu.c.
Referenced by mvds_decode(), and mvp_data_ibc().
|
static |
Definition at line 1509 of file vvc_ctu.c.
Referenced by mvp_data().
|
static |
Definition at line 1530 of file vvc_ctu.c.
Referenced by mvp_data().
|
static |
Definition at line 1542 of file vvc_ctu.c.
Referenced by mvp_data().
|
static |
Definition at line 1574 of file vvc_ctu.c.
Referenced by mvp_data().
|
static |
Definition at line 1589 of file vvc_ctu.c.
Referenced by inter_data().
|
static |
Definition at line 1616 of file vvc_ctu.c.
Referenced by inter_data().
|
static |
Definition at line 1685 of file vvc_ctu.c.
Referenced by refine_regular_subblock().
|
static |
Definition at line 1724 of file vvc_ctu.c.
Referenced by inter_data().
|
static |
Definition at line 1736 of file vvc_ctu.c.
Referenced by inter_data().
|
static |
Definition at line 1757 of file vvc_ctu.c.
Referenced by hls_coding_unit().
|
static |
Definition at line 1789 of file vvc_ctu.c.
Referenced by hls_coding_tree().
|
static |
Definition at line 1880 of file vvc_ctu.c.
Referenced by mode_type_decode().
|
static |
Definition at line 1902 of file vvc_ctu.c.
Referenced by hls_coding_tree().
|
static |
Definition at line 2084 of file vvc_ctu.c.
Referenced by hls_coding_tree_unit().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 2139 of file vvc_ctu.c.
Referenced by hls_coding_tree_unit().
|
static |
Definition at line 2201 of file vvc_ctu.c.
Referenced by hls_coding_tree_unit().
|
static |
Definition at line 2270 of file vvc_ctu.c.
Referenced by hls_coding_tree_unit().
|
static |
Definition at line 2316 of file vvc_ctu.c.
Referenced by hls_coding_tree_unit().
|
static |
Definition at line 2323 of file vvc_ctu.c.
Referenced by ff_vvc_coding_tree_unit().
|
static |
Definition at line 2371 of file vvc_ctu.c.
Referenced by ctu_get_pred().
Definition at line 2376 of file vvc_ctu.c.
Referenced by cu_get_max_y().
|
static |
Definition at line 2381 of file vvc_ctu.c.
Referenced by ctu_get_pred().
|
static |
Definition at line 2418 of file vvc_ctu.c.
Referenced by ff_vvc_coding_tree_unit().
void ff_vvc_decode_neighbour | ( | VVCLocalContext * | lc, |
const int | x_ctb, | ||
const int | y_ctb, | ||
const int | rx, | ||
const int | ry, | ||
const int | rs | ||
) |
Definition at line 2472 of file vvc_ctu.c.
Referenced by ff_vvc_coding_tree_unit(), ff_vvc_reconstruct(), run_alf(), run_deblock_h(), run_deblock_v(), and run_sao().
void ff_vvc_set_neighbour_available | ( | VVCLocalContext * | lc, |
const int | x0, | ||
const int | y0, | ||
const int | w, | ||
const int | h | ||
) |
Definition at line 2501 of file vvc_ctu.c.
Referenced by ff_vvc_affine_mvp(), ff_vvc_luma_mv_merge_gpm(), ff_vvc_luma_mv_merge_mode(), ff_vvc_mvp(), ff_vvc_sb_mv_merge_mode(), hls_coding_unit(), ibc_merge_candidates(), pred_regular_blk(), and predict_intra().
void ff_vvc_ctu_free_cus | ( | CTU * | ctu | ) |
Definition at line 2516 of file vvc_ctu.c.
Referenced by ff_vvc_reconstruct(), and free_cus().
int ff_vvc_get_qPy | ( | const VVCFrameContext * | fc, |
const int | xc, | ||
const int | yc | ||
) |
Definition at line 2536 of file vvc_ctu.c.
Referenced by get_qp_y(), and set_qp_c().
void ff_vvc_ep_init_stat_coeff | ( | EntryPoint * | ep, |
const int | bit_depth, | ||
const int | persistent_rice_adaptation_enabled_flag | ||
) |
Definition at line 2544 of file vvc_ctu.c.
Referenced by cabac_init_state(), and schedule_next_parse().
|
static |
Definition at line 2076 of file vvc_ctu.c.
Referenced by hls_coding_tree().