FFmpeg
Macros | Functions
vvc_ps.c File Reference
#include "libavcodec/cbs_h266.h"
#include "libavutil/mem.h"
#include "libavutil/pixdesc.h"
#include "libavcodec/refstruct.h"
#include "vvc_data.h"
#include "vvc_ps.h"
#include "vvcdec.h"

Go to the source code of this file.

Macros

#define WEIGHT_TABLE(x)
 

Functions

static int sps_map_pixel_format (VVCSPS *sps, void *log_ctx)
 
static int sps_bit_depth (VVCSPS *sps, void *log_ctx)
 
static int sps_chroma_qp_table (VVCSPS *sps)
 
static void sps_poc (VVCSPS *sps)
 
static void sps_inter (VVCSPS *sps)
 
static void sps_partition_constraints (VVCSPS *sps)
 
static void sps_ladf (VVCSPS *sps)
 
static int sps_derive (VVCSPS *sps, void *log_ctx)
 
static void sps_free (FFRefStructOpaque opaque, void *obj)
 
static const VVCSPSsps_alloc (const H266RawSPS *rsps, void *log_ctx)
 
static int decode_sps (VVCParamSets *ps, const H266RawSPS *rsps, void *log_ctx)
 
static void pps_chroma_qp_offset (VVCPPS *pps)
 
static void pps_width_height (VVCPPS *pps, const VVCSPS *sps)
 
static int pps_bd (VVCPPS *pps)
 
static int next_tile_idx (int tile_idx, const int i, const H266RawPPS *r)
 
static void tile_xy (int *tile_x, int *tile_y, const int tile_idx, const VVCPPS *pps)
 
static void ctu_xy (int *rx, int *ry, const int tile_x, const int tile_y, const VVCPPS *pps)
 
static int ctu_rs (const int rx, const int ry, const VVCPPS *pps)
 
static int pps_add_ctus (VVCPPS *pps, int *off, const int rx, const int ry, const int w, const int h)
 
static void pps_single_slice_picture (VVCPPS *pps, int *off)
 
static void subpic_tiles (int *tile_x, int *tile_y, int *tile_x_end, int *tile_y_end, const VVCSPS *sps, const VVCPPS *pps, const int i)
 
static void pps_subpic_less_than_one_tile_slice (VVCPPS *pps, const VVCSPS *sps, const int i, const int tx, const int ty, int *off)
 
static void pps_subpic_one_or_more_tiles_slice (VVCPPS *pps, const int tile_x, const int tile_y, const int x_end, const int y_end, const int i, int *off)
 
static void pps_subpic_slice (VVCPPS *pps, const VVCSPS *sps, const int i, int *off)
 
static void pps_single_slice_per_subpic (VVCPPS *pps, const VVCSPS *sps, int *off)
 
static int pps_one_tile_slices (VVCPPS *pps, const int tile_idx, int i, int *off)
 
static void pps_multi_tiles_slice (VVCPPS *pps, const int tile_idx, const int i, int *off)
 
static void pps_rect_slice (VVCPPS *pps, const VVCSPS *sps)
 
static void pps_no_rect_slice (VVCPPS *pps)
 
static int pps_slice_map (VVCPPS *pps, const VVCSPS *sps)
 
static void pps_ref_wraparound_offset (VVCPPS *pps, const VVCSPS *sps)
 
static void pps_subpic (VVCPPS *pps, const VVCSPS *sps)
 
static int pps_derive (VVCPPS *pps, const VVCSPS *sps)
 
static void pps_free (FFRefStructOpaque opaque, void *obj)
 
static const VVCPPSpps_alloc (const H266RawPPS *rpps, const VVCSPS *sps)
 
static int decode_pps (VVCParamSets *ps, const H266RawPPS *rpps)
 
static int decode_ps (VVCParamSets *ps, const CodedBitstreamH266Context *h266, void *log_ctx)
 
static void pred_weight_table (PredWeightTable *w, const H266RawPredWeightTable *r)
 
static int ph_compute_poc (const H266RawPictureHeader *ph, const H266RawSPS *sps, const int poc_tid0, const int is_clvss)
 
static av_always_inline uint16_t lmcs_derive_lut_sample (uint16_t sample, uint16_t *pivot1, uint16_t *pivot2, uint16_t *scale_coeff, const int idx, const int max)
 
static int lmcs_derive_lut (VVCLMCS *lmcs, const H266RawAPS *rlmcs, const H266RawSPS *sps)
 
static int ph_max_num_subblock_merge_cand (const H266RawSPS *sps, const H266RawPictureHeader *ph)
 
static int ph_derive (VVCPH *ph, const H266RawSPS *sps, const H266RawPPS *pps, const int poc_tid0, const int is_clvss)
 
static int decode_ph (VVCFrameParamSets *fps, const H266RawPictureHeader *rph, void *rph_ref, const int poc_tid0, const int is_clvss)
 
static int decode_frame_ps (VVCFrameParamSets *fps, const VVCParamSets *ps, const CodedBitstreamH266Context *h266, const int poc_tid0, const int is_clvss)
 
static void decode_recovery_flag (VVCContext *s)
 
static void decode_recovery_poc (VVCContext *s, const VVCPH *ph)
 
int ff_vvc_decode_frame_ps (VVCFrameParamSets *fps, struct VVCContext *s)
 
void ff_vvc_frame_ps_free (VVCFrameParamSets *fps)
 
void ff_vvc_ps_uninit (VVCParamSets *ps)
 
static void alf_coeff (int16_t *coeff, const uint8_t *abs, const uint8_t *sign, const int size)
 
static void alf_coeff_cc (int16_t *coeff, const uint8_t *mapped_abs, const uint8_t *sign)
 
static void alf_luma (VVCALF *alf, const H266RawAPS *aps)
 
static void alf_chroma (VVCALF *alf, const H266RawAPS *aps)
 
static void alf_cc (VVCALF *alf, const H266RawAPS *aps)
 
static void alf_derive (VVCALF *alf, const H266RawAPS *aps)
 
static int aps_decode_alf (const VVCALF **alf, const H266RawAPS *aps)
 
static int is_luma_list (const int id)
 
static int derive_matrix_size (const int id)
 
static void scaling_derive (VVCScalingList *sl, const H266RawAPS *aps)
 
static int aps_decode_scaling (const VVCScalingList **scaling, const H266RawAPS *aps)
 
int ff_vvc_decode_aps (VVCParamSets *ps, const CodedBitstreamUnit *unit)
 
static int sh_alf_aps (const VVCSH *sh, const VVCFrameParamSets *fps)
 
static void sh_slice_address (VVCSH *sh, const H266RawSPS *sps, const VVCPPS *pps)
 
static void sh_qp_y (VVCSH *sh, const H266RawPPS *pps, const H266RawPictureHeader *ph)
 
static void sh_inter (VVCSH *sh, const H266RawSPS *sps, const H266RawPPS *pps)
 
static void sh_deblock_offsets (VVCSH *sh)
 
static void sh_partition_constraints (VVCSH *sh, const H266RawSPS *sps, const H266RawPictureHeader *ph)
 
static void sh_entry_points (VVCSH *sh, const H266RawSPS *sps, const VVCPPS *pps)
 
static int sh_derive (VVCSH *sh, const VVCFrameParamSets *fps)
 
int ff_vvc_decode_sh (VVCSH *sh, const VVCFrameParamSets *fps, const CodedBitstreamUnit *unit)
 

Macro Definition Documentation

◆ WEIGHT_TABLE

#define WEIGHT_TABLE (   x)
Value:
w->nb_weights[L##x] = r->num_weights_l##x; \
for (int i = 0; i < w->nb_weights[L##x]; i++) { \
w->weight_flag[L##x][LUMA][i] = r->luma_weight_l##x##_flag[i]; \
w->weight_flag[L##x][CHROMA][i] = r->chroma_weight_l##x##_flag[i]; \
w->weight[L##x][LUMA][i] = denom[LUMA] + r->delta_luma_weight_l##x[i]; \
w->offset[L##x][LUMA][i] = r->luma_offset_l##x[i]; \
for (int j = CB; j <= CR; j++) { \
w->weight[L##x][j][i] = denom[CHROMA] + r->delta_chroma_weight_l##x[i][j - 1]; \
w->offset[L##x][j][i] = 128 + r->delta_chroma_offset_l##x[i][j - 1]; \
w->offset[L##x][j][i] -= (128 * w->weight[L##x][j][i]) >> w->log2_denom[CHROMA]; \
w->offset[L##x][j][i] = av_clip_intp2(w->offset[L##x][j][i], 7); \
} \
} \

Definition at line 642 of file vvc_ps.c.

Function Documentation

◆ sps_map_pixel_format()

static int sps_map_pixel_format ( VVCSPS sps,
void *  log_ctx 
)
static

Definition at line 32 of file vvc_ps.c.

Referenced by sps_bit_depth().

◆ sps_bit_depth()

static int sps_bit_depth ( VVCSPS sps,
void *  log_ctx 
)
static

Definition at line 77 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_chroma_qp_table()

static int sps_chroma_qp_table ( VVCSPS sps)
static

Definition at line 88 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_poc()

static void sps_poc ( VVCSPS sps)
static

Definition at line 130 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_inter()

static void sps_inter ( VVCSPS sps)
static

Definition at line 135 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_partition_constraints()

static void sps_partition_constraints ( VVCSPS sps)
static

Definition at line 151 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_ladf()

static void sps_ladf ( VVCSPS sps)
static

Definition at line 163 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_derive()

static int sps_derive ( VVCSPS sps,
void *  log_ctx 
)
static

Definition at line 177 of file vvc_ps.c.

Referenced by sps_alloc().

◆ sps_free()

static void sps_free ( FFRefStructOpaque  opaque,
void *  obj 
)
static

Definition at line 195 of file vvc_ps.c.

Referenced by sps_alloc().

◆ sps_alloc()

static const VVCSPS* sps_alloc ( const H266RawSPS rsps,
void *  log_ctx 
)
static

Definition at line 201 of file vvc_ps.c.

Referenced by decode_sps().

◆ decode_sps()

static int decode_sps ( VVCParamSets ps,
const H266RawSPS rsps,
void *  log_ctx 
)
static

Definition at line 222 of file vvc_ps.c.

Referenced by decode_ps().

◆ pps_chroma_qp_offset()

static void pps_chroma_qp_offset ( VVCPPS pps)
static

Definition at line 241 of file vvc_ps.c.

Referenced by pps_derive().

◆ pps_width_height()

static void pps_width_height ( VVCPPS pps,
const VVCSPS sps 
)
static

Definition at line 253 of file vvc_ps.c.

Referenced by pps_derive().

◆ pps_bd()

static int pps_bd ( VVCPPS pps)
static

Definition at line 278 of file vvc_ps.c.

Referenced by pps_derive().

◆ next_tile_idx()

static int next_tile_idx ( int  tile_idx,
const int  i,
const H266RawPPS r 
)
static

Definition at line 309 of file vvc_ps.c.

Referenced by pps_rect_slice().

◆ tile_xy()

static void tile_xy ( int tile_x,
int tile_y,
const int  tile_idx,
const VVCPPS pps 
)
static

Definition at line 321 of file vvc_ps.c.

Referenced by pps_multi_tiles_slice(), and pps_one_tile_slices().

◆ ctu_xy()

static void ctu_xy ( int rx,
int ry,
const int  tile_x,
const int  tile_y,
const VVCPPS pps 
)
static

Definition at line 327 of file vvc_ps.c.

Referenced by pps_multi_tiles_slice(), pps_no_rect_slice(), and pps_one_tile_slices().

◆ ctu_rs()

static int ctu_rs ( const int  rx,
const int  ry,
const VVCPPS pps 
)
static

Definition at line 333 of file vvc_ps.c.

Referenced by pps_add_ctus().

◆ pps_add_ctus()

static int pps_add_ctus ( VVCPPS pps,
int off,
const int  rx,
const int  ry,
const int  w,
const int  h 
)
static

◆ pps_single_slice_picture()

static void pps_single_slice_picture ( VVCPPS pps,
int off 
)
static

Definition at line 351 of file vvc_ps.c.

Referenced by pps_single_slice_per_subpic().

◆ subpic_tiles()

static void subpic_tiles ( int tile_x,
int tile_y,
int tile_x_end,
int tile_y_end,
const VVCSPS sps,
const VVCPPS pps,
const int  i 
)
static

Definition at line 362 of file vvc_ps.c.

Referenced by pps_subpic_slice().

◆ pps_subpic_less_than_one_tile_slice()

static void pps_subpic_less_than_one_tile_slice ( VVCPPS pps,
const VVCSPS sps,
const int  i,
const int  tx,
const int  ty,
int off 
)
static

Definition at line 386 of file vvc_ps.c.

Referenced by pps_subpic_slice().

◆ pps_subpic_one_or_more_tiles_slice()

static void pps_subpic_one_or_more_tiles_slice ( VVCPPS pps,
const int  tile_x,
const int  tile_y,
const int  x_end,
const int  y_end,
const int  i,
int off 
)
static

Definition at line 393 of file vvc_ps.c.

Referenced by pps_subpic_slice().

◆ pps_subpic_slice()

static void pps_subpic_slice ( VVCPPS pps,
const VVCSPS sps,
const int  i,
int off 
)
static

Definition at line 404 of file vvc_ps.c.

Referenced by pps_single_slice_per_subpic().

◆ pps_single_slice_per_subpic()

static void pps_single_slice_per_subpic ( VVCPPS pps,
const VVCSPS sps,
int off 
)
static

Definition at line 418 of file vvc_ps.c.

Referenced by pps_rect_slice().

◆ pps_one_tile_slices()

static int pps_one_tile_slices ( VVCPPS pps,
const int  tile_idx,
int  i,
int off 
)
static

Definition at line 428 of file vvc_ps.c.

Referenced by pps_rect_slice().

◆ pps_multi_tiles_slice()

static void pps_multi_tiles_slice ( VVCPPS pps,
const int  tile_idx,
const int  i,
int off 
)
static

Definition at line 446 of file vvc_ps.c.

Referenced by pps_rect_slice().

◆ pps_rect_slice()

static void pps_rect_slice ( VVCPPS pps,
const VVCSPS sps 
)
static

Definition at line 463 of file vvc_ps.c.

Referenced by pps_slice_map().

◆ pps_no_rect_slice()

static void pps_no_rect_slice ( VVCPPS pps)
static

Definition at line 484 of file vvc_ps.c.

Referenced by pps_slice_map().

◆ pps_slice_map()

static int pps_slice_map ( VVCPPS pps,
const VVCSPS sps 
)
static

Definition at line 497 of file vvc_ps.c.

Referenced by pps_derive().

◆ pps_ref_wraparound_offset()

static void pps_ref_wraparound_offset ( VVCPPS pps,
const VVCSPS sps 
)
static

Definition at line 511 of file vvc_ps.c.

Referenced by pps_derive().

◆ pps_subpic()

static void pps_subpic ( VVCPPS pps,
const VVCSPS sps 
)
static

Definition at line 519 of file vvc_ps.c.

Referenced by pps_derive().

◆ pps_derive()

static int pps_derive ( VVCPPS pps,
const VVCSPS sps 
)
static

Definition at line 537 of file vvc_ps.c.

Referenced by pps_alloc().

◆ pps_free()

static void pps_free ( FFRefStructOpaque  opaque,
void *  obj 
)
static

Definition at line 558 of file vvc_ps.c.

Referenced by pps_alloc().

◆ pps_alloc()

static const VVCPPS* pps_alloc ( const H266RawPPS rpps,
const VVCSPS sps 
)
static

Definition at line 571 of file vvc_ps.c.

Referenced by decode_pps().

◆ decode_pps()

static int decode_pps ( VVCParamSets ps,
const H266RawPPS rpps 
)
static

Definition at line 592 of file vvc_ps.c.

Referenced by decode_ps().

◆ decode_ps()

static int decode_ps ( VVCParamSets ps,
const CodedBitstreamH266Context h266,
void *  log_ctx 
)
static

Definition at line 613 of file vvc_ps.c.

Referenced by ff_vvc_decode_frame_ps().

◆ pred_weight_table()

static void pred_weight_table ( PredWeightTable w,
const H266RawPredWeightTable r 
)
static

Definition at line 657 of file vvc_ps.c.

Referenced by ph_derive(), and sh_inter().

◆ ph_compute_poc()

static int ph_compute_poc ( const H266RawPictureHeader ph,
const H266RawSPS sps,
const int  poc_tid0,
const int  is_clvss 
)
static

Definition at line 670 of file vvc_ps.c.

Referenced by ph_derive().

◆ lmcs_derive_lut_sample()

static av_always_inline uint16_t lmcs_derive_lut_sample ( uint16_t  sample,
uint16_t *  pivot1,
uint16_t *  pivot2,
uint16_t *  scale_coeff,
const int  idx,
const int  max 
)
static

Definition at line 694 of file vvc_ps.c.

Referenced by lmcs_derive_lut().

◆ lmcs_derive_lut()

static int lmcs_derive_lut ( VVCLMCS lmcs,
const H266RawAPS rlmcs,
const H266RawSPS sps 
)
static

Definition at line 703 of file vvc_ps.c.

Referenced by decode_frame_ps().

◆ ph_max_num_subblock_merge_cand()

static int ph_max_num_subblock_merge_cand ( const H266RawSPS sps,
const H266RawPictureHeader ph 
)
static

Definition at line 775 of file vvc_ps.c.

Referenced by ph_derive().

◆ ph_derive()

static int ph_derive ( VVCPH ph,
const H266RawSPS sps,
const H266RawPPS pps,
const int  poc_tid0,
const int  is_clvss 
)
static

Definition at line 782 of file vvc_ps.c.

Referenced by decode_ph().

◆ decode_ph()

static int decode_ph ( VVCFrameParamSets fps,
const H266RawPictureHeader rph,
void *  rph_ref,
const int  poc_tid0,
const int  is_clvss 
)
static

Definition at line 794 of file vvc_ps.c.

Referenced by decode_frame_ps().

◆ decode_frame_ps()

static int decode_frame_ps ( VVCFrameParamSets fps,
const VVCParamSets ps,
const CodedBitstreamH266Context h266,
const int  poc_tid0,
const int  is_clvss 
)
static

Definition at line 811 of file vvc_ps.c.

Referenced by ff_vvc_decode_frame_ps().

◆ decode_recovery_flag()

static void decode_recovery_flag ( VVCContext s)
static

Definition at line 847 of file vvc_ps.c.

Referenced by ff_vvc_decode_frame_ps().

◆ decode_recovery_poc()

static void decode_recovery_poc ( VVCContext s,
const VVCPH ph 
)
static

Definition at line 855 of file vvc_ps.c.

Referenced by ff_vvc_decode_frame_ps().

◆ ff_vvc_decode_frame_ps()

int ff_vvc_decode_frame_ps ( VVCFrameParamSets fps,
struct VVCContext s 
)

Definition at line 865 of file vvc_ps.c.

Referenced by frame_setup().

◆ ff_vvc_frame_ps_free()

void ff_vvc_frame_ps_free ( VVCFrameParamSets fps)

Definition at line 881 of file vvc_ps.c.

Referenced by frame_context_free().

◆ ff_vvc_ps_uninit()

void ff_vvc_ps_uninit ( VVCParamSets ps)

Definition at line 891 of file vvc_ps.c.

Referenced by vvc_decode_free().

◆ alf_coeff()

static void alf_coeff ( int16_t *  coeff,
const uint8_t *  abs,
const uint8_t *  sign,
const int  size 
)
static

Definition at line 905 of file vvc_ps.c.

Referenced by alf_chroma(), and alf_luma().

◆ alf_coeff_cc()

static void alf_coeff_cc ( int16_t *  coeff,
const uint8_t *  mapped_abs,
const uint8_t *  sign 
)
static

Definition at line 912 of file vvc_ps.c.

Referenced by alf_cc().

◆ alf_luma()

static void alf_luma ( VVCALF alf,
const H266RawAPS aps 
)
static

Definition at line 923 of file vvc_ps.c.

Referenced by alf_derive().

◆ alf_chroma()

static void alf_chroma ( VVCALF alf,
const H266RawAPS aps 
)
static

Definition at line 939 of file vvc_ps.c.

Referenced by alf_derive().

◆ alf_cc()

static void alf_cc ( VVCALF alf,
const H266RawAPS aps 
)
static

Definition at line 955 of file vvc_ps.c.

Referenced by alf_derive().

◆ alf_derive()

static void alf_derive ( VVCALF alf,
const H266RawAPS aps 
)
static

Definition at line 974 of file vvc_ps.c.

Referenced by aps_decode_alf().

◆ aps_decode_alf()

static int aps_decode_alf ( const VVCALF **  alf,
const H266RawAPS aps 
)
static

Definition at line 981 of file vvc_ps.c.

Referenced by ff_vvc_decode_aps().

◆ is_luma_list()

static int is_luma_list ( const int  id)
static

Definition at line 994 of file vvc_ps.c.

Referenced by scaling_derive().

◆ derive_matrix_size()

static int derive_matrix_size ( const int  id)
static

Definition at line 999 of file vvc_ps.c.

Referenced by scaling_derive().

◆ scaling_derive()

static void scaling_derive ( VVCScalingList sl,
const H266RawAPS aps 
)
static

Definition at line 1005 of file vvc_ps.c.

Referenced by aps_decode_scaling().

◆ aps_decode_scaling()

static int aps_decode_scaling ( const VVCScalingList **  scaling,
const H266RawAPS aps 
)
static

Definition at line 1067 of file vvc_ps.c.

Referenced by ff_vvc_decode_aps().

◆ ff_vvc_decode_aps()

int ff_vvc_decode_aps ( VVCParamSets ps,
const CodedBitstreamUnit unit 
)

Definition at line 1080 of file vvc_ps.c.

Referenced by decode_nal_unit().

◆ sh_alf_aps()

static int sh_alf_aps ( const VVCSH sh,
const VVCFrameParamSets fps 
)
static

Definition at line 1103 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_slice_address()

static void sh_slice_address ( VVCSH sh,
const H266RawSPS sps,
const VVCPPS pps 
)
static

Definition at line 1136 of file vvc_ps.c.

Referenced by sh_derive(), and slice_header().

◆ sh_qp_y()

static void sh_qp_y ( VVCSH sh,
const H266RawPPS pps,
const H266RawPictureHeader ph 
)
static

Definition at line 1162 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_inter()

static void sh_inter ( VVCSH sh,
const H266RawSPS sps,
const H266RawPPS pps 
)
static

Definition at line 1172 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_deblock_offsets()

static void sh_deblock_offsets ( VVCSH sh)
static

Definition at line 1182 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_partition_constraints()

static void sh_partition_constraints ( VVCSH sh,
const H266RawSPS sps,
const H266RawPictureHeader ph 
)
static

Definition at line 1196 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_entry_points()

static void sh_entry_points ( VVCSH sh,
const H266RawSPS sps,
const VVCPPS pps 
)
static

Definition at line 1232 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_derive()

static int sh_derive ( VVCSH sh,
const VVCFrameParamSets fps 
)
static

Definition at line 1249 of file vvc_ps.c.

Referenced by ff_vvc_decode_sh().

◆ ff_vvc_decode_sh()

int ff_vvc_decode_sh ( VVCSH sh,
const VVCFrameParamSets fps,
const CodedBitstreamUnit unit 
)

Definition at line 1269 of file vvc_ps.c.

Referenced by slice_start().

CB
#define CB
Definition: hevc_filter.c:32
r
const char * r
Definition: vf_curves.c:127
w
uint8_t w
Definition: llviddspenc.c:38
av_clip_intp2
#define av_clip_intp2
Definition: common.h:120
CR
#define CR
Definition: hevc_filter.c:33
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
CHROMA
@ CHROMA
Definition: vf_waveform.c:49
L
#define L(x)
Definition: vpx_arith.h:36
LUMA
#define LUMA
Definition: hevc_filter.c:31