Go to the documentation of this file.
39 static void put_pixels_clamped_mvi(
const int16_t *
block,
uint8_t *pixels,
43 uint64_t clampmask =
zap(-1, 0xaa);
46 uint64_t shorts0, shorts1;
49 shorts0 =
maxsw4(shorts0, 0);
50 shorts0 =
minsw4(shorts0, clampmask);
54 shorts1 =
maxsw4(shorts1, 0);
55 shorts1 =
minsw4(shorts1, clampmask);
63 void add_pixels_clamped_mvi(
const int16_t *
block,
uint8_t *pixels,
69 uint64_t clampmask =
zap(-1, 0xaa);
70 uint64_t signmask =
zap(-1, 0x33);
71 signmask ^= signmask >> 1;
74 uint64_t shorts0, pix0, signs0;
75 uint64_t shorts1, pix1, signs1;
82 signs0 = shorts0 & signmask;
87 shorts0 =
maxsw4(shorts0, 0);
88 shorts0 =
minsw4(shorts0, clampmask);
92 signs1 = shorts1 & signmask;
96 shorts1 =
maxsw4(shorts1, 0);
97 shorts1 =
minsw4(shorts1, clampmask);
100 stl(
pkwb(shorts1), pixels + 4);
109 unsigned high_bit_depth)
120 if (!high_bit_depth && !avctx->
lowres &&
void put_pixels_clamped_mvi_asm(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size)
void ff_simple_idct_axp(int16_t *block)
void add_pixels_clamped_mvi_asm(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size)
void ff_simple_idct_put_axp(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
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
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size
#define i(width, name, range_min, range_max)
void(* add_pixels_clamped_axp_p)(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size)
int idct_algo
IDCT algorithm, see FF_IDCT_* below.
void ff_simple_idct_add_axp(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
main external API structure.
typedef void(RENAME(mix_any_func_type))
The exact code depends on how similar the blocks are and how related they are to the block
void(* put_pixels_clamped_axp_p)(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size)
av_cold void ff_idctdsp_init_alpha(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)