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.
av_cold void ff_llvidencdsp_init_x86(LLVidEncDSPContext *c)
void(* diff_bytes)(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, intptr_t w)
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.
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)
void ff_sub_left_predict_avx(uint8_t *dst, uint8_t *src, ptrdiff_t stride, ptrdiff_t width, int height)
#define EXTERNAL_AVX(flags)
void(* sub_left_predict)(uint8_t *dst, uint8_t *src, ptrdiff_t stride, ptrdiff_t width, int height)