Go to the documentation of this file.
25 #ifndef AVCODEC_HEVC_DSP_H
26 #define AVCODEC_HEVC_DSP_H
32 #define MAX_PB_SIZE 64
53 void (*
dequant)(int16_t *coeffs, int16_t log2_size);
59 void (*
idct[4])(int16_t *coeffs,
int col_limit);
64 const int16_t *sao_offset_val,
int sao_left_class,
int width,
int height);
68 const int16_t *sao_offset_val,
int sao_eo_class,
int width,
int height);
71 const struct SAOParams *sao,
const int *borders,
int _width,
int _height,
int c_idx,
72 const uint8_t *vert_edge,
const uint8_t *horiz_edge,
const uint8_t *diag_edge);
79 int height,
int denom,
int wx,
int ox, intptr_t
mx, intptr_t
my,
int width);
86 int height,
int denom,
int wx0,
int wx1,
87 int ox0,
int ox1, intptr_t
mx, intptr_t
my,
int width);
94 int height,
int denom,
int wx,
int ox, intptr_t
mx, intptr_t
my,
int width);
100 int height,
int denom,
int wx0,
int ox0,
int wx1,
101 int ox1, intptr_t
mx, intptr_t
my,
int width);
105 const uint8_t *no_p,
const uint8_t *no_q);
108 const uint8_t *no_p,
const uint8_t *no_q);
110 const int32_t *tc,
const uint8_t *no_p,
const uint8_t *no_q);
112 const int32_t *tc,
const uint8_t *no_p,
const uint8_t *no_q);
115 const uint8_t *no_p,
const uint8_t *no_q);
118 const uint8_t *no_p,
const uint8_t *no_q);
120 const int32_t *tc,
const uint8_t *no_p,
121 const uint8_t *no_q);
123 const int32_t *tc,
const uint8_t *no_p,
124 const uint8_t *no_q);
void(* hevc_v_loop_filter_luma)(uint8_t *pix, ptrdiff_t stride, int beta, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
void(* hevc_v_loop_filter_chroma)(uint8_t *pix, ptrdiff_t stride, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
void(* hevc_h_loop_filter_luma)(uint8_t *pix, ptrdiff_t stride, int beta, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
void(* idct[4])(int16_t *coeffs, int col_limit)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t const uint8_t * src
void(* hevc_v_loop_filter_luma_c)(uint8_t *pix, ptrdiff_t stride, int beta, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
int offset_sign[3][4]
sao_offset_sign
uint8_t ptrdiff_t const uint8_t ptrdiff_t int height
static void bit_depth(AudioStatsContext *s, const uint64_t *const mask, uint8_t *depth)
uint8_t ptrdiff_t const uint8_t * _src
void(* put_hevc_epel_bi_w[10][2][2])(uint8_t *dst, ptrdiff_t dststride, const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2, int height, int denom, int wx0, int ox0, int wx1, int ox1, intptr_t mx, intptr_t my, int width)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t mx
void ff_hevc_dsp_init_x86(HEVCDSPContext *c, const int bit_depth)
void ff_hevc_dsp_init_aarch64(HEVCDSPContext *c, const int bit_depth)
const int8_t ff_hevc_qpel_filters[4][16]
void ff_hevc_dsp_init_loongarch(HEVCDSPContext *c, const int bit_depth)
void(* dequant)(int16_t *coeffs, int16_t log2_size)
void(* put_hevc_qpel_bi_w[10][2][2])(uint8_t *dst, ptrdiff_t dststride, const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
uint8_t ptrdiff_t const uint8_t ptrdiff_t _srcstride
void ff_hevc_dsp_init_arm(HEVCDSPContext *c, const int bit_depth)
void(* transform_4x4_luma)(int16_t *coeffs)
const int8_t ff_hevc_epel_filters[8][4]
ff_hevc_.pel_filters[0] are dummies to simplify array addressing
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t my
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t const uint8_t ptrdiff_t srcstride
void(* sao_edge_filter[5])(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride_dst, const int16_t *sao_offset_val, int sao_eo_class, int width, int height)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int width
void(* put_hevc_qpel_uni_w[10][2][2])(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
void(* put_hevc_epel[10][2][2])(int16_t *dst, const uint8_t *src, ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width)
int offset_abs[3][4]
sao_offset_abs
void(* sao_edge_restore[2])(uint8_t *_dst, const uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, const struct SAOParams *sao, const int *borders, int _width, int _height, int c_idx, const uint8_t *vert_edge, const uint8_t *horiz_edge, const uint8_t *diag_edge)
void(* put_hevc_qpel_uni[10][2][2])(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width)
uint8_t ptrdiff_t _dststride
void(* put_hevc_qpel[10][2][2])(int16_t *dst, const uint8_t *src, ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width)
void(* transform_rdpcm)(int16_t *coeffs, int16_t log2_size, int mode)
void(* sao_band_filter[5])(uint8_t *_dst, const uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, const int16_t *sao_offset_val, int sao_left_class, int width, int height)
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
int16_t offset_val[3][5]
SaoOffsetVal.
void(* put_hevc_epel_bi[10][2][2])(uint8_t *dst, ptrdiff_t dststride, const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
void(* hevc_h_loop_filter_chroma)(uint8_t *pix, ptrdiff_t stride, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
void(* put_hevc_qpel_bi[10][2][2])(uint8_t *dst, ptrdiff_t dststride, const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
void(* put_hevc_epel_uni[10][2][2])(uint8_t *dst, ptrdiff_t dststride, const uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
int eo_class[3]
sao_eo_class
void(* put_hevc_epel_uni_w[10][2][2])(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
void(* hevc_h_loop_filter_chroma_c)(uint8_t *pix, ptrdiff_t stride, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
uint8_t type_idx[3]
sao_type_idx
void(* idct_dc[4])(int16_t *coeffs)
void(* hevc_h_loop_filter_luma_c)(uint8_t *pix, ptrdiff_t stride, int beta, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
void(* hevc_v_loop_filter_chroma_c)(uint8_t *pix, ptrdiff_t stride, const int32_t *tc, const uint8_t *no_p, const uint8_t *no_q)
void ff_hevc_dsp_init(HEVCDSPContext *hpc, int bit_depth)
void ff_hevc_dsp_init_ppc(HEVCDSPContext *c, const int bit_depth)
uint8_t band_position[3]
sao_band_position
void(* put_pcm)(uint8_t *_dst, ptrdiff_t _stride, int width, int height, struct GetBitContext *gb, int pcm_bit_depth)
void(* add_residual[4])(uint8_t *dst, const int16_t *res, ptrdiff_t stride)
void ff_hevc_dsp_init_mips(HEVCDSPContext *c, const int bit_depth)