FFmpeg
Macros | Functions
ps.c File Reference
#include "libavcodec/cbs_h266.h"
#include "libavutil/mem.h"
#include "libavutil/pixdesc.h"
#include "libavcodec/refstruct.h"
#include "data.h"
#include "ps.h"
#include "dec.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, int is_clvss)
 
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, int is_clvss)
 
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 651 of file 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 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 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 ps.c.

Referenced by sps_derive().

◆ sps_poc()

static void sps_poc ( VVCSPS sps)
static

Definition at line 130 of file ps.c.

Referenced by sps_derive().

◆ sps_inter()

static void sps_inter ( VVCSPS sps)
static

Definition at line 135 of file ps.c.

Referenced by sps_derive().

◆ sps_partition_constraints()

static void sps_partition_constraints ( VVCSPS sps)
static

Definition at line 151 of file ps.c.

Referenced by sps_derive().

◆ sps_ladf()

static void sps_ladf ( VVCSPS sps)
static

Definition at line 163 of file ps.c.

Referenced by sps_derive().

◆ sps_derive()

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

Definition at line 177 of file ps.c.

Referenced by sps_alloc().

◆ sps_free()

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

Definition at line 195 of file 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 ps.c.

Referenced by decode_sps().

◆ decode_sps()

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

Definition at line 222 of file ps.c.

Referenced by decode_ps().

◆ pps_chroma_qp_offset()

static void pps_chroma_qp_offset ( VVCPPS pps)
static

Definition at line 250 of file ps.c.

Referenced by pps_derive().

◆ pps_width_height()

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

Definition at line 262 of file ps.c.

Referenced by pps_derive().

◆ pps_bd()

static int pps_bd ( VVCPPS pps)
static

Definition at line 287 of file 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 318 of file 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 330 of file 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 336 of file 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 342 of file 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 360 of file 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 371 of file 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 395 of file 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 402 of file 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 413 of file 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 427 of file 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 437 of file 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 455 of file ps.c.

Referenced by pps_rect_slice().

◆ pps_rect_slice()

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

Definition at line 472 of file ps.c.

Referenced by pps_slice_map().

◆ pps_no_rect_slice()

static void pps_no_rect_slice ( VVCPPS pps)
static

Definition at line 493 of file ps.c.

Referenced by pps_slice_map().

◆ pps_slice_map()

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

Definition at line 506 of file 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 520 of file ps.c.

Referenced by pps_derive().

◆ pps_subpic()

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

Definition at line 528 of file ps.c.

Referenced by pps_derive().

◆ pps_derive()

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

Definition at line 546 of file ps.c.

Referenced by pps_alloc().

◆ pps_free()

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

Definition at line 567 of file ps.c.

Referenced by pps_alloc().

◆ pps_alloc()

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

Definition at line 580 of file ps.c.

Referenced by decode_pps().

◆ decode_pps()

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

Definition at line 601 of file ps.c.

Referenced by decode_ps().

◆ decode_ps()

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

Definition at line 622 of file 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 666 of file 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 679 of file 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 703 of file 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 712 of file 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 784 of file 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 791 of file 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 803 of file 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 820 of file ps.c.

Referenced by ff_vvc_decode_frame_ps().

◆ decode_recovery_flag()

static void decode_recovery_flag ( VVCContext s)
static

Definition at line 856 of file 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 864 of file 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 874 of file ps.c.

Referenced by frame_setup().

◆ ff_vvc_frame_ps_free()

void ff_vvc_frame_ps_free ( VVCFrameParamSets fps)

Definition at line 893 of file ps.c.

Referenced by frame_context_free().

◆ ff_vvc_ps_uninit()

void ff_vvc_ps_uninit ( VVCParamSets ps)

Definition at line 903 of file 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 917 of file 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 924 of file ps.c.

Referenced by alf_cc().

◆ alf_luma()

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

Definition at line 935 of file ps.c.

Referenced by alf_derive().

◆ alf_chroma()

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

Definition at line 951 of file ps.c.

Referenced by alf_derive().

◆ alf_cc()

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

Definition at line 967 of file ps.c.

Referenced by alf_derive().

◆ alf_derive()

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

Definition at line 986 of file 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 993 of file ps.c.

Referenced by ff_vvc_decode_aps().

◆ is_luma_list()

static int is_luma_list ( const int  id)
static

Definition at line 1006 of file ps.c.

Referenced by scaling_derive().

◆ derive_matrix_size()

static int derive_matrix_size ( const int  id)
static

Definition at line 1011 of file ps.c.

Referenced by scaling_derive().

◆ scaling_derive()

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

Definition at line 1017 of file 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 1079 of file 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 1092 of file 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 1115 of file 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 1148 of file 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 1174 of file ps.c.

Referenced by sh_derive().

◆ sh_inter()

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

Definition at line 1184 of file ps.c.

Referenced by sh_derive().

◆ sh_deblock_offsets()

static void sh_deblock_offsets ( VVCSH sh)
static

Definition at line 1194 of file 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 1208 of file 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 1244 of file ps.c.

Referenced by sh_derive().

◆ sh_derive()

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

Definition at line 1261 of file 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 1281 of file 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