36 unsigned char yuv_color[4];
43 char color_str[1024] =
"black";
44 uint8_t rgba_color[4];
46 drawbox->
x = drawbox->
y = drawbox->
w = drawbox->
h = 0;
49 sscanf(args,
"%d:%d:%d:%d:%s",
50 &drawbox->
x, &drawbox->
y, &drawbox->
w, &drawbox->
h, color_str);
84 if (drawbox->
w == 0) drawbox->
w = inlink->
w;
85 if (drawbox->
h == 0) drawbox->
h = inlink->
h;
88 drawbox->
w, drawbox->
y, drawbox->
w, drawbox->
h,
97 int plane, x, y, xb = drawbox->
x, yb = drawbox->
y;
98 unsigned char *row[4];
101 for (y =
FFMAX(yb, y0); y < (y0 + h) && y < (yb + drawbox->
h); y++) {
104 for (plane = 1; plane < 3; plane++)
105 row[plane] = picref->
data[plane] +
108 for (x =
FFMAX(xb, 0); x < (xb + drawbox->
w) && x < picref->video->w; x++) {
109 double alpha = (double)drawbox->
yuv_color[
A] / 255;
111 if ((y - yb < 3) || (yb + drawbox->
h - y < 4) ||
112 (x - xb < 3) || (xb + drawbox->
w - x < 4)) {
113 row[0][x ] = (1 - alpha) * row[0][x ] + alpha * drawbox->
yuv_color[
Y];
114 row[1][x >> drawbox->
hsub] = (1 - alpha) * row[1][x >> drawbox->
hsub] + alpha * drawbox->
yuv_color[
U];
115 row[2][x >> drawbox->
hsub] = (1 - alpha) * row[2][x >> drawbox->
hsub] + alpha * drawbox->
yuv_color[
V];