reduce number of calculations and exclude alpha from slice fx

This commit is contained in:
veejay
2023-12-01 23:10:05 +01:00
parent 42ab61a646
commit cd2e60244e

View File

@@ -108,12 +108,13 @@ void slice_recalc(slice_t *s, int width, int height, int val) {
int *slice_xshift = s->slice_xshift; int *slice_xshift = s->slice_xshift;
int *slice_yshift = s->slice_yshift; int *slice_yshift = s->slice_yshift;
const int hval = val >> 1;
for(x = dx = 0; x < width; x++) for(x = dx = 0; x < width; x++)
{ {
if(dx==0) if(dx==0)
{ {
r = ((rand() & val))-((val>>1)+1); r = ((rand() & val))-( hval + 1);
dx = 8 + (rand() & ((val>>1)-1)); dx = 8 + (rand() & ( hval - 1));
} }
else else
{ {
@@ -123,7 +124,15 @@ void slice_recalc(slice_t *s, int width, int height, int val) {
} }
for(y=dy=0; y < height; y++) { for(y=dy=0; y < height; y++) {
if(dy==0) { r = (rand() & val)-((val>>1)+1); dy = 8 + (rand() & ((val>>1)-1)); } else dy--; if(dy==0)
{
r = (rand() & val)-(hval + 1);
dy = 8 + (rand() & (hval-1));
}
else
{
dy--;
}
slice_xshift[y] = r; slice_xshift[y] = r;
} }
} }
@@ -193,22 +202,24 @@ void slice_apply(void *ptr, VJFrame *frame, int *args ) {
} }
} }
int strides[4] = { len, len, len, len }; int strides[4] = { len, len, len, 0 };
vj_frame_copy( frame->data, slice_frame, strides ); vj_frame_copy( frame->data, slice_frame, strides );
for(y=0; y < height; y++){ for(y=0; y < height; y++){
for(x=0; x < width; x++) { for(x=0; x < width; x++) {
dx = x + slice_xshift[y] ; dy = y + slice_yshift[x]; dx = x + slice_xshift[y];
dy = y + slice_yshift[x];
if(dx < width && dy < height && dx >= 0 && dy >= 0) if(dx < width && dy < height && dx >= 0 && dy >= 0)
{ {
Y[(y*width)+x] = slice_frame[0][(dy*width)+dx]; Y[(y*width)+x] = slice_frame[0][(dy*width)+dx];
Cb[(y*width)+x] = slice_frame[1][(dy*width)+dx]; Cb[(y*width)+x] = slice_frame[1][(dy*width)+dx];
Cr[(y*width)+x] = slice_frame[2][(dy*width)+dx]; Cr[(y*width)+x] = slice_frame[2][(dy*width)+dx];
A[(y*width)+x] = slice_frame[3][(dy*width)+dx]; //A[(y*width)+x] = slice_frame[3][(dy*width)+dx];
} }
} }
} }
if( interpolate ) if( interpolate )
motionmap_interpolate_frame( s->motionmap, frame, s->N__, s->n__ ); motionmap_interpolate_frame( s->motionmap, frame, s->N__, s->n__ );