diff --git a/veejay-current/veejay-server/libvje/effects/buffer.c b/veejay-current/veejay-server/libvje/effects/buffer.c index 7b0c0564..37a293cb 100644 --- a/veejay-current/veejay-server/libvje/effects/buffer.c +++ b/veejay-current/veejay-server/libvje/effects/buffer.c @@ -92,25 +92,29 @@ void buffer_free( void *ptr ) 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) { 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) ); + dst->data[0] = (uint8_t*) vj_malloc( sizeof(uint8_t) * (frame->len + frame->uv_len + frame->uv_len + frame->len) ); if(!dst->data[0]) { free(dst); return 0; } dst->data[1] = dst->data[0] + frame->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[1], frame->data[1], 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; @@ -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[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[3], b->frames[ pos ]->data[3], b->frames[ pos ]->len ); dst->len = b->frames[ pos ]->len; dst->uv_len = b->frames[ pos ]->uv_len; diff --git a/veejay-current/veejay-server/libvje/effects/rotozoom.c b/veejay-current/veejay-server/libvje/effects/rotozoom.c index b61c0a2b..01175453 100644 --- a/veejay-current/veejay-server/libvje/effects/rotozoom.c +++ b/veejay-current/veejay-server/libvje/effects/rotozoom.c @@ -166,7 +166,7 @@ void rotozoom_free(void *ptr) { if( r->test_roto[j] ) free(r->test_roto[j]); if( r->test_roto2[j] ) - free(r->test_roto2); + free(r->test_roto2[j]); } free(r); diff --git a/veejay-current/veejay-server/libvje/effects/smear.c b/veejay-current/veejay-server/libvje/effects/smear.c index 54135856..a790adc3 100644 --- a/veejay-current/veejay-server/libvje/effects/smear.c +++ b/veejay-current/veejay-server/libvje/effects/smear.c @@ -186,7 +186,7 @@ void smear_apply( void *ptr, VJFrame *frame, int *args ) const unsigned int width = frame->width; const unsigned int height = frame->height; - smear_t *s = (smear_t*) s; + smear_t *s = (smear_t*) ptr; if(motionmap_active(s->motionmap)) { diff --git a/veejay-current/veejay-server/livido-plugins/lvd_explosion.c b/veejay-current/veejay-server/livido-plugins/lvd_explosion.c index 8e9966b6..731a7274 100644 --- a/veejay-current/veejay-server/livido-plugins/lvd_explosion.c +++ b/veejay-current/veejay-server/livido-plugins/lvd_explosion.c @@ -70,13 +70,15 @@ int init_instance( livido_port_t *my_instance ) return LIVIDO_ERROR_MEMORY_ALLOCATION; } + livido_memset( particles, 0, sizeof(particles_t) ); + particles->particles = (PARTICLE**) livido_malloc(sizeof(PARTICLE*) * MAX_PARTICLES ); if(!particles->particles) { free(particles); 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) { free(particles->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; 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; 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; - fire[temp + 1] = particles[i]->colorindex; + + if ( (temp-w) > 0 && (temp-w) < lim ) + fire[temp - w] = particles[i]->colorindex; + + fire[temp + 1] = particles[i]->colorindex; + } } diff --git a/veejay-current/veejay-server/livido-plugins/lvd_solid.c b/veejay-current/veejay-server/livido-plugins/lvd_solid.c index dd53821b..b891df95 100644 --- a/veejay-current/veejay-server/livido-plugins/lvd_solid.c +++ b/veejay-current/veejay-server/livido-plugins/lvd_solid.c @@ -113,6 +113,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version) int palettes0[] = { LIVIDO_PALETTE_YUV420P, LIVIDO_PALETTE_YUV422P, + LIVIDO_PALETTE_YUV444P, 0 }; @@ -121,7 +122,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version) port = out_chans[0]; 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); //@ setup parameters (INDEX type, 0-255) diff --git a/veejay-current/veejay-server/livido-plugins/lvd_starfield.c b/veejay-current/veejay-server/livido-plugins/lvd_starfield.c index 2a1d75a9..b70abef2 100644 --- a/veejay-current/veejay-server/livido-plugins/lvd_starfield.c +++ b/veejay-current/veejay-server/livido-plugins/lvd_starfield.c @@ -213,6 +213,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version) int palettes0[] = { LIVIDO_PALETTE_YUV420P, LIVIDO_PALETTE_YUV422P, + LIVIDO_PALETTE_YUV444P, 0 }; @@ -221,7 +222,7 @@ livido_port_t *livido_setup(livido_setup_t list[], int version) port = out_chans[0]; 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); //@ setup parameters (INDEX type, 0-255)