FFmpeg
Macros | Functions
vvc_ps.c File Reference
#include "libavcodec/cbs_h266.h"
#include "libavutil/imgutils.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 *ctu_x, int *ctu_y, const int tile_x, const int tile_y, const VVCPPS *pps)
 
static int ctu_rs (const int ctu_x, const int ctu_y, const VVCPPS *pps)
 
static int pps_add_ctus (VVCPPS *pps, int *off, const int ctu_x, const int ctu_y, const int w, const int h)
 
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)
 
static void pps_no_rect_slice (VVCPPS *pps)
 
static int pps_slice_map (VVCPPS *pps)
 
static void pps_ref_wraparound_offset (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 537 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 30 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 75 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 86 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_poc()

static void sps_poc ( VVCSPS sps)
static

Definition at line 128 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_inter()

static void sps_inter ( VVCSPS sps)
static

Definition at line 133 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_partition_constraints()

static void sps_partition_constraints ( VVCSPS sps)
static

Definition at line 149 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_ladf()

static void sps_ladf ( VVCSPS sps)
static

Definition at line 161 of file vvc_ps.c.

Referenced by sps_derive().

◆ sps_derive()

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

Definition at line 175 of file vvc_ps.c.

Referenced by sps_alloc().

◆ sps_free()

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

Definition at line 193 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 199 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 220 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 239 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 251 of file vvc_ps.c.

Referenced by pps_derive().

◆ pps_bd()

static int pps_bd ( VVCPPS pps)
static

Definition at line 276 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 304 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 316 of file vvc_ps.c.

Referenced by pps_multi_tiles_slice(), and pps_one_tile_slices().

◆ ctu_xy()

static void ctu_xy ( int ctu_x,
int ctu_y,
const int  tile_x,
const int  tile_y,
const VVCPPS pps 
)
static

Definition at line 322 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  ctu_x,
const int  ctu_y,
const VVCPPS pps 
)
static

Definition at line 328 of file vvc_ps.c.

Referenced by pps_add_ctus().

◆ pps_add_ctus()

static int pps_add_ctus ( VVCPPS pps,
int off,
const int  ctu_x,
const int  ctu_y,
const int  w,
const int  h 
)
static

Definition at line 333 of file vvc_ps.c.

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

◆ pps_one_tile_slices()

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

Definition at line 346 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 364 of file vvc_ps.c.

Referenced by pps_rect_slice().

◆ pps_rect_slice()

static void pps_rect_slice ( VVCPPS pps)
static

Definition at line 381 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 398 of file vvc_ps.c.

Referenced by pps_slice_map().

◆ pps_slice_map()

static int pps_slice_map ( VVCPPS pps)
static

Definition at line 411 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 425 of file vvc_ps.c.

Referenced by pps_derive().

◆ pps_derive()

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

Definition at line 433 of file vvc_ps.c.

Referenced by pps_alloc().

◆ pps_free()

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

Definition at line 453 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 466 of file vvc_ps.c.

Referenced by decode_pps().

◆ decode_pps()

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

Definition at line 487 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 508 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 552 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 565 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 589 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 598 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 670 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 677 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 689 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 706 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 742 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 750 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 760 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 776 of file vvc_ps.c.

Referenced by frame_context_free().

◆ ff_vvc_ps_uninit()

void ff_vvc_ps_uninit ( VVCParamSets ps)

Definition at line 786 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 800 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 807 of file vvc_ps.c.

Referenced by alf_cc().

◆ alf_luma()

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

Definition at line 818 of file vvc_ps.c.

Referenced by alf_derive().

◆ alf_chroma()

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

Definition at line 834 of file vvc_ps.c.

Referenced by alf_derive().

◆ alf_cc()

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

Definition at line 850 of file vvc_ps.c.

Referenced by alf_derive().

◆ alf_derive()

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

Definition at line 869 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 876 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 889 of file vvc_ps.c.

Referenced by scaling_derive().

◆ derive_matrix_size()

static int derive_matrix_size ( const int  id)
static

Definition at line 894 of file vvc_ps.c.

Referenced by scaling_derive().

◆ scaling_derive()

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

Definition at line 900 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 962 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 975 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 998 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 1031 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 1057 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 1067 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_deblock_offsets()

static void sh_deblock_offsets ( VVCSH sh)
static

Definition at line 1077 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 1091 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 1127 of file vvc_ps.c.

Referenced by sh_derive().

◆ sh_derive()

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

Definition at line 1144 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 1164 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:126
w
uint8_t w
Definition: llviddspenc.c:38
av_clip_intp2
#define av_clip_intp2
Definition: common.h:119
CR
#define CR
Definition: hevc_filter.c:33
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:255
CHROMA
@ CHROMA
Definition: vf_waveform.c:49
L
#define L(x)
Definition: vpx_arith.h:36
LUMA
#define LUMA
Definition: hevc_filter.c:31