40 unsigned char yuv_color[4];
47 char color_str[1024] =
"black";
50 drawbox->
x = drawbox->
y = drawbox->
w = drawbox->
h = 0;
53 sscanf(args,
"%d:%d:%d:%d:%s",
54 &drawbox->
x, &drawbox->
y, &drawbox->
w, &drawbox->
h, color_str);
89 if (drawbox->
w == 0) drawbox->
w = inlink->
w;
90 if (drawbox->
h == 0) drawbox->
h = inlink->
h;
93 drawbox->
w, drawbox->
y, drawbox->
w, drawbox->
h,
102 int plane, x, y, xb = drawbox->
x, yb = drawbox->
y;
103 unsigned char *row[4];
105 for (y =
FFMAX(yb, 0); y < frame->
video->
h && y < (yb + drawbox->
h); y++) {
108 for (plane = 1; plane < 3; plane++)
109 row[plane] = frame->
data[plane] +
112 for (x =
FFMAX(xb, 0); x < (xb + drawbox->
w) && x < frame->video->w; x++) {
113 double alpha = (double)drawbox->
yuv_color[
A] / 255;
115 if ((y - yb < 3) || (yb + drawbox->
h - y < 4) ||
116 (x - xb < 3) || (xb + drawbox->
w - x < 4)) {
117 row[0][x ] = (1 - alpha) * row[0][x ] + alpha * drawbox->
yuv_color[
Y];
118 row[1][x >> drawbox->
hsub] = (1 - alpha) * row[1][x >> drawbox->
hsub] + alpha * drawbox->
yuv_color[
U];
119 row[2][x >> drawbox->
hsub] = (1 - alpha) * row[2][x >> drawbox->
hsub] + alpha * drawbox->
yuv_color[
V];
155 .
inputs = avfilter_vf_drawbox_inputs,
156 .
outputs = avfilter_vf_drawbox_outputs,