46 int *left,
int *left_top)
52 "movq (%1, %0), %%mm0 \n\t"
53 "psllq $8, %%mm0 \n\t"
55 "movq (%1, %0), %%mm1 \n\t"
56 "movq -1(%2, %0), %%mm2 \n\t"
57 "movq (%2, %0), %%mm3 \n\t"
58 "movq %%mm2, %%mm4 \n\t"
59 "psubb %%mm0, %%mm2 \n\t"
60 "paddb %%mm1, %%mm2 \n\t"
61 "movq %%mm4, %%mm5 \n\t"
62 "pmaxub %%mm1, %%mm4 \n\t"
63 "pminub %%mm5, %%mm1 \n\t"
64 "pminub %%mm2, %%mm4 \n\t"
65 "pmaxub %%mm1, %%mm4 \n\t"
66 "psubb %%mm4, %%mm3 \n\t"
67 "movq %%mm3, (%3, %0) \n\t"
69 "movq -1(%1, %0), %%mm0 \n\t"
73 :
"r" (src1),
"r" (src2),
"r" (dst),
"r" ((
x86_reg) w));
78 dst[0] = src2[0] -
mid_pred(l, src1[0], (l + src1[0] - lt) & 0xFF);
80 *left_top = src1[w - 1];
#define EXTERNAL_MMX(flags)
void ff_diff_bytes_mmx(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, intptr_t w)
static atomic_int cpu_flags
Macro definitions for various function/variable attributes.
void(* diff_bytes)(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, intptr_t w)
av_cold void ff_llvidencdsp_init_x86(LLVidEncDSPContext *c)
void ff_diff_bytes_avx2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, intptr_t w)
#define EXTERNAL_SSE2(flags)
#define EXTERNAL_AVX2_FAST(flags)
void(* sub_median_pred)(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, intptr_t w, int *left, int *left_top)
Subtract HuffYUV's variant of median prediction.
void(* sub_left_predict)(uint8_t *dst, uint8_t *src, ptrdiff_t stride, ptrdiff_t width, int height)
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
void ff_diff_bytes_sse2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, intptr_t w)
#define INLINE_MMXEXT(flags)
GLint GLenum GLboolean GLsizei stride
void ff_sub_left_predict_avx(uint8_t *dst, uint8_t *src, ptrdiff_t stride, ptrdiff_t width, int height)
#define EXTERNAL_AVX(flags)