28#ifndef AVCODEC_RECTANGLE_H
29#define AVCODEC_RECTANGLE_H
42 uint8_t *p= (uint8_t*)vp;
49 av_assert2((((uintptr_t)vp)&(
FFMIN(
w, 8<<(HAVE_NEON|ARCH_PPC|HAVE_MMX))-1)) == 0);
53 *(uint16_t*)(p + 0*
stride)= v;
55 *(uint16_t*)(p + 1*
stride)= v;
57 *(uint16_t*)(p + 2*
stride)= v;
58 *(uint16_t*)(p + 3*
stride)= v;
61 *(uint32_t*)(p + 0*
stride)= v;
63 *(uint32_t*)(p + 1*
stride)= v;
65 *(uint32_t*)(p + 2*
stride)= v;
66 *(uint32_t*)(p + 3*
stride)= v;
70 const uint64_t v=
size==2 ?
val*0x0001000100010001ULL :
val*0x0100000001ULL;
71 *(uint64_t*)(p + 0*
stride)= v;
73 *(uint64_t*)(p + 1*
stride)= v;
75 *(uint64_t*)(p + 2*
stride)= v;
76 *(uint64_t*)(p + 3*
stride)= v;
78 const uint64_t v=
val*0x0100000001ULL;
79 *(uint64_t*)(p + 0+0*
stride)= v;
80 *(uint64_t*)(p + 8+0*
stride)= v;
81 *(uint64_t*)(p + 0+1*
stride)= v;
82 *(uint64_t*)(p + 8+1*
stride)= v;
84 *(uint64_t*)(p + 0+2*
stride)= v;
85 *(uint64_t*)(p + 8+2*
stride)= v;
86 *(uint64_t*)(p + 0+3*
stride)= v;
87 *(uint64_t*)(p + 8+3*
stride)= v;
89 const uint32_t v=
size==2 ?
val*0x00010001 :
val;
90 *(uint32_t*)(p + 0+0*
stride)= v;
91 *(uint32_t*)(p + 4+0*
stride)= v;
93 *(uint32_t*)(p + 0+1*
stride)= v;
94 *(uint32_t*)(p + 4+1*
stride)= v;
96 *(uint32_t*)(p + 0+2*
stride)= v;
97 *(uint32_t*)(p + 4+2*
stride)= v;
98 *(uint32_t*)(p + 0+3*
stride)= v;
99 *(uint32_t*)(p + 4+3*
stride)= v;
static double val(void *priv, double ch)
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
common internal and external API header
static av_always_inline void fill_rectangle(void *vp, int w, int h, int stride, uint32_t val, int size)
fill a rectangle.