full range yuv (jpeg) for 420,422, decode videoframe before completing open, scan pixel format, changed clamping were applicable in fx

git-svn-id: svn://code.dyne.org/veejay/trunk@672 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
Niels Elburg
2006-10-21 00:46:19 +00:00
parent 349931cc52
commit ae616b5448
44 changed files with 415 additions and 630 deletions

View File

@@ -20,7 +20,7 @@
#include "average.h"
#include <stdlib.h>
#include "common.h"
vj_effect *average_init(int w, int h)
{
vj_effect *ve = (vj_effect *) vj_malloc(sizeof(vj_effect));
@@ -52,19 +52,16 @@ void average_apply(VJFrame *frame, int width, int height, int val)
for (i = 0; i < len; i++) {
a = Y[i];
b = ((val-1) * a + a)/val;
if(b < 16) b = 16; else if (b > 240) b = 240;
Y[i] = b;
Y[i] = CLAMP_Y(b);
}
for (i = 0; i < uv_len; i++) {
a = Cb[i];
b = ((val-1) * a + a)/val;
if(b < 16) b = 16; else if (b > 235) b = 235;
Cb[i] = b;
Cb[i] = CLAMP_UV(b);
a = Cr[i];
b = ((val-1) * a + a )/val;
if(b < 16) b = 16; else if (b > 235) b = 235;
Cr[i] = b;
Cr[i] = CLAMP_UV(b);
}
}
void average_free(){}

View File

@@ -28,6 +28,7 @@
#include <stdlib.h>
#include "chromamagick.h"
#include <math.h>
#include "common.h"
// fixme: mode 8 and 9 corrupt (green/purple cbcr)
vj_effect *chromamagick_init(int w, int h)
@@ -92,15 +93,8 @@ void chromamagic_addsubselectlum(VJFrame *frame, VJFrame *frame2,
for (i = 0; i < len; i++) {
a = (Y[i] * op_a) >> 8;
b = (Y2[i] * op_b) >> 8;
if (b < 16)
b = 16;
if (b > 235)
b = 235;
if (a < 16)
a = 16;
if (a > 235)
a = 235;
a = CLAMP_Y(a);
b = CLAMP_Y(b);
if (b < a) {
c = (a + b) >> 1;
Y[i] = c;
@@ -228,14 +222,11 @@ void chromamagic_selectdiffneg(VJFrame *frame, VJFrame *frame2,
b = (Y2[i] * op_b) >> 8;
if (a > b) {
c = 255 - abs(255 - a - b);
if( c < 16 ) c = 16; else if ( c > 240) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
c = ((Cb[i] * op_a) + (Cb2[i]*op_b) )>>8;
if( c < 16 ) c = 16; else if ( c > 235) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
c = ((Cr[i] * op_a) + (Cr2[i]*op_b) )>>8;
if( c < 16) c = 16; else if ( c > 235) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
}
@@ -258,12 +249,12 @@ void chromamagic_selectunfreeze(VJFrame *frame, VJFrame *frame2,
a = (Y[i] * op_a) >> 8;
b = (Y2[i] * op_b) >> 8;
if (a > b) {
if (a < 16)
c = 16;
if (a < pixel_Y_lo_)
c = pixel_Y_lo_;
else
c = 255 - ((255 - b) * (255 - b)) / a;
if (c < 16)
c = 16;
c = 255 - ((256 - b) * (256 - b)) / a;
if (c < pixel_Y_lo_)
c = pixel_Y_lo_;
Y[i] = c;
Cb[i] = (Cb[i] + Cb2[i]) >> 1;
Cr[i] = (Cr[i] + Cr2[i]) >> 1;
@@ -289,20 +280,9 @@ void chromamagic_addlum(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
a = (Y[i] * op_a) >> 8;
b = (Y2[i] * op_b) >> 8;
if (b < 16)
b = 16;
if (b > 235)
b = 235;
if (a < 16)
a = 16;
if (a > 235)
a = 235;
c = (a * a) / (255 - b);
if (c > 235)
c = 235;
if (c < 16)
c = 16;
Y[i] = c;
a = CLAMP_Y(a);
c = (a * a) / (256- b);
Y[i] = CLAMP_Y(c);
Cb[i] = (Cb[i] + Cb2[i]) >> 1;
Cr[i] = (Cr[i] + Cr2[i]) >> 1;
}
@@ -326,9 +306,8 @@ void chromamagic_exclusive(VJFrame *frame, VJFrame *frame2, int width, int heigh
a = Y[i];
b = Y2[i];
if(a < 16) a = 16; else if(a > 235) a = 235;
if(b < 16) b = 16; else if(b > 235) b = 235;
a = CLAMP_Y(a);
b = CLAMP_Y(b);
a *= o1;
b *= o2;
@@ -336,23 +315,20 @@ void chromamagic_exclusive(VJFrame *frame, VJFrame *frame2, int width, int heigh
b = b >> 8;
c = (a+b) - ((a * b) >> 8);
if( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i]-128;
b = Cb2[i]-128;
c = (a + b) - (( a * b) >> 8);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i]-128;
b = Cr2[i]-128;
c = (a + b) - ((a*b) >> 8);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -372,9 +348,6 @@ void chromamagic_diffnegate(VJFrame *frame, VJFrame *frame2, int width, int heig
const unsigned int o2 = 255 - o1;
#define MAGIC_THRESHOLD 40
for(i=0; i < len; i++) {
//a = (( 255 - Y[i]) * o1) >> 7; /* negation */
// b = (Y2[i] * o2) >> 7;
// d = abs( a - b );
a = Y[i];
b = Y2[i];
d = abs( a - b );
@@ -383,31 +356,18 @@ void chromamagic_diffnegate(VJFrame *frame, VJFrame *frame2, int width, int heig
a = Y[i] * o1;
b = Cb2[i] * o2;
c = 255 - ( (a + b) >>8 );
if( c < 16 ) c = 16; else if ( c > 240) c = 240;
Y[i] = c;
// a = (( 255 - Cb[i]) * o1) >> 7;
// b = (Cb2[i] * o2) >> 7;
// c = 255 - abs(a - b);
// if ( c < 16) c = 16; else if ( c > 235 ) c = 235;
// Cb[i] = c;
Y[i] = CLAMP_Y(c);
a = (Cb[i]-128) * o1;
b = (Cb2[i]-128) * o2;
c = 255 - ( 128 + (( a + b ) >> 8 ));
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = (Cr[i]-128) * o1;
b = (Cr2[i]-128) * o2;
c = 255 - ( 128 + (( a + b ) >> 8 ));
// a = (( 255 - Cr[i]) * o1) >> 7;
// b = (Cr2[i] * o2) >> 7;
// c = 255 - abs( a- b);
if ( c < 16) c = 16; else if ( c > 235) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -432,24 +392,19 @@ void chromamagic_additive(VJFrame *frame, VJFrame *frame2, int width,
a = (Y[i]*o1) >> 7;
b = (Y2[i]*o2) >> 7;
c = a + (( 2 * b ) - 255);
if( c < 16) c = 16; else if ( c > 235 ) c = 235;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i];
b = Cb2[i];
c = a + ( ( 2 * b ) - 255 );
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Cb[i] = c ;
Cb[i] = CLAMP_UV(c) ;
a = Cr[i] ;
b = Cr2[i] ;
c = a + ( ( 2 * b ) - 255 );
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Cr[i] = c ;
Cr[i] = CLAMP_UV(c) ;
}
@@ -474,25 +429,22 @@ void chromamagic_basecolor(VJFrame *frame, VJFrame *frame2,
b = o1 - Y2[i];
c = a * b >> 8;
d = c + a * ((255 - (((255 - a) * (255 - b)) >> 8) - c) >> 8); //8
if ( d < 16 ) d = 16; else if ( d > 240 ) d = 240;
Y[i] = d;
Y[i] = CLAMP_Y(d);
a = Cb[i]-128;
b = Cb2[i]-128;
c = a * b >> 8;
d = c + a * ((255 - (((255-a) * (255-b)) >> 8) -c) >> 8);
d += 128;
if ( d < 16 ) d = 16; else if ( d > 235 ) d = 235;
Cb[i] = d;
Cb[i] = CLAMP_UV(d);
a = Cr[i]-128;
b = Cr2[i]-128;
c = a * b >> 8;
d = c + a * ((255 - (((255-a) * (255-b)) >> 8) -c ) >> 8);
d += 128;
if ( d < 16 ) d = 16; else if ( d > 235 ) d = 235;
Cr[i] = d;
Cr[i] = CLAMP_UV(d);
}
}
@@ -516,28 +468,26 @@ void chromamagic_freeze(VJFrame *frame, VJFrame *frame2, int w, int h, int op_a)
for(i=0; i < len; i++) {
a = Y[i];
b = Y2[i];
if ( a < 16 ) a = 16;
if ( b < 16 ) b = 16;
if ( a < pixel_Y_lo_ ) a = pixel_Y_lo_;
if ( b < pixel_Y_lo_ ) b = pixel_Y_lo_;
c = 255 - ((op_a -a ) * (op_a - a)) / b;
if ( c < 16) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i];
b = Cb2[i];
if ( a < 16 ) a = 16;
if ( b < 16 ) b = 16;
c = 255 - ((255-a) * (255 - a)) / b;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
if ( a < pixel_U_lo_ ) a = pixel_U_lo_;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
c = 255 - ((256-a) * (256 - a)) / b;
Cb[i] = CLAMP_UV(c);
a = Cr[i];
b = Cr2[i];
if ( a < 16 ) a = 16;
if ( b < 16 ) b = 16;
c = 255 - (( 255 - a ) * ( 255 - a )) / b;
if ( c < 16 ) c = 16; else if ( c> 235 ) c = 235;
Cr[i] = c;
if ( a < pixel_U_lo_ ) a = pixel_U_lo_;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
c = 255 - (( 256 - a ) * ( 256 - a )) / b;
Cr[i] = CLAMP_UV(c);
}
}
@@ -557,28 +507,24 @@ void chromamagic_unfreeze( VJFrame *frame, VJFrame *frame2, int w, int h, int op
for(i=0; i < len; i++) {
a = Y[i];
b = Y2[i];
if ( a < 16 ) a = 16;
if ( b < 16 ) b = 16;
if ( a < pixel_Y_lo_ ) a = pixel_Y_lo_;
if ( b < pixel_Y_lo_ ) b = pixel_Y_lo_;
c = 255 - (( op_a - b) * (op_a - b)) / a;
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i];
b = Cb2[i];
if ( a < 16) a = 16;
if ( b < 16) b = 16;
c = 255 - (( 255 - b) * ( 255 - b )) / a;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
if ( a < pixel_U_lo_ ) a = pixel_U_lo_;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
c = 255 - (( 256 - b) * ( 256 - b )) / a;
Cb[i] = CLAMP_UV(c);
a = Cr[i];
b = Cr2[i];
if ( a < 16 ) a = 16;
if ( b < 16 ) b = 16;
c = 255 - ((255 -b ) * (255 - b)) /a ;
if ( c < 16 ) c = 16; else if ( c > 235) c = 235;
Cr[i] = c;
if ( a < pixel_U_lo_ ) a = pixel_U_lo_;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
c = 255 - ((256 -b ) * (256 - b)) /a ;
Cr[i] = CLAMP_UV(c);
}
}
@@ -604,24 +550,21 @@ void chromamagic_hardlight( VJFrame *frame, VJFrame *frame2, int w, int h, int o
else {
c = 255 - (( op_a - b) * ( op_a - a ) >> 8);
}
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] =CLAMP_Y( c);
a = Cb[i]-128;
b = Cb2[i]-128;
if ( b < 128 ) c = ( a * b ) >> 8;
else c = 255 - (( 255 - b) * ( 255 - a) >> 8);
else c = 255 - (( 256 - b) * ( 256 - a) >> 8);
c += 128;
if ( c < 16) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i]-128;
b = Cr2[i]-128;
if ( b < 128) c = ( a * b ) >> 8;
else c = 255 - (( 255 - b) * ( 255 - a) >> 8 );
else c = 255 - (( 256 - b) * ( 256 - a) >> 8 );
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -644,22 +587,19 @@ void chromamagic_multiply( VJFrame *frame, VJFrame *frame2, int w, int h,int op_
a = (Y[i] * o1) >> 8;
b = (Y2[i] * o2) >> 8;
c = (a * b) >> 8;
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i]-128;
b = Cb2[i]-128;
c = ( a * b ) >> 8;
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i] - 128;
b = Cr2[i] - 128;
c = ( a * b ) >> 8;
c += 128;
if ( c < 16 ) c = 16; else if ( c> 235) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -681,25 +621,22 @@ void chromamagic_divide(VJFrame *frame, VJFrame *frame2, int w, int h, int op_a
for(i=0; i < len; i++) {
a = Y[i] * Y[i];
b = o1 - Y2[i];
if ( b < 16 ) b = 16;
if ( b < pixel_Y_lo_ ) b = pixel_Y_lo_;
c = a / b;
if ( c < 16 ) c = 16; else if (c > 240) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i] * Cb2[i];
b = 255 - Cb2[i];
if ( b < 16 ) b = 16;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
c = a / b;
if ( c < 16) c= 16; else if ( c > 235) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i] * Cr[i];;
b = 255 - Cr2[i];
if ( b < 16 ) b = 16;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
c = ( a / b );
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -723,23 +660,18 @@ void chromamagic_substract(VJFrame *frame, VJFrame *frame2, int w, int h, int op
b = Y2[i];
c = a - ((b * o1) >> 8);
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i];
b = Cb2[i];
c = (((a * o2) + (b * o1))>>8);
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
CLAMP_UV(c);
Cb[i] = c;
a = Cr[i];
b = Cr2[i];
c = (((a * o2) + (b * o1)) >> 8);
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
CLAMP_UV(c);
Cr[i] = c;
}
@@ -763,23 +695,19 @@ void chromamagic_add(VJFrame *frame, VJFrame *frame2, int width,
a = Y[i];
b = Y2[i];
c = a + (( 2 * b ) - op_a);
if( c < 16) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i]-128;
b = Cb2[i]-128;
c = a + ( 2 * b );
c += 128;
if( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i]-128;
b = Cr2[i]-128;
c = a + ( 2 * b );
c += 128;
if( c < 16 ) c = 16; else if ( c > 235) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -798,20 +726,17 @@ void chromamagic_screen(VJFrame *frame, VJFrame *frame2, int w, int h, int op_a)
a = Y[i];
b = Y2[i];
c = 255 - ( (op_a-a) * (op_a-b) >> 8);
if( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i]-128;
b = Cb2[i]-128;
c = 255 - ( ( 255-a) * (255 - b) >> 8);
c = 255 - ( ( 256-a) * (256 - b) >> 8);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i]-128;
b = Cr2[i]-128;
c = 255 - ( ( 255 -a) * (255 - b)>>8);
c = 255 - ( ( 256 -a) * (256 - b)>>8);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -832,22 +757,19 @@ void chromamagic_difference(VJFrame *frame, VJFrame *frame2, int w, int h, int o
a = (Y[i] * o1)>>7;
b = (Y2[i] * o2)>>7;
c = abs ( a - b );
if( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = (Cb[i]-128);
b = (Cb2[i]-128);
c = abs ( a - b );
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = (Cr[i]-128);
b = (Cr2[i]-128);
c = abs( a - b );
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -871,26 +793,21 @@ void chromamagic_softlightmode(VJFrame *frame,VJFrame *frame2,
if ( a < op_a ) {
c = (a * b) >> 8;
d = (c + a * ( 255 - ( (255-a)*(255-b) >> 8) - c)) >> 8;
if ( d < 16 ) d = 16; else if ( d > 240) d = 240;
/* deal with chroma red/blue in a magical way
range gets narrowed.
*/
Y[i] = CLAMP_Y(d);
a = abs(Cb[i]-128);
b = abs(Cb2[i]-128);
c = (a * b);
d = (c + a * ( 255 - ( (a * b) >> 7) - c)) >> 7;
d += 128;
if ( d < 16) d = 16; else if ( d > 235 ) d = 235;
Cb[i] = d;
Cb[i] = CLAMP_UV(d);
a = abs(Cr[i]-128);
b = abs(Cr2[i]-128);
c = (a * b) >> 7;
d = (c + a * ( 255 - ( (a * b) >> 7) -c)) >> 7;
d += 128;
if( d < 16) d= 16; else if ( d > 235 ) d= 235;
Cr[i] = d;
Cr[i] = CLAMP_UV(d);
}
}
}
@@ -912,27 +829,24 @@ void chromamagic_dodge(VJFrame *frame, VJFrame *frame2, int w, int h,
b = Y2[i];
if( a >= op_a) c = a;
else {
if( b > 240 ) b = 240;
if( a < 16) a = 16;
c = (a << 8) / ( 255 - b );
if ( c < 16 ) c = 16; else if (c > 240 ) c = 240;
Y[i] = c;
if( b > pixel_Y_hi_ ) b = pixel_Y_hi_ - 5;
if( a < pixel_Y_lo_) a = pixel_Y_lo_;
c = (a << 8) / ( 256 - b );
Y[i] = CLAMP_Y(c);
a = Cb[i] - 128;
b = Cb2[i] - 128;
if ( b > 127 ) b = 127;
c = ( a << 7 ) / ( 128 - b );
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i] - 128;
b = Cr2[i] - 128;
if ( b > 127 ) b = 127;
c = ( a << 7 ) / ( 128 - b);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
}
@@ -1011,35 +925,32 @@ void chromamagic_reflect(VJFrame *frame, VJFrame *frame2,
if ( b > op_a ) c = b;
else {
if ( b > 240 ) b = 240;
if ( a < 16 ) a = 16;
c = (a * a) / ( 255 - b );
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
if ( b > pixel_Y_hi_ ) b = pixel_Y_hi_ -5;
if ( a < pixel_Y_lo_ ) a = pixel_Y_lo_;
c = (a * a) / ( 256 - b );
Y[i] = CLAMP_Y(c);
a = Cb[i];
b = Cb2[i];
if ( a < 16 ) a = 16;
if ( b < 16 ) b = 16;
if ( a < pixel_U_lo_) a = pixel_U_lo_;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
a -= 128;
b -= 128;
if ( b == 128 ) b = 127;
c = ( a * a ) / ( 128 - b);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i];
b = Cr2[i];
if ( a < 16 ) a = 16;
if ( b < 16 ) b = 16;
if ( a < pixel_U_lo_ ) a = pixel_U_lo_;
if ( b < pixel_U_lo_ ) b = pixel_U_lo_;
a -= 128;
b -= 128;
if ( b == 128) b = 127;
c = ( a * a ) / ( 128 - b);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}

View File

@@ -155,11 +155,9 @@ void chromapalette_apply(VJFrame *frame, int width, int height, int angle, int r
if( _chroma_key( Cb[i] , Cr[i], colorKeycb,colorKeycr, accept_angle))
{
U = 128+(int)( (float) (color_cb - Y[i]) * cb_mul );
if(U < 16) U = 16; else if ( U > 240 ) U = 240;
Cb[i] = CLAMP_UV( U );
V = 128+(int)( (float) (color_cr - Y[i]) * cr_mul );
if(V < 16) V = 16; else if ( V > 240 ) V = 240;
Cb[i] = U;
Cr[i] = V;
Cr[i] = CLAMP_UV( V );
}
}
}
@@ -170,8 +168,7 @@ void chromapalette_apply(VJFrame *frame, int width, int height, int angle, int r
if( _chroma_key( Cb[i], Cr[i], colorKeycb, colorKeycr, accept_angle))
{
V = 128+(int)( (float) (color_cr - Y[i]) * cr_mul );
if( V < 16 ) V = 16; else if ( V > 240 ) V = 240;
Cr[i] = V;
Cr[i] = CLAMP_UV( V );
}
}
}
@@ -182,8 +179,7 @@ void chromapalette_apply(VJFrame *frame, int width, int height, int angle, int r
if( _chroma_key( Cb[i] , Cr[i], colorKeycb,colorKeycr, accept_angle))
{
U = 128 + (int)( (float) (color_cb - Y[i]) * cb_mul );
if( U < 16 ) U = 16; else if ( U > 240 ) U = 240;
Cb[i] = U;
Cb[i] = CLAMP_UV(U);
}
}
}

View File

@@ -679,8 +679,8 @@ uint8_t bl_pix_divide_Y(uint8_t y1, uint8_t y2)
{
int c = y1 * y2;
int b = 0xff - y2;
if( b < 16 || c < 16 )
return 16;
if( b < pixel_Y_lo_ || c < pixel_Y_lo_ )
return pixel_Y_lo_;
return ( c / b );
}
@@ -700,15 +700,15 @@ uint8_t bl_pix_softburn_Y(uint8_t y1, uint8_t y2)
uint8_t a, b, new_Y;
a = y1;
b = y2;
if( a < 16) a = 16;
if( b < 16) b = 16;
if( a < pixel_Y_lo_) a = pixel_Y_lo_;
if( b < pixel_Y_lo_) b = pixel_Y_lo_;
if (a + b < 0xff) {
if (a > 235) {
new_Y = 235;
if (a > pixel_Y_hi_) {
new_Y = pixel_Y_hi_;
} else {
new_Y = (b >> 7) / (0xff - a);
if (new_Y > 235)
new_Y = 235;
if (new_Y > pixel_Y_hi_)
new_Y = pixel_Y_hi_;
}
} else {
new_Y = 0xff - (((0xff - a) >> 7) / b);
@@ -721,8 +721,8 @@ uint8_t bl_pix_inverseburn_Y(uint8_t y1, uint8_t y2)
uint8_t a, b, new_Y;
a = y1;
b = y2;
if (a < 16) {
new_Y = 16;
if (a < pixel_Y_lo_) {
new_Y = pixel_Y_lo_;
} else {
new_Y = 0xff - (((0xff - b) >> 8) / a);
}
@@ -732,9 +732,9 @@ uint8_t bl_pix_inverseburn_Y(uint8_t y1, uint8_t y2)
uint8_t bl_pix_colordodge_Y(uint8_t y1, uint8_t y2)
{
if(y2 < 16) y2 = 16;
if(y1 > 235) y1 = 235;
return ((y2 >> 8) / (0xff - y1));
if(y1 > pixel_Y_hi_ )
y1 = pixel_Y_hi_;
return ((y2 >> 8) / (256 - y1));
}
uint8_t bl_pix_mulsub_Y(uint8_t y1, uint8_t y2)

View File

@@ -33,6 +33,17 @@
#define func_additive(a,b) ( a + (2 * b) - 235 )
#define func_substractive(a,b) ( a + (b - 235) )
extern int pixel_Y_hi_;
extern int pixel_U_hi_;
extern int pixel_Y_lo_;
extern int pixel_U_lo_;
#define CLAMP_Y( a ) ( a < pixel_Y_lo_ ? pixel_Y_lo_ : (a > pixel_Y_hi_ ? pixel_Y_hi_ : a ) )
#define CLAMP_UV( a )( a < pixel_U_lo_ ? pixel_U_lo_ : (a > pixel_U_hi_ ? pixel_U_hi_ : a ) )
extern void set_pixel_range(uint8_t Yhi,uint8_t Uhi, uint8_t lo);
#ifdef HAVE_MMX
#define MMX_load8byte_mm7(data)__asm__("\n\t movq %0,%%mm7\n": "=m" (data):)
#endif

View File

@@ -84,7 +84,7 @@ void complexinvert_apply(VJFrame *frame, int width,
uint8_t *Y2 = frame->data[0];
uint8_t *Cb2= frame->data[1];
uint8_t *Cr2= frame->data[2];
int iy=16,iu=128,iv=128;
int iy=pixel_Y_lo_,iu=128,iv=128;
_rgb2yuv( r,g,b, iy,iu,iv );
_y = (float) iy;
aa = (float) iu;
@@ -170,28 +170,15 @@ void complexinvert_apply(VJFrame *frame, int width,
kbg = 255;
}
val = 255 - ((Y[pos] + (kbg * bg_y[pos])) >> 8);
if (val < 16)
val = 16;
else if (val > 235)
val = 235;
Y[pos] = val;
val = 255 - ((Y[pos] + (kbg * bg_y[pos])) >> 8);
Y[pos] = CLAMP_Y(val);
val = 255 - ((Cb[pos] + (kbg * bg_cb[pos])) >> 8);
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cb[pos] = val;
val = 255 - ( (Cr[pos] + (kbg * bg_cr[pos])) >> 8);
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cr[pos] = val;
Cb[pos] = CLAMP_UV(val);
val = 255 - ( (Cr[pos] + (kbg * bg_cr[pos])) >> 8);
Cr[pos] = CLAMP_UV(val);
}
}
}

View File

@@ -93,7 +93,7 @@ void complexsaturation_apply(VJFrame *frame, int width,
uint8_t *Y2 = frame->data[0];
uint8_t *Cb2= frame->data[1];
uint8_t *Cr2= frame->data[2];
int iy=16,iu=128,iv=128;
int iy=pixel_Y_lo_,iu=128,iv=128;
_rgb2yuv( r,g,b, iy,iu,iv );
_y = (float) iy;
aa = (float) iu;
@@ -179,25 +179,13 @@ void complexsaturation_apply(VJFrame *frame, int width,
}
val = (Y[pos] + (kbg * bg_y[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 235)
val = 235;
Y[pos] = val;
Y[pos] = CLAMP_Y(val);
val = (Cb[pos] + (kbg * bg_cb[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cb[pos] = val;
Cb[pos] = CLAMP_UV(val);
val = (Cr[pos] + (kbg * bg_cr[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cr[pos] = val;
Cr[pos] = CLAMP_UV(val);
int _cb = Cb[pos] - 128;
int _cr = Cr[pos] - 128;

View File

@@ -259,25 +259,13 @@ void complexthreshold_apply(VJFrame *frame, VJFrame *frame2, int width,
}
val = Y[pos] + (kbg * bg_y[pos]) >> 8;
if (val < 16)
val = 16;
else if (val > 235)
val = 235;
Y[pos] = val;
Y[pos] = CLAMP_Y(val);
val = Cb[pos] + (kbg * bg_cb[pos]) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cb[pos] = val;
Cb[pos] = CLAMP_UV(val);
val = Cr[pos] + (kbg * bg_cr[pos]) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cr[pos] = val;
Cr[pos] = CLAMP_UV(val);
}
}
}

View File

@@ -41,8 +41,8 @@ vj_effect *constantblend_init(int w, int h)
ve->limits[1][0] = 31;
ve->limits[0][1] = 0; // scale from 0.0 to 5.0 (only luma)
ve->limits[1][1] = 500;
ve->limits[0][2] = 16;
ve->limits[1][2] = 235;
ve->limits[0][2] = pixel_Y_lo_;
ve->limits[1][2] = pixel_Y_hi_;
ve->defaults[0] = 1; // blend type (additive)
ve->defaults[1] = 110; // scale before blend
ve->defaults[2] = 16; // constant Y
@@ -67,9 +67,7 @@ void constantblend_apply( VJFrame *frame, int width, int height,
for (i = 0; i < len; i++)
{
// keep black real black ? how ?
int tmp_val =(int)( ((float) *(Y)) * s);
if(tmp_val > 235) tmp_val = 235; else if(tmp_val < 16) tmp_val = 16;
*(Y)++ = blend_y( (uint8_t) ( (uint8_t) tmp_val ) , y );
}

View File

@@ -19,7 +19,7 @@
*/
#include "contrast.h"
#include "common.h"
vj_effect *contrast_init(int w, int h)
{
vj_effect *ve = (vj_effect *) vj_malloc(sizeof(vj_effect));
@@ -59,19 +59,15 @@ void contrast_cb_apply(VJFrame *frame, int width,int height, int *s) {
cb *= s[2];
cb = (cb + 50)/100;
cb += 128;
if(cb > 235) cb = 235;
if(cb < 16) cb = 16;
cr = Cr[r];
cr -= 128;
cr *= s[2];
cr = (cr + 50)/100;
cr += 128;
if(cr > 235) cr = 235;
if(cr < 16) cr = 16;
Cb[r] = cb;
Cr[r] = cr;
Cb[r] = CLAMP_UV(cb);
Cr[r] = CLAMP_UV(cr);
}
}
@@ -87,9 +83,7 @@ void contrast_y_apply(VJFrame *frame, int width, int height, int *s) {
m *= s[1];
m = (m + 50)/100;
m += 128;
if ( m > 240) m = 240;
if ( m < 16) m = 16;
Y[r] = m;
Y[r] = CLAMP_Y(m);
}
}

View File

@@ -19,6 +19,7 @@
*/
#include "crosspixel.h"
#include "common.h"
#include <stdlib.h>
static uint8_t *cross_pixels[3];
@@ -83,7 +84,7 @@ void crosspixel_apply(VJFrame *frame, int w, int h, int t,int v) {
memcpy( cross_pixels[2], Cr, uv_len);
if(t==0) {
memset(Y, 16, len);
memset(Y, pixel_Y_lo_, len);
memset(Cb, 128, uv_len);
memset(Cr, 128, uv_len);
}

View File

@@ -252,11 +252,11 @@ void diff_apply(void *ed, VJFrame *frame,
{
if(dst[i] != 0xff)
{
Y[i] = 16;
Y[i] = pixel_Y_lo_;
}
else
{
Y[i] = 235;
Y[i] = pixel_Y_hi_;
}
}
Cr[i] = 128;

View File

@@ -65,8 +65,6 @@ void dither_apply(VJFrame *frame, int width, int height, int size,
/* Luminance , dither image. Do
this for U and V too, see what happens hehe */
v = ((long) Y[((h_ * width) + w_)] + d);
if (v > 255)
v = 216;
Y[(h_ * width) + w_] = (uint8_t) ((v >> 7) << 7);
}
}

View File

@@ -21,6 +21,7 @@
#include "emboss.h"
#include <stdlib.h>
#include <stdio.h>
#include "common.h"
vj_effect *emboss_init(int w, int h)
{
vj_effect *ve = (vj_effect *) vj_malloc(sizeof(vj_effect));
@@ -57,9 +58,9 @@ void simpleedge_framedata(VJFrame *frame, int width, int height)
c3 = Y[(y + 1) * width + (x + 1)];
if (b2 > a1 && b2 > a2 && b2 > a3 &&
b2 > b1 && b2 > b3 && b3 > c1 && b2 > c2 && b2 > c2)
Y[y * width + x] = 235;
Y[y * width + x] = pixel_Y_hi_;
else
Y[y * width + x] = 16;
Y[y * width + x] = pixel_Y_lo_;
}
}
}
@@ -100,8 +101,7 @@ void another_try_edge(VJFrame *frame, int w, int h) {
(Y[r+c] * -8) + (Y[r+c+1] * -1) +
(Y[r+c+w] * -1) + (Y[r+c+w-1] * -1) +
(Y[r+c+w+1] * -1))/9;
if(p>240) p = 240; else if ( p < 16 ) p = 16;
Y[r+c] = p;
Y[r+c] = CLAMP_Y(p);
}
}
}
@@ -129,9 +129,7 @@ void lines_white_balance_framedata(VJFrame *frame, int width, int height)
Y[r + 1 + c - 1] -
Y[r + 1 + c] - Y[r + 1 + c + 1]
) / 9;
if (val < 16 || val > 235)
val = 235;
Y[c + r] = val;
Y[c + r] = CLAMP_Y(val);
}
}
}
@@ -157,9 +155,7 @@ void white_emboss_framedata(VJFrame *frame, int width, int height)
Y[r + 1 + c - 1] -
Y[r + 1 + c] - Y[r + 1 + c + 1]
) / 9;
if (val < 16 || val > 235)
val = 235;
Y[c + r] = val;
Y[c + r] = CLAMP_Y(val);
}
}
@@ -200,9 +196,7 @@ void gray_emboss_framedata(VJFrame *frame, int width, int height)
Y[r + 1 + c - 1] -
Y[r + 1 + c] - Y[r + 1 + c + 1]
) / 9;
if (val < 16 || val > 235)
val = 16;
Y[r + c] = val;
Y[r + c] = CLAMP_Y(val);
}
}
@@ -230,9 +224,7 @@ void aggressive_emboss_framedata(VJFrame *frame, int width, int height)
Y[r + 1 + c - 1] +
Y[r + 1 + c] + Y[r + 1 + c + 1]
) / 9;
if (val < 16 || val > 235)
val = 16;
Y[c + r] = val;
Y[c + r] = CLAMP_Y(val);
}
}

View File

@@ -20,7 +20,7 @@
#include "enhancemask.h"
#include "common.h"
vj_effect *enhancemask_init(int width, int height)
{
vj_effect *ve = (vj_effect *) vj_malloc(sizeof(vj_effect));
@@ -83,8 +83,8 @@ void enhancemask_apply(VJFrame *frame, int width, int height, int *s ) {
d /= 100;
m = m + d;
// a = Y[r];
if( m > 240) m = 240;
if( m < 16) m = 16;
if( m > pixel_Y_hi_) m = pixel_Y_hi_;
if( m < pixel_Y_lo_) m = pixel_Y_lo_;
// Y[r] = (m * op0 + a * op1) / 255;
Y[r] = m;
}
@@ -94,8 +94,8 @@ void enhancemask_apply(VJFrame *frame, int width, int height, int *s ) {
d *= s[0];
d /= 100;
m = m + d;
if( m > 240) m = 240;
if( m < 16) m = 16;
if( m > pixel_Y_hi_) m = pixel_Y_hi_;
if( m < pixel_Y_lo_) m = pixel_Y_lo_;
Y[r] = m;
}

View File

@@ -180,7 +180,7 @@ void fisheye_apply(VJFrame *frame, int w, int h, int v )
{
if(cached_coords[i] == -1)
{
Y[i] = 16;
Y[i] = pixel_Y_lo_;
Cb[i] = 128;
Cr[i] = 128;
}

View File

@@ -102,31 +102,24 @@ void flare_exclusive(VJFrame *frame, VJFrame *frame2, int width, int height, int
a = Y[i];
b = Y2[i];
// if(a < 16) a = 16; else if(a > 235) a = 235;
// if(b < 16) b = 16; else if(b > 235) b = 235;
a *= o1;
b *= o2;
a = a >> 8;
b = b >> 8;
c = (a+b) - ((a * b) >> 8);
if( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i]-128;
b = Cb2[i]-128;
c = (a + b) - (( a * b) >> 8);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i]-128;
b = Cr2[i]-128;
c = (a + b) - ((a*b) >> 8);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -151,24 +144,19 @@ void flare_additive(VJFrame *frame, VJFrame *frame2, int width,
a = (Y[i]*o1) >> 7;
b = (Y2[i]*o2) >> 7;
c = a + (( 2 * b ) - 255);
if( c < 16) c = 16; else if ( c > 235 ) c = 235;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i];
b = Cb2[i];
c = a + ( ( 2 * b ) - 255 );
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Cb[i] = c ;
Cb[i] = CLAMP_UV(c);
a = Cr[i] ;
b = Cr2[i] ;
c = a + ( ( 2 * b ) - 255 );
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Cr[i] = c ;
Cr[i] = CLAMP_UV(c);
}
}
@@ -188,27 +176,21 @@ void flare_unfreeze( VJFrame *frame, VJFrame *frame2, int w, int h, int op_a ) {
{
a = Y[i];
b = Y2[i];
if ( a < 16 ) a = 16;
// if ( b < 16 ) b = 16;
if ( a < 1 ) a = 1;
c = 255 - (( op_a - b) * (op_a - b)) / a;
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Y[i] = c;
Y[i] = CLAMP_Y(c);
a = Cb[i];
b = Cb2[i];
if ( a < 16) a = 16;
// if ( b < 16) b = 16;
if ( a < 1) a = 1;
c = 255 - (( 255 - b) * ( 255 - b )) / a;
if ( c < 16 ) c = 16; else if ( c > 235 ) c = 235;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i];
b = Cr2[i];
if ( a < 16 ) a = 16;
// if ( b < 16 ) b = 16;
if ( a < 1 ) a = 1;
c = 255 - ((255 -b ) * (255 - b)) /a ;
if ( c < 16 ) c = 16; else if ( c > 235) c = 235;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}

View File

@@ -74,12 +74,10 @@ uint8_t blend_func1(uint8_t a, uint8_t b) {
uint8_t blend_func2(uint8_t a, uint8_t b) {
uint8_t val;
if(a < 16) a = 16;
if(b < 16) b = 16;
if(a < pixel_Y_lo_) a = pixel_Y_lo_;
if(b < pixel_Y_lo_) b = pixel_Y_lo_;
val = 255 - ((255-b) * (255-b))/a;
if(val < 16)val=16;
if(val > 235) val=235;
return val;
return CLAMP_Y(val);
}
uint8_t blend_func3(uint8_t a , uint8_t b) {
@@ -89,28 +87,23 @@ uint8_t blend_func3(uint8_t a , uint8_t b) {
uint8_t blend_func4(uint8_t a, uint8_t b) {
uint8_t val;
if(b > 235) b = 235;
if(b > pixel_Y_hi_) b = pixel_Y_hi_;
val = (a * a) / ( 255 - b );
if(val < 16) val = a;
if(val > 235) val = a;
return val;
return CLAMP_Y(val);
}
uint8_t blend_func5(uint8_t a, uint8_t b) {
uint8_t val;
int c = 255 - b;
if(c<16)c=16;
if( c < pixel_Y_lo_ )
c = pixel_Y_lo_;
val = b / c;
if(val > 235) val = 235;
if(val < 16) val = 16;
return val;
return CLAMP_Y(val);
}
uint8_t blend_func6(uint8_t a, uint8_t b) {
uint8_t val = a + (2 * (b)) - 235;
if(val < 16) val = 16;
if(val > 235) val = 235;
return val;
uint8_t val = a + (2 * (b)) - 255;
return CLAMP_Y(val);
}
uint8_t blend_func7(uint8_t a, uint8_t b) {
@@ -121,8 +114,7 @@ uint8_t blend_func8(uint8_t a, uint8_t b) {
int c;
if(b < 128) c = (a * b) >> 7;
else c = 255 - ((255-b)*(255-a)>>7);
if(c<16)c=16;
return (uint8_t) c;
return CLAMP_Y(c);
}
@@ -166,7 +158,7 @@ void keyselect_apply( VJFrame *frame, VJFrame *frame2, int width,
uint8_t *Y2 = frame2->data[0];
uint8_t *Cb2= frame2->data[1];
uint8_t *Cr2= frame2->data[2];
int iy=16,iu=128,iv=128;
int iy=pixel_Y_lo_,iu=128,iv=128;
_rgb2yuv( r,g,b, iy,iu,iv );
_y = (float) iy;
aa = (float) iu;

View File

@@ -94,14 +94,6 @@ void opacity_by_threshold_(uint8_t * yuv1[3], uint8_t * yuv2[3], int width,
for (x = 0; x < width; x++) {
a1 = yuv1[0][x + y];
a2 = yuv2[0][x + y];
if (a1 < 16)
a1 = 16;
else if (a1 > 235)
a1 = 235;
if (a2 < 16)
a2 = 16;
else if (a2 > 235)
a2 = 235;
if (a2 > threshold && a2 < threshold2) {
yuv1[0][x + y] = (op0 * a1 + op1 * a2) >> 8;
yuv1[1][x + y] =

View File

@@ -75,9 +75,6 @@ void lumakey_simple(uint8_t * yuv1[3], uint8_t * yuv2[3], int width,
Y = (op0 * a1 + op1 * a2 )/255;
Cb = (op0 * yuv1[1][x+y] + op1 * yuv2[1][x+y])/255;
Cr =(op0 * yuv1[2][x+y] + op1 * yuv2[2][x+y])/255;
yuv1[0][x+y] = Y < 16 ? 16: Y > 240 ? 240 : Y;
yuv1[1][x+y] = Cb < 16 ? 16 : Cb > 235 ? 235 : Cb;
yuv1[2][x+y] = Cr < 16 ? 16 : Cr > 235 ? 235 : Cr;
}
*/

View File

@@ -22,7 +22,7 @@
#include <libvje/internal.h>
#include "magicoverlays.h"
#include "common.h"
/* 04/01/03: added transparency parameters for frame a and frame b in each function */
vj_effect *lumamagick_init(int width, int height)
@@ -72,30 +72,18 @@ void _lumamagick_adddistorted(VJFrame *frame, VJFrame *frame2,
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
c = a + b;
if (c > 235)
c = 235;
if (c < 16)
c = 16;
Y[i] = c;
Y[i] = CLAMP_Y(c);
}
for (i = 0; i < uv_len; i++) {
a = Cb[i];
b = Cb2[i];
c = a + b;
if (c > 240)
c = 240;
if (c < 16)
c = 16;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i];
b = Cr2[i];
c = a + b;
if (c > 240)
c = 240;
if (c < 16)
c = 16;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -251,8 +239,8 @@ void _lumamagick_divide(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
b = (Y[i] * opacity_a) * (Y[i] * opacity_a);
c = 255 - (Y2[i] * opacity_b);
if (c < 16)
c = 16;
if (c < pixel_Y_lo_)
c = pixel_Y_lo_;
a = b / c;
Y[i] = a;
}
@@ -271,10 +259,6 @@ void _lumamagick_additive(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
a = (Y[i] * opacity_a) + (2 * (Y2[i] * opacity_b)) - 255;
// if (a < 16)
// a = 16;
// if (a > 235)
// a = 235;
Y[i] = a;
}
}
@@ -312,16 +296,16 @@ void _lumamagick_softburn(VJFrame *frame, VJFrame *frame2, int width,
b = Y2[i] * opacity_b;
if (a + b < 255) {
if (a > 235)
if (a > pixel_Y_hi_)
c = a;
else
c = (b >> 7) / (255 - a);
c = (b >> 7) / (256 - a);
} else {
if (b < 16)
b = 16;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = 255 - (((255 - a) >> 7) / b);
if (c < 16)
c = 16;
if (c < pixel_Y_lo_)
c = pixel_Y_lo_;
}
Y[i] = c;
}
@@ -341,8 +325,8 @@ void _lumamagick_inverseburn(VJFrame *frame, VJFrame *frame2,
for (i = 0; i < len; i++) {
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
if (a < 16)
c = 16;
if (a < pixel_Y_lo_)
c = pixel_Y_lo_;
else
c = 255 - (((255 - b) >> 8) / a);
Y[i] = c;
@@ -364,10 +348,10 @@ void _lumamagick_colordodge(VJFrame *frame, VJFrame *frame2,
for (i = 0; i < len; i++) {
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
if (a >= 235)
c = 235;
if (a >= pixel_Y_hi_)
c = pixel_Y_hi_;
else
c = (b >> 8) / (235 - a);
c = (b >> 8) / (pixel_Y_hi_ - a);
Y[i] = c;
}
@@ -386,9 +370,9 @@ void _lumamagick_mulsub(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
a = Y[i] * opacity_a;
b = (235 - Y2[i]) * opacity_b;
if (b < 16)
b = 16;
b = (pixel_Y_hi_ - Y2[i]) * opacity_b;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = a / b;
Y[i] = c;
}
@@ -487,10 +471,10 @@ void _lumamagick_basecolor(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
if (a < 16)
a = 16;
if (b < 16)
b = 16;
if (a < pixel_Y_lo_)
a = pixel_Y_lo_;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = a * b >> 7;
d = c + a * ((255 - (((255 - a) * (255 - b)) >> 7) - c) >> 7); //8
Y[i] = d;
@@ -512,8 +496,8 @@ void _lumamagick_freeze(VJFrame *frame, VJFrame *frame2, int width,
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
if (b < 16)
c = 16;
if (b < pixel_Y_lo_)
c = pixel_Y_lo_;
else
c = 255 - ((255 - a) * (255 - a)) / b;
@@ -536,12 +520,12 @@ void _lumamagick_unfreeze(VJFrame *frame, VJFrame *frame2, int width,
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
if (a < 16)
c = 16;
if (a < pixel_Y_lo_)
c = pixel_Y_lo_;
else
c = 255 - ((255 - b) * (255 - b)) / a;
if (c < 16)
c = 16;
c = 255 - ((256 - b) * (256 - b)) / a;
if (c < pixel_Y_lo_)
c = pixel_Y_lo_;
Y[i] = c;
}
@@ -565,9 +549,9 @@ void _lumamagick_hardlight(VJFrame *frame, VJFrame *frame2, int width,
if (b < 128)
c = (a * b) >> 7;
else
c = 255 - ((255 - b) * (255 - a) >> 7);
if (c < 16)
c = 16;
c = 255 - ((256 - b) * (256 - a) >> 7);
if (c < pixel_Y_lo_)
c = pixel_Y_lo_;
Y[i] = c;
}
@@ -852,12 +836,12 @@ void _lumamagick_addtest4(VJFrame *frame, VJFrame *frame2, int width,
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
b = b - 255;
if (a < 16)
a = 16;
if (b < 16)
if (a < pixel_Y_lo_)
a = pixel_Y_lo_;
if (b < pixel_Y_lo_)
b = Y2[i] * opacity_b;
if (b < 16)
b = 16;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = (a * a) / b;
Y[i] = c;
@@ -919,19 +903,19 @@ void _lumamagick_addtest3(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
a = Y[i] * opacity_a;
b = (255 - Y2[i]) * opacity_b;
if (b < 16)
b = 16;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = (a * a) / b;
Y[i] = c;
}
for (i = 0; i < uv_len; i++) {
//a = Cb[i] * opacity_a;
//b = (235 - Cb2[i]) * opacity_b;
//if (b < 16) b = Cb2[i] * opacity_b;
//b = (pixel_Y_hi_ - Cb2[i]) * opacity_b;
//if (b < pixel_Y_lo_) b = Cb2[i] * opacity_b;
a = Cb[i];
b = 255 - Cb2[i];
if (b < 16)
if (b < pixel_U_lo_)
b = Cb2[i];
c = (a >> 1) + (b >> 1);
@@ -939,17 +923,16 @@ void _lumamagick_addtest3(VJFrame *frame, VJFrame *frame2, int width,
Cb[i] = c;
//a = Cr[i] * opacity_a;
//b = (235 - Cr2[i]) * opacity_b;
//if (b < 16) b = Cr2[i] * opacity_b;
//b = (pixel_Y_hi_ - Cr2[i]) * opacity_b;
//if (b < pixel_Y_lo_) b = Cr2[i] * opacity_b;
a = Cr[i];
b = 255 - Cr2[i];
if (b < 16)
if (b < pixel_U_lo_)
b = Cr2[i];
c = (a >> 1) + (b >> 1);
//c = (a * a) / ( b - 255 ) ;
Cr[i] = c;
@@ -972,12 +955,12 @@ void _lumamagick_addlum(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
a = Y[i] * opacity_a;
b = Y2[i] * opacity_b;
if (b > 235)
b = 235;
if (b > pixel_Y_hi_)
b = pixel_Y_hi_;
if ((255 - b) > 0) {
c = (a * a) / 255;
} else {
c = (a * a) / (255 - b);
c = (a * a) / (256 - b);
}
Y[i] = c;

View File

@@ -22,7 +22,7 @@
#include <libvje/internal.h>
#include <stdlib.h>
#include "common.h"
vj_effect *overlaymagic_init(int w, int h)
{
vj_effect *ve = (vj_effect *) vj_malloc(sizeof(vj_effect));
@@ -61,31 +61,19 @@ void _overlaymagic_adddistorted(VJFrame *frame, VJFrame *frame2,
a = Y[i];
b = Y2[i];
c = a + b;
if (c > 240)
c = 240;
if (c < 16)
c = 16;
Y[i] = c;
Y[i] = CLAMP_Y(c);
}
for (i = 0; i < uv_len; i++) {
a = Cb[i];
b = Cb2[i];
c = a + b;
if (c > 235)
c = 235;
if (c < 16)
c = 16;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i];
b = Cr2[i];
c = a + b;
if (c > 235)
c = 235;
if (c < 16)
c = 16;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -217,7 +205,7 @@ void _overlaymagic_divide(VJFrame *frame, VJFrame *frame2, int width,
b = Y[i] * Y[i];
c = 255 - Y2[i];
if (c == 0)
c = 16;
c = pixel_Y_lo_;
a = b / c;
Y[i] = a;
}
@@ -234,9 +222,7 @@ void _overlaymagic_additive(VJFrame *frame, VJFrame *frame2,
int a;
while(len--) {
a = Y[len] + (2 * Y2[len]) - 255;
// a = Y[len] + (2 * (Y2[len]-128)&255);
if(a < 16) a = 16; else if (a > 235) a = 235;
Y[len] = a;
Y[len] = CLAMP_Y(a);
}
}
@@ -270,14 +256,14 @@ void _overlaymagic_softburn(VJFrame *frame, VJFrame *frame2,
a = Y[i];
b = Y2[i];
if (a + b < 240) {
if (a == 235)
if (a + b < pixel_Y_hi_) {
if (a == pixel_Y_hi_)
c = a;
else
c = (b >> 7) / (255 - a);
c = (b >> 7) / (256 - a);
} else {
if (b < 16)
b = 16;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = 255 - (((255 - a) >> 7) / b);
}
Y[i] = c;
@@ -296,15 +282,11 @@ void _overlaymagic_inverseburn(VJFrame *frame, VJFrame *frame2,
for (i = 0; i < len; i++) {
a = Y[i];
b = Y2[i];
if (a < 16)
c = 16;
if (a < pixel_Y_lo_)
c = pixel_Y_lo_;
else
c = 255 - (((255 - b) >> 8) / a);
if (c < 16)
c = 16;
if (c > 235)
c = 235;
Y[i] = c;
Y[i] = CLAMP_Y(c);
}
}
@@ -321,13 +303,13 @@ void _overlaymagic_colordodge(VJFrame *frame, VJFrame *frame2,
for (i = 0; i < len; i++) {
a = Y[i];
b = Y2[i];
if (a >= 235)
c = 235;
if (a >= pixel_Y_hi_)
c = pixel_Y_hi_;
else
c = (b >> 8) / (256 - a);
if (c > 235)
c = 235;
if (c > pixel_Y_hi_)
c = pixel_Y_hi_;
Y[i] = c;
}
}
@@ -344,8 +326,8 @@ void _overlaymagic_mulsub(VJFrame *frame, VJFrame *frame2, int width,
for (i = 0; i < len; i++) {
a = Y[i];
b = 255 - Y2[i];
if (b < 16)
b = 16;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = a / b;
Y[i] = c;
}
@@ -429,16 +411,14 @@ void _overlaymagic_exclusive(VJFrame *frame, VJFrame *frame2,
b = Cb2[i]-128;
c = a +b - (( a * b ) >> 8);
c += 128;
if ( c < 16 ) c = 16; else if ( c > 240 ) c = 240;
Cb[i] = c;
Cb[i] = CLAMP_UV(c);
a = Cr[i] - 128;
b = Cr2[i] - 128;
c = a + b - (( a * b) >> 8);
c += 128;
if ( c < 16) c = 16; else if ( c > 240 ) c = 240;
Cr[i] = c;
Cr[i] = CLAMP_UV(c);
}
}
@@ -454,10 +434,10 @@ void _overlaymagic_basecolor(VJFrame *frame, VJFrame *frame2,
for (i = 0; i < len; i++) {
a = Y[i];
b = Y2[i];
if (a < 16)
a = 16;
if (b < 16)
b = 16;
if (a < pixel_Y_lo_)
a = pixel_Y_lo_;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = a * b >> 7;
d = c + a * ((255 - (((255 - a) * (255 - b)) >> 7) - c) >> 7); //8
Y[i] = d;
@@ -477,10 +457,10 @@ void _overlaymagic_freeze(VJFrame *frame, VJFrame *frame2, int width,
a = Y[i];
b = Y2[i];
if (b < 16)
c = a; //16
if (b < pixel_Y_lo_)
c = a;
else
c = 255 - ((255 - a) * (255 - a)) / b;
c = 255 - ((256 - a) * (256 - a)) / b;
Y[i] = c;
}
}
@@ -498,8 +478,8 @@ void _overlaymagic_unfreeze(VJFrame *frame, VJFrame *frame2,
a = Y[i];
b = Y2[i];
if (a < 16)
c = 16;
if (a < pixel_Y_lo_)
c = pixel_Y_lo_;
else
c = 255 - ((255 - b) * (255 - b)) / a;
Y[i] = c;
@@ -786,12 +766,12 @@ void _overlaymagic_addtest4(VJFrame *frame, VJFrame *frame2,
a = Y[i];
b = Y2[i];
b = b - 255;
if (a < 16)
a = 16;
if (b < 16)
if (a < pixel_Y_lo_)
a = pixel_Y_lo_;
if (b < pixel_Y_lo_)
b = Y2[i];
if (b < 16)
b = 16;
if (b < pixel_Y_lo_)
b = pixel_Y_lo_;
c = (a * a) / b;
Y[i] = c;
@@ -812,30 +792,30 @@ void _overlaymagic_try
a = Y[i];
b = Y[i];
if (b < 16)
p = 16;
if (b < pixel_Y_lo_)
p = pixel_Y_lo_;
else
p = 255 - ((255 - a) * (255 - a)) / b;
if (p < 16)
p = 16;
p = 255 - ((256 - a) * (256 - a)) / b;
if (p < pixel_Y_lo_)
p = pixel_Y_lo_;
/* calc q */
a = Y2[i];
b = Y2[i];
if (b < 16)
q = 16;
if (b < pixel_Y_lo_)
q = pixel_Y_lo_;
else
q = 255 - ((255 - a) * (255 - a)) / b;
if (b < 16)
q = 16;
q = 255 - ((256 - a) * (256 - a)) / b;
if (b < pixel_Y_lo_)
q = pixel_Y_lo_;
/* calc pixel */
if (q < 16)
q = 16;
if (q < pixel_Y_lo_)
q = pixel_Y_lo_;
else
q = 255 - ((255 - p) * (255 - a)) / q;
if (q < 16)
q = 16;
q = 255 - ((256 - p) * (256 - a)) / q;
if (q < pixel_Y_lo_)
q = pixel_Y_lo_;
Y[i] = q;

View File

@@ -28,8 +28,8 @@ vj_effect *pencilsketch_init(int w, int h)
ve->limits[1] = (int *) vj_malloc(sizeof(int) * ve->num_params);
ve->defaults = (int *) vj_malloc(sizeof(int) * ve->num_params);
ve->defaults[0] = 0;/* type */
ve->defaults[1] = 16; /* min */
ve->defaults[2] = 235; /* max */
ve->defaults[1] = pixel_Y_lo_; /* min */
ve->defaults[2] = pixel_Y_hi_; /* max */
ve->limits[0][0] = 0;
ve->limits[1][0] = 8;
ve->limits[0][1] = 0;
@@ -57,7 +57,6 @@ typedef uint8_t (*_pcbcr) (uint8_t a, uint8_t b);
uint8_t p =
255 - ( abs ( (255 - abs((255-a)-a)) - (255-abs((255-b)-b))) );
p = (abs(abs(p-b) - b));
// if( p >= 16 || p <= t_max) p = 16 ; else p = 240;
return p;
}
@@ -69,7 +68,6 @@ typedef uint8_t (*_pcbcr) (uint8_t a, uint8_t b);
static uint8_t _pcf_dneg2(uint8_t a,uint8_t b, int t_max)
{
uint8_t p = ( 255 - abs ( (255-a)- b ) );
if( p >= 16 || p <= t_max) p = 16 ; else p = 240;
return p;
}
@@ -77,29 +75,24 @@ typedef uint8_t (*_pcbcr) (uint8_t a, uint8_t b);
{
uint8_t p = ( (b < a) ? b : a);
p = ( 255 - abs( (255-p) - b ) );
// if( p >= 16 || p <= t_max) p = 16 ; else p = 240;
return p;
}
static uint8_t _pcf_max(uint8_t a,uint8_t b, int t_max)
{
int p = ( (b > a) ? b : a);
if( p <= 0 )
return 0;
p = ( 255 - ((255 - b) * (255 - b)) / p);
// if( p >= 16 || p <= t_max) p = 16 ; else p = 240;
int p = ( (b > a) ? b : a);
p = CLAMP_Y(p);
p = ( 255 - ((256 - b) * (256 - b)) / p);
return (uint8_t)p;
}
static uint8_t _pcf_pq(uint8_t a,uint8_t b, int t_max)
{
if(a <= 0 ) a=16;
if(b <= 0 ) b=16;
int p = 255 - ((255-a) * (255-a)) / a;
int q = 255 - ((255-b) * (255-b)) / b;
if(q <= 0 ) q=16;
p = ( 255 - ((255-p) * (255 - a)) / q);
// if( p >= 16 || p <= t_max) p = 16 ; else p = 240;
a = CLAMP_Y(a);
b = CLAMP_Y(b);
int p = 255 - ((256-a) * (256-a)) / a;
int q = 255 - ((256-b) * (256-b)) / b;
p = ( 255 - ((256-p) * (256 - a)) / q);
return (uint8_t)p;
}
@@ -109,8 +102,6 @@ typedef uint8_t (*_pcbcr) (uint8_t a, uint8_t b);
255 - ( abs ( (255 - abs((255-a)-a)) - (255-abs((255-b)-b))) );
p = (abs(abs(p-b) - b));
p = p + b - (( p * b ) >> 8);
// if( p >= 16 || p <= t_max) p = 16 ; else p = 240;
return p;
}
static uint8_t _pcbcr_color(uint8_t a,uint8_t b)
@@ -122,7 +113,7 @@ typedef uint8_t (*_pcbcr) (uint8_t a, uint8_t b);
static uint8_t _pcf_none(uint8_t a, uint8_t b, int t_max)
{
if( a >= 16 || a <= t_max) a = 16 ; else a = 240;
if( a > pixel_Y_lo_ || a <= t_max) a = pixel_Y_lo_ ; else a = pixel_Y_hi_;
return a;
}
@@ -174,7 +165,6 @@ void pencilsketch_apply(
for(i=0; i < len; i++)
{
y = Y[i];
// if( y < 16 ) y = 16; else if (y > 235) y = 235;
yb = y;
/* substract user defined mask from image */
@@ -194,7 +184,7 @@ void pencilsketch_apply(
}
else
{
Y[i] = 240;
Y[i] = pixel_Y_hi_;
}
}

View File

@@ -77,7 +77,7 @@ static int prepare_filmstrip(int film_length, int w, int h)
photo_list[i]->data[j] = vj_malloc(sizeof(uint8_t) * picture_width * picture_height );
if(!photo_list[i]->data[j])
return 0;
memset(photo_list[i]->data[j], (j==0 ? 16 : 128), picture_width *picture_height );
memset(photo_list[i]->data[j], (j==0 ? pixel_Y_lo_ : 128), picture_width *picture_height );
}
// val+= inc;
}
@@ -154,7 +154,7 @@ static void take_photo( uint8_t *plane, uint8_t *dst_plane, int w, int h, int in
if(sum > 0)
dst_plane[(dst_y*box_width)+dst_x] = sum / (step_y*step_x);
else
dst_plane[(dst_y*box_width)+dst_x] = 16;
dst_plane[(dst_y*box_width)+dst_x] = pixel_Y_lo_;
dst_x++;
}

View File

@@ -214,25 +214,13 @@ void rgbkey_apply1(VJFrame *frame, VJFrame *frame2, int width,
}
val = (Y[pos] + (kbg * bg_y[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 235)
val = 235;
Y[pos] = val;
Y[pos] = CLAMP_Y(val);
val = (Cb[pos] + (kbg * bg_cb[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cb[pos] = val;
Cb[pos] = CLAMP_UV(val);
val = (Cr[pos] + (kbg * bg_cr[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cr[pos] = val;
Cr[pos] = CLAMP_UV(val);
}
}
@@ -360,25 +348,13 @@ void rgbkey_apply2(VJFrame *frame, VJFrame *frame2, int width,
}
val = (Y[pos] + (kbg * bg_y[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 235)
val = 235;
Y[pos] = val;
Y[pos] = CLAMP_Y(val);
val = (Cb[pos] + (kbg * bg_cb[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cb[pos] = val;
Cb[pos] = CLAMP_UV(val);
val = (Cr[pos] + (kbg * bg_cr[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
Cr[pos] = val;
Cr[pos] = CLAMP_UV(val);
}
}
}

View File

@@ -191,24 +191,14 @@ void rgbkeysmooth_apply(VJFrame *frame, VJFrame *frame2, int width,
}
val = (Y[pos] + (kbg * bg_y[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 235)
val = 235;
val = CLAMP_Y(val);
Y[pos] = ((val*op0)+(fg_y[pos]*op1) )>>8 ;
val = (Cb[pos] + (kbg * bg_cb[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
val = CLAMP_UV(val);
Cb[pos] = ((val*op0) + (fg_cb[pos]*op1) )>>8;
val = (Cr[pos] + (kbg * bg_cr[pos])) >> 8;
if (val < 16)
val = 16;
else if (val > 240)
val = 240;
val = CLAMP_UV(val);
Cr[pos] = ((val*op0) + (fg_cr[pos]*op1) )>>8;
}

View File

@@ -67,7 +67,7 @@ int scratcher_malloc(int w, int h)
frame[0] =
(uint8_t *) vj_malloc(w * h * sizeof(uint8_t) * MAX_SCRATCH_FRAMES);
if(!frame[0]) return 0;
memset( frame[0], 16, w * h * MAX_SCRATCH_FRAMES );
memset( frame[0], pixel_Y_lo_, w * h * MAX_SCRATCH_FRAMES );
frame[1] =
(uint8_t *) vj_malloc( ((w * h)/4) * sizeof(uint8_t) * MAX_SCRATCH_FRAMES);
if(!frame[1]) return 0;

View File

@@ -167,7 +167,7 @@ void swirl_apply(VJFrame *frame, int w, int h, int v)
{
if(cached_coords[i] == -1)
{
Y[i] = 16;
Y[i] = pixel_Y_lo_;
Cb[i] = 128;
Cr[i] = 128;
}

View File

@@ -74,8 +74,8 @@ vj_effect *uvcorrect_init(int w, int h)
ve->defaults[2] = 128;
ve->defaults[3] = 10;
ve->defaults[4] = 10;
ve->defaults[5] = 16;
ve->defaults[6] = 240;
ve->defaults[5] = pixel_U_lo_;
ve->defaults[6] = pixel_U_hi_;
ve->description = "U/V Correction";
ve->sub_format = 0;

View File

@@ -22,7 +22,7 @@
#include "../../config.h"
#include <stdlib.h>
#include "../subsample.h"
#include "common.h"
vj_effect *videomask_init(int w,int h)
{
@@ -49,8 +49,8 @@ void videomask_apply(VJFrame *frame, VJFrame *frame2, int width,
unsigned int i, op0, op1;
const int len = frame->len;
const int uv_len = frame->uv_len;
const uint8_t pure_white_y = 235;
const uint8_t pure_white_c = 240;
const uint8_t pure_white_y = pixel_Y_hi_;
const uint8_t pure_white_c = pixel_U_hi_;
uint8_t *Y = frame->data[0];
uint8_t *Cb= frame->data[1];
uint8_t *Cr= frame->data[2];

View File

@@ -78,7 +78,7 @@ static int prepare_filmstrip(int film_length, int w, int h)
video_list[i]->data[j] = vj_malloc(sizeof(uint8_t) * picture_width * picture_height );
if(!video_list[i]->data[j])
return 0;
memset(video_list[i]->data[j], (j==0 ? 16 : 128), picture_width *picture_height );
memset(video_list[i]->data[j], (j==0 ? pixel_Y_lo_ : 128), picture_width *picture_height );
}
// val+= inc;
}
@@ -155,7 +155,7 @@ static void take_video( uint8_t *plane, uint8_t *dst_plane, int w, int h, int in
if(sum > 0)
dst_plane[(dst_y*box_width)+dst_x] = sum / (step_y*step_x);
else
dst_plane[(dst_y*box_width)+dst_x] = 16;
dst_plane[(dst_y*box_width)+dst_x] = pixel_Y_lo_;
dst_x++;
}

View File

@@ -184,7 +184,7 @@ static void take_photo( uint8_t *plane, uint8_t *dst_plane, int w, int h, int in
if(sum > 0)
dst_plane[(dst_y*box_width)+dst_x] = sum / (step_y*step_x);
else
dst_plane[(dst_y*box_width)+dst_x] = 16;
dst_plane[(dst_y*box_width)+dst_x] = pixel_Y_lo_;
dst_x++;
}

View File

@@ -30,7 +30,7 @@
#include <math.h>
#include <stdio.h>
#include <stdint.h>
#include "common.h"
static uint8_t *ripple_data[3];
static int stat;
@@ -102,7 +102,7 @@ int water_malloc(int width, int height)
{
ripple_data[0] = (uint8_t*)vj_malloc(sizeof(uint8_t) * width * height);
if(!ripple_data[0]) return 0;
memset( ripple_data[0], 16, width*height);
memset( ripple_data[0], pixel_Y_lo_, width*height);
map_h = height / 2 + 1;