28 ptrdiff_t stride_dst, ptrdiff_t stride_src,
29 int16_t *sao_offset_val,
int sao_left_class,
72 #define PUT_PIXELS(name) \ 73 void name(int16_t *dst, uint8_t *src, \ 74 ptrdiff_t srcstride, int height, \ 75 intptr_t mx, intptr_t my, int width) 91 int width,
int height, int16_t* src2, ptrdiff_t src2stride);
99 #define QPEL_FUNC(name) \ 100 void name(int16_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, \ 101 int height, int width) 120 #define QPEL_FUNC_UW_PIX(name) \ 121 void name(uint8_t *dst, ptrdiff_t dststride, uint8_t *_src, ptrdiff_t _srcstride, \ 122 int height, intptr_t mx, intptr_t my, int width); 130 #undef QPEL_FUNC_UW_PIX 132 #define QPEL_FUNC_UW(name) \ 133 void name(uint8_t *dst, ptrdiff_t dststride, uint8_t *_src, ptrdiff_t _srcstride, \ 134 int width, int height, int16_t* src2, ptrdiff_t src2stride); 156 ptrdiff_t stride_dst, ptrdiff_t stride_src,
157 int16_t *sao_offset_val,
int sao_left_class,
164 for (k = 0; k < 4; k++) {
165 offset_table[(k + sao_left_class) & 31] = sao_offset_val[k + 1];
172 int a_stride,
int b_stride, int16_t *sao_offset_val,
uint8_t *edge_idx);
176 static uint8_t edge_idx[] = { 1, 2, 0, 3, 4 };
177 static const int8_t
pos[4][2][2] = {
178 { { -1, 0 }, { 1, 0 } },
179 { { 0, -1 }, { 0, 1 } },
180 { { -1, -1 }, { 1, 1 } },
181 { { 1, -1 }, { -1, 1 } },
185 int a_stride, b_stride;
188 a_stride = pos[eo][0][0] + pos[eo][0][1] * stride_src;
189 b_stride = pos[eo][1][0] + pos[eo][1][1] * stride_src;
214 if (bit_depth == 8) {
273 for (x = 0; x < 10; x++) {
304 if (bit_depth == 10) {
void ff_hevc_idct_8x8_10_neon(int16_t *coeffs, int col_limit)
void ff_hevc_idct_8x8_dc_10_neon(int16_t *coeffs)
void(* hevc_v_loop_filter_chroma)(uint8_t *pix, ptrdiff_t stride, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
void(* hevc_h_loop_filter_luma)(uint8_t *pix, ptrdiff_t stride, int beta, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
static void(* put_hevc_qpel_neon[4][4])(int16_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int height, int width)
void ff_hevc_h_loop_filter_chroma_neon(uint8_t *_pix, ptrdiff_t _stride, int *_tc, uint8_t *_no_p, uint8_t *_no_q)
void ff_hevc_idct_4x4_8_neon(int16_t *coeffs, int col_limit)
Macro definitions for various function/variable attributes.
void(* idct[4])(int16_t *coeffs, int col_limit)
void ff_hevc_idct_4x4_10_neon(int16_t *coeffs, int col_limit)
void ff_hevc_sao_edge_filter_neon_8(uint8_t *dst, uint8_t *src, ptrdiff_t stride_dst, ptrdiff_t stride_src, int width, int height, int a_stride, int b_stride, int16_t *sao_offset_val, uint8_t *edge_idx)
void ff_hevc_add_residual_4x4_10_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
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
void ff_hevc_put_qpel_bi_neon_wrapper(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
void ff_hevc_put_qpel_neon_wrapper(int16_t *dst, uint8_t *src, ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width)
void ff_hevc_idct_4x4_dc_10_neon(int16_t *coeffs)
void ff_hevc_idct_16x16_10_neon(int16_t *coeffs, int col_limit)
void ff_hevc_idct_4x4_dc_8_neon(int16_t *coeffs)
void(* put_hevc_qpel[10][2][2])(int16_t *dst, uint8_t *src, ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width)
void ff_hevc_transform_luma_4x4_neon_8(int16_t *coeffs)
void ff_hevc_v_loop_filter_luma_neon(uint8_t *_pix, ptrdiff_t _stride, int _beta, int *_tc, uint8_t *_no_p, uint8_t *_no_q)
void ff_hevc_idct_32x32_dc_10_neon(int16_t *coeffs)
void ff_hevc_add_residual_8x8_8_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
void(* sao_edge_filter[5])(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, int sao_eo_class, int width, int height)
void ff_hevc_idct_32x32_10_neon(int16_t *coeffs, int col_limit)
void ff_hevc_sao_edge_filter_neon_8_wrapper(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, int eo, int width, int height)
static void(* put_hevc_qpel_uw_neon[4][4])(uint8_t *dst, ptrdiff_t dststride, uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int16_t *src2, ptrdiff_t src2stride)
void ff_hevc_idct_16x16_dc_8_neon(int16_t *coeffs)
void ff_hevc_sao_band_filter_neon_8_wrapper(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, ptrdiff_t stride_src, int16_t *sao_offset_val, int sao_left_class, int width, int height)
void ff_hevc_idct_16x16_8_neon(int16_t *coeffs, int col_limit)
void ff_hevc_v_loop_filter_chroma_neon(uint8_t *_pix, ptrdiff_t _stride, int *_tc, uint8_t *_no_p, uint8_t *_no_q)
void ff_hevc_add_residual_32x32_8_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
static void bit_depth(AudioStatsContext *s, uint64_t mask, uint64_t imask, AVRational *depth)
void(* idct_dc[4])(int16_t *coeffs)
void(* put_hevc_qpel_bi[10][2][2])(uint8_t *dst, ptrdiff_t dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
void ff_hevc_idct_8x8_8_neon(int16_t *coeffs, int col_limit)
void ff_hevc_add_residual_16x16_10_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
void(* hevc_v_loop_filter_luma)(uint8_t *pix, ptrdiff_t stride, int beta, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
void(* sao_band_filter[5])(uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, int16_t *sao_offset_val, int sao_left_class, int width, int height)
void ff_hevc_add_residual_4x4_8_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
Libavcodec external API header.
void ff_hevc_add_residual_8x8_10_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
void ff_hevc_sao_band_filter_neon_8(uint8_t *dst, uint8_t *src, ptrdiff_t stride_dst, ptrdiff_t stride_src, int width, int height, int16_t *offset_table)
void(* transform_4x4_luma)(int16_t *coeffs)
void ff_hevc_idct_32x32_8_neon(int16_t *coeffs, int col_limit)
void ff_hevc_idct_8x8_dc_8_neon(int16_t *coeffs)
#define QPEL_FUNC_UW(name)
void ff_hevc_add_residual_16x16_8_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
void(* add_residual[4])(uint8_t *dst, int16_t *res, ptrdiff_t stride)
void(* put_hevc_qpel_uni[10][2][2])(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width)
void ff_hevc_idct_32x32_dc_8_neon(int16_t *coeffs)
void(* hevc_h_loop_filter_chroma)(uint8_t *pix, ptrdiff_t stride, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
GLint GLenum GLboolean GLsizei stride
void ff_hevc_add_residual_32x32_10_neon(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride)
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
void ff_hevc_put_qpel_uni_neon_wrapper(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width)
static const uint8_t offset_table[]
void ff_hevc_h_loop_filter_luma_neon(uint8_t *_pix, ptrdiff_t _stride, int _beta, int *_tc, uint8_t *_no_p, uint8_t *_no_q)
#define QPEL_FUNC_UW_PIX(name)
av_cold void ff_hevc_dsp_init_neon(HEVCDSPContext *c, const int bit_depth)
void ff_hevc_idct_16x16_dc_10_neon(int16_t *coeffs)