various fixes

This commit is contained in:
c0ntrol
2019-10-27 19:33:54 +01:00
parent 7252121928
commit 836a5aa2fd
6 changed files with 28 additions and 14 deletions

View File

@@ -92,25 +92,29 @@ void buffer_free( void *ptr )
static int put_frame( buffer_t *b, VJFrame *frame ) static int put_frame( buffer_t *b, VJFrame *frame )
{ {
VJFrame *dst = (VJFrame*) vj_malloc( sizeof(VJFrame) ); VJFrame *dst = (VJFrame*) vj_calloc( sizeof(VJFrame) );
if(!dst) { if(!dst) {
return 0; return 0;
} }
veejay_memcpy( dst, frame, sizeof(VJFrame) ); dst->data[0] = (uint8_t*) vj_malloc( sizeof(uint8_t) * (frame->len + frame->uv_len + frame->uv_len + frame->len) );
dst->data[0] = (uint8_t*) vj_malloc( sizeof(uint8_t) * (frame->len + frame->uv_len + frame->uv_len) );
if(!dst->data[0]) { if(!dst->data[0]) {
free(dst); free(dst);
return 0; return 0;
} }
dst->data[1] = dst->data[0] + frame->len; dst->data[1] = dst->data[0] + frame->len;
dst->data[2] = dst->data[1] + frame->uv_len; dst->data[2] = dst->data[1] + frame->uv_len;
dst->data[3] = dst->data[2] + frame->uv_len;
veejay_memcpy( dst->data[0], frame->data[0], frame->len ); veejay_memcpy( dst->data[0], frame->data[0], frame->len );
veejay_memcpy( dst->data[1], frame->data[1], frame->uv_len ); veejay_memcpy( dst->data[1], frame->data[1], frame->uv_len );
veejay_memcpy( dst->data[2], frame->data[2], frame->uv_len ); veejay_memcpy( dst->data[2], frame->data[2], frame->uv_len );
dst->stride[3] = 0; veejay_memcpy( dst->data[3], frame->data[3], frame->len );
dst->stride[3] = frame->stride[3];
dst->len = frame->len;
dst->uv_len = frame->uv_len;
dst->ssm = frame->ssm;
b->frames[ b->write_pos ] = dst; b->frames[ b->write_pos ] = dst;
@@ -129,6 +133,7 @@ static void get_frame( buffer_t *b, VJFrame *dst)
veejay_memcpy( dst->data[0], b->frames[ pos ]->data[0], b->frames[ pos ]->len ); veejay_memcpy( dst->data[0], b->frames[ pos ]->data[0], b->frames[ pos ]->len );
veejay_memcpy( dst->data[1], b->frames[ pos ]->data[1], b->frames[ pos ]->uv_len ); veejay_memcpy( dst->data[1], b->frames[ pos ]->data[1], b->frames[ pos ]->uv_len );
veejay_memcpy( dst->data[2], b->frames[ pos ]->data[2], b->frames[ pos ]->uv_len ); veejay_memcpy( dst->data[2], b->frames[ pos ]->data[2], b->frames[ pos ]->uv_len );
veejay_memcpy( dst->data[3], b->frames[ pos ]->data[3], b->frames[ pos ]->len );
dst->len = b->frames[ pos ]->len; dst->len = b->frames[ pos ]->len;
dst->uv_len = b->frames[ pos ]->uv_len; dst->uv_len = b->frames[ pos ]->uv_len;

View File

@@ -166,7 +166,7 @@ void rotozoom_free(void *ptr) {
if( r->test_roto[j] ) if( r->test_roto[j] )
free(r->test_roto[j]); free(r->test_roto[j]);
if( r->test_roto2[j] ) if( r->test_roto2[j] )
free(r->test_roto2); free(r->test_roto2[j]);
} }
free(r); free(r);

View File

@@ -186,7 +186,7 @@ void smear_apply( void *ptr, VJFrame *frame, int *args )
const unsigned int width = frame->width; const unsigned int width = frame->width;
const unsigned int height = frame->height; const unsigned int height = frame->height;
smear_t *s = (smear_t*) s; smear_t *s = (smear_t*) ptr;
if(motionmap_active(s->motionmap)) if(motionmap_active(s->motionmap))
{ {

View File

@@ -70,13 +70,15 @@ int init_instance( livido_port_t *my_instance )
return LIVIDO_ERROR_MEMORY_ALLOCATION; return LIVIDO_ERROR_MEMORY_ALLOCATION;
} }
livido_memset( particles, 0, sizeof(particles_t) );
particles->particles = (PARTICLE**) livido_malloc(sizeof(PARTICLE*) * MAX_PARTICLES ); particles->particles = (PARTICLE**) livido_malloc(sizeof(PARTICLE*) * MAX_PARTICLES );
if(!particles->particles) { if(!particles->particles) {
free(particles); free(particles);
return LIVIDO_ERROR_MEMORY_ALLOCATION; return LIVIDO_ERROR_MEMORY_ALLOCATION;
} }
particles->fire = (uint8_t*) livido_malloc( sizeof(uint8_t) * w * h ); particles->fire = (uint8_t*) livido_malloc( sizeof(uint8_t) * (w * h) + (w + w) );
if(!particles->fire) { if(!particles->fire) {
free(particles->particles); free(particles->particles);
free(particles); free(particles);
@@ -180,7 +182,7 @@ int process_instance( livido_port_t *my_instance, double timecode )
} }
const int lim = w * h;
uint32_t temp,index,buf; uint32_t temp,index,buf;
uint8_t *fire = parts->fire; uint8_t *fire = parts->fire;
@@ -207,10 +209,15 @@ int process_instance( livido_port_t *my_instance, double timecode )
temp = particles[i]->ypos * w + particles[i]->xpos; temp = particles[i]->ypos * w + particles[i]->xpos;
fire[temp] = particles[i]->colorindex; fire[temp] = particles[i]->colorindex;
fire[temp - 1] = particles[i]->colorindex; fire[temp - 1] = particles[i]->colorindex;
fire[temp + w] = particles[i]->colorindex; fire[temp + w] = particles[i]->colorindex;
if ( (temp-w) > 0 && (temp-w) < lim )
fire[temp - w] = particles[i]->colorindex; fire[temp - w] = particles[i]->colorindex;
fire[temp + 1] = particles[i]->colorindex; fire[temp + 1] = particles[i]->colorindex;
} }
} }

View File

@@ -113,6 +113,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version)
int palettes0[] = { int palettes0[] = {
LIVIDO_PALETTE_YUV420P, LIVIDO_PALETTE_YUV420P,
LIVIDO_PALETTE_YUV422P, LIVIDO_PALETTE_YUV422P,
LIVIDO_PALETTE_YUV444P,
0 0
}; };
@@ -121,7 +122,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version)
port = out_chans[0]; port = out_chans[0];
livido_set_string_value( port, "name", "Output Channel"); livido_set_string_value( port, "name", "Output Channel");
livido_set_int_array( port, "palette_list", 3, palettes0); livido_set_int_array( port, "palette_list", 4, palettes0);
livido_set_int_value( port, "flags", 0); livido_set_int_value( port, "flags", 0);
//@ setup parameters (INDEX type, 0-255) //@ setup parameters (INDEX type, 0-255)

View File

@@ -213,6 +213,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version)
int palettes0[] = { int palettes0[] = {
LIVIDO_PALETTE_YUV420P, LIVIDO_PALETTE_YUV420P,
LIVIDO_PALETTE_YUV422P, LIVIDO_PALETTE_YUV422P,
LIVIDO_PALETTE_YUV444P,
0 0
}; };
@@ -221,7 +222,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version)
port = out_chans[0]; port = out_chans[0];
livido_set_string_value( port, "name", "Output Channel"); livido_set_string_value( port, "name", "Output Channel");
livido_set_int_array( port, "palette_list", 3, palettes0); livido_set_int_array( port, "palette_list", 4, palettes0);
livido_set_int_value( port, "flags", 0); livido_set_int_value( port, "flags", 0);
//@ setup parameters (INDEX type, 0-255) //@ setup parameters (INDEX type, 0-255)