22 #include "libavutil/attributes.h"
35 static void put_pixels_clamped_mvi(
const int16_t *
block,
uint8_t *pixels,
39 uint64_t clampmask = zap(-1, 0xaa);
42 uint64_t shorts0, shorts1;
45 shorts0 = maxsw4(shorts0, 0);
46 shorts0 = minsw4(shorts0, clampmask);
47 stl(pkwb(shorts0), pixels);
49 shorts1 = ldq(block + 4);
50 shorts1 = maxsw4(shorts1, 0);
51 shorts1 = minsw4(shorts1, clampmask);
52 stl(pkwb(shorts1), pixels + 4);
59 void add_pixels_clamped_mvi(
const int16_t *
block,
uint8_t *pixels,
65 uint64_t clampmask = zap(-1, 0xaa);
66 uint64_t signmask = zap(-1, 0x33);
67 signmask ^= signmask >> 1;
70 uint64_t shorts0, pix0, signs0;
71 uint64_t shorts1, pix1, signs1;
74 shorts1 = ldq(block + 4);
76 pix0 = unpkbw(ldl(pixels));
78 signs0 = shorts0 & signmask;
83 shorts0 = maxsw4(shorts0, 0);
84 shorts0 = minsw4(shorts0, clampmask);
87 pix1 = unpkbw(ldl(pixels + 4));
88 signs1 = shorts1 & signmask;
92 shorts1 = maxsw4(shorts1, 0);
93 shorts1 = minsw4(shorts1, clampmask);
95 stl(pkwb(shorts0), pixels);
96 stl(pkwb(shorts1), pixels + 4);
105 uint64_t *p = (uint64_t *) blocks;
106 int n =
sizeof(int16_t) * 6 * 64;
126 if (!high_bit_depth) {
void(* get_pixels)(int16_t *block, const uint8_t *pixels, int line_size)
#define FF_IDCT_SIMPLEALPHA
int pix_abs16x16_x2_mvi(void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
void(* idct_add)(uint8_t *dest, int line_size, int16_t *block)
block -> idct -> add dest -> clip to unsigned 8 bit -> dest.
void ff_simple_idct_add_axp(uint8_t *dest, int line_size, int16_t *block)
void(* idct_put)(uint8_t *dest, int line_size, int16_t *block)
block -> idct -> clip to unsigned 8 bit -> dest.
int pix_abs16x16_mvi_asm(void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
void(* add_pixels_clamped_axp_p)(const int16_t *block, uint8_t *pixels, int line_size)
void(* add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size)
void put_pixels_clamped_mvi_asm(const int16_t *block, uint8_t *pixels, int line_size)
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size
int pix_abs8x8_mvi(void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
int pix_abs16x16_y2_mvi(void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
void(* idct)(int16_t *block)
int pix_abs16x16_xy2_mvi(void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
av_cold void ff_dsputil_init_alpha(DSPContext *c, AVCodecContext *avctx)
void(* clear_blocks)(int16_t *blocks)
int idct_algo
IDCT algorithm, see FF_IDCT_* below.
void ff_simple_idct_put_axp(uint8_t *dest, int line_size, int16_t *block)
void(* put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size)
typedef void(RENAME(mix_any_func_type))
main external API structure.
void(* diff_pixels)(int16_t *block, const uint8_t *s1, const uint8_t *s2, int stride)
void diff_pixels_mvi(int16_t *block, const uint8_t *s1, const uint8_t *s2, int stride)
void get_pixels_mvi(int16_t *restrict block, const uint8_t *restrict pixels, int line_size)
void add_pixels_clamped_mvi_asm(const int16_t *block, uint8_t *pixels, int line_size)
static void clear_blocks_axp(int16_t *blocks)
void ff_simple_idct_axp(int16_t *block)
void(* put_pixels_clamped_axp_p)(const int16_t *block, uint8_t *pixels, int line_size)
me_cmp_func pix_abs[2][4]