Go to the documentation of this file.
19 #ifndef AVCODEC_IDCTDSP_H
20 #define AVCODEC_IDCTDSP_H
47 const uint8_t *src_scantable);
56 uint8_t *av_restrict pixels ,
59 uint8_t *av_restrict pixels ,
62 uint8_t *av_restrict pixels ,
73 ptrdiff_t line_size, int16_t *
block );
80 ptrdiff_t line_size, int16_t *
block );
103 ptrdiff_t line_size);
105 ptrdiff_t line_size);
110 unsigned high_bit_depth);
112 unsigned high_bit_depth);
114 unsigned high_bit_depth);
116 unsigned high_bit_depth);
118 unsigned high_bit_depth);
120 unsigned high_bit_depth);
122 unsigned high_bit_depth);
int ff_init_scantable_permutation_x86(uint8_t *idct_permutation, enum idct_permutation_type perm_type)
void ff_add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
void(* put_signed_pixels_clamped)(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
void ff_init_scantable(const uint8_t *permutation, ScanTable *st, const uint8_t *src_scantable)
void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
void(* idct_add)(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
block -> idct -> add dest -> clip to unsigned 8 bit -> dest.
void(* idct)(int16_t *block)
void(* idct_put)(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
block -> idct -> clip to unsigned 8 bit -> dest.
void ff_init_scantable_permutation(uint8_t *idct_permutation, enum idct_permutation_type perm_type)
const uint8_t * scantable
void ff_idctdsp_init_mips(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
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_idctdsp_init_aarch64(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
void ff_idctdsp_init_ppc(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
void ff_idctdsp_init_loongarch(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
void ff_idctdsp_init_alpha(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
void(* put_pixels_clamped)(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
main external API structure.
enum idct_permutation_type perm_type
uint8_t idct_permutation[64]
IDCT input permutation.
void(* add_pixels_clamped)(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
The exact code depends on how similar the blocks are and how related they are to the block
void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
void ff_put_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)