26 #define BLEND_FUNC(name, opt) \
27 void ff_blend_##name##_##opt(const uint8_t *top, ptrdiff_t top_linesize, \
28 const uint8_t *bottom, ptrdiff_t bottom_linesize, \
29 uint8_t *dst, ptrdiff_t dst_linesize, \
30 ptrdiff_t width, ptrdiff_t height, \
31 struct FilterParams *param, double *values, int starty);
57 if (
EXTERNAL_SSE2(cpu_flags) && param->opacity == 1 && !is_16bit) {
58 switch (param->mode) {
61 case BLEND_AND: param->blend = ff_blend_and_sse2;
break;
62 case BLEND_AVERAGE: param->blend = ff_blend_average_sse2;
break;
63 case BLEND_DARKEN: param->blend = ff_blend_darken_sse2;
break;
65 case BLEND_DIVIDE: param->blend = ff_blend_divide_sse2;
break;
66 case BLEND_HARDMIX: param->blend = ff_blend_hardmix_sse2;
break;
67 case BLEND_LIGHTEN: param->blend = ff_blend_lighten_sse2;
break;
69 case BLEND_OR: param->blend = ff_blend_or_sse2;
break;
70 case BLEND_PHOENIX: param->blend = ff_blend_phoenix_sse2;
break;
71 case BLEND_SCREEN: param->blend = ff_blend_screen_sse2;
break;
73 case BLEND_XOR: param->blend = ff_blend_xor_sse2;
break;
78 if (
EXTERNAL_SSSE3(cpu_flags) && param->opacity == 1 && !is_16bit) {
79 switch (param->mode) {
81 case BLEND_NEGATION: param->blend = ff_blend_negation_ssse3;
break;
av_cold void ff_blend_init_x86(FilterParams *param, int is_16bit)
static atomic_int cpu_flags
Macro definitions for various function/variable attributes.
#define EXTERNAL_SSE2(flags)
static SoftFloat_IEEE754 multiply(SoftFloat_IEEE754 a, SoftFloat_IEEE754 b)
multiply two softfloats and handle the rounding off
#define EXTERNAL_SSSE3(flags)
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
#define BLEND_FUNC(name, opt)