static int draw(effect* e, RGB32 *src, RGB32 *dest) { int x, y, xx, yy, v; int count; RGB32 *p, *q; unsigned char *diff, *r; mosaic_t * priv = e->priv; if(!priv->bgIsSet) { setBackground(e, src); } diff = image_bgsubtract_y(e, src); for(y=0; y<e->video_height-7; y+=8) { for(x=0; x<e->video_width-7; x+=8) { count = 0; p = &src[y*e->video_width+x]; q = &dest[y*e->video_width+x]; r = &diff[y*e->video_width+x]; for(yy=0; yy<8; yy++) { for(xx=0; xx<8; xx++) { count += r[yy*e->video_width+xx]; } } if(count > CENSOR_LEVEL*255) { v = p[3*e->video_width+3]; for(yy=0; yy<8; yy++) { for(xx=0; xx<8; xx++) { q[yy*e->video_width+xx] = v; } } } else { for(yy=0; yy<8; yy++) { for(xx=0; xx<8; xx++) { q[yy*e->video_width+xx] = p[yy*e->video_width+xx]; } } } } } return 0; }
static int draw(RGB32 *src, RGB32 *dest) { int x, y; unsigned char *diff; if(!bgIsSet) { setBackground(src); } diff = image_diff_filter(image_bgsubtract_y(src)); for(y=video_height; y>0; y--) { for(x=video_width; x>0; x--) { if(*diff++) { *dest = 0 - ((inline_fastrand()>>31) & y); } else { *dest = *src; } src++; dest++; }