| @@ -237,27 +237,27 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) | |||||
| fade->is_packed_rgb ? 4 : 1, // pixstep for 8 bit packed formats | fade->is_packed_rgb ? 4 : 1, // pixstep for 8 bit packed formats | ||||
| 1, outpic->data[plane], outpic->linesize[plane]); | 1, outpic->data[plane], outpic->linesize[plane]); | ||||
| } else { | } else { | ||||
| /* luma or rgb plane */ | |||||
| fade_plane(y, h, inlink->w, | |||||
| fade->factor, fade->black_level, fade->black_level_scaled, | |||||
| 0, 1, // offset & pixstep for Y plane or RGB packed format | |||||
| fade->bpp, outpic->data[0], outpic->linesize[0]); | |||||
| if (outpic->data[1] && outpic->data[2]) { | |||||
| /* chroma planes */ | |||||
| for (plane = 1; plane < 3; plane++) { | |||||
| for (i = 0; i < h; i++) { | |||||
| p = outpic->data[plane] + ((y+i) >> fade->vsub) * outpic->linesize[plane]; | |||||
| for (j = 0; j < inlink->w >> fade->hsub; j++) { | |||||
| /* 8421367 = ((128 << 1) + 1) << 15. It is an integer | |||||
| * representation of 128.5. The .5 is for rounding | |||||
| * purposes. */ | |||||
| *p = ((*p - 128) * fade->factor + 8421367) >> 16; | |||||
| p++; | |||||
| /* luma or rgb plane */ | |||||
| fade_plane(y, h, inlink->w, | |||||
| fade->factor, fade->black_level, fade->black_level_scaled, | |||||
| 0, 1, // offset & pixstep for Y plane or RGB packed format | |||||
| fade->bpp, outpic->data[0], outpic->linesize[0]); | |||||
| if (outpic->data[1] && outpic->data[2]) { | |||||
| /* chroma planes */ | |||||
| for (plane = 1; plane < 3; plane++) { | |||||
| for (i = 0; i < h; i++) { | |||||
| p = outpic->data[plane] + ((y+i) >> fade->vsub) * outpic->linesize[plane]; | |||||
| for (j = 0; j < inlink->w >> fade->hsub; j++) { | |||||
| /* 8421367 = ((128 << 1) + 1) << 15. It is an integer | |||||
| * representation of 128.5. The .5 is for rounding | |||||
| * purposes. */ | |||||
| *p = ((*p - 128) * fade->factor + 8421367) >> 16; | |||||
| p++; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | |||||
| } | } | ||||
| avfilter_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); | avfilter_draw_slice(inlink->dst->outputs[0], y, h, slice_dir); | ||||