From 8a264fe1ee4fa048aa277f46f9e912e6e2664a3f Mon Sep 17 00:00:00 2001 From: Niels Elburg Date: Sun, 4 Feb 2007 18:28:01 +0000 Subject: [PATCH] rgbkeysmooth fixed git-svn-id: svn://code.dyne.org/veejay/trunk@761 eb8d1916-c9e9-0310-b8de-cf0c9472ead5 --- veejay-current/libvje/effects/rgbkeysmooth.c | 35 ++++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/veejay-current/libvje/effects/rgbkeysmooth.c b/veejay-current/libvje/effects/rgbkeysmooth.c index de05e0de..cabcd182 100644 --- a/veejay-current/libvje/effects/rgbkeysmooth.c +++ b/veejay-current/libvje/effects/rgbkeysmooth.c @@ -40,7 +40,7 @@ vj_effect *rgbkeysmooth_init(int w,int h) ve->defaults[1] = 255; /* r */ ve->defaults[2] = 0; /* g */ ve->defaults[3] = 0; /* b */ - ve->defaults[4] = 1; /* opacity */ + ve->defaults[4] = 150; /* opacity */ ve->defaults[5] = 1500; /* noise level */ ve->limits[0][0] = 5; ve->limits[1][0] = 900; @@ -57,14 +57,14 @@ vj_effect *rgbkeysmooth_init(int w,int h) ve->limits[0][4] = 0; ve->limits[1][4] = 255; - ve->limits[0][5] = 0; - ve->limits[1][5] = 3500; + ve->limits[0][5] = 0; + ve->limits[1][5] = 3500; - ve->has_user = 0; + ve->has_user = 0; ve->description = "Transparent Chroma Key (RGB)"; ve->extra_frame = 1; ve->sub_format = 1; - ve->rgb_conv = 1; + ve->rgb_conv = 1; return ve; } @@ -176,30 +176,21 @@ void rgbkeysmooth_apply(VJFrame *frame, VJFrame *frame2, int width, // convert suppressed fg back to cbcr // cb,cr are signed, go back to unsigned ! - val = ((x1 * (cb-128)) - (y1 * (cr-128))) >> 7; - - Cb[pos] = val; - - val = ((x1 * (cr-128)) - (y1 * (cb-128))) >> 7; - Cr[pos] = val; + Cb[pos] = ((x1 * (cb-128)) - (y1 * (cr-128))) >> 7; + Cr[pos] = ((x1 * (cr-128)) - (y1 * (cb-128))) >> 7; // deal with noise - val = (yy * yy) + (kg * kg); if (val < (noise_level * noise_level)) { kbg = 255; } - val = (Y[pos] + (kbg * bg_y[pos])) >> 8; - val = CLAMP_Y(val); - Y[pos] = ((val*op0)+(fg_y[pos]*op1) )>>8 ; - - val = (Cb[pos] + (kbg * bg_cb[pos])) >> 8; - val = CLAMP_UV(val); - Cb[pos] = ((val*op0) + (fg_cb[pos]*op1) )>>8; - val = (Cr[pos] + (kbg * bg_cr[pos])) >> 8; - val = CLAMP_UV(val); - Cr[pos] = ((val*op0) + (fg_cr[pos]*op1) )>>8; + Y[pos] = ( Y[pos] + (kbg * bg_y[pos])) >> 8; + Y[pos] = ( Y[pos] * op0 + bg_y[pos] * op1 ) >> 8; + Cb[pos] = (Cb[pos] + (kbg * bg_cb[pos])) >> 8; + Cb[pos] = (Cb[pos] * op0 + bg_cb[pos] * op1) >> 8; + Cr[pos] = (Cr[pos] + (kbg * bg_cr[pos])) >> 8; + Cr[pos] = (Cr[pos] * op0 + bg_cr[pos] * op1 ) >> 8; } }