diff --git a/veejay-current/veejay-server/libplugger/livido-loader.c b/veejay-current/veejay-server/libplugger/livido-loader.c index 56d730db..918a93d2 100644 --- a/veejay-current/veejay-server/libplugger/livido-loader.c +++ b/veejay-current/veejay-server/libplugger/livido-loader.c @@ -21,8 +21,6 @@ /** \defgroup livido Livido Host * * See livido specification at http://livido.dyne.org - * - * This implements an almost complete and hopefully "correct" livido host. */ #include #ifdef STRICT_CHECKING @@ -50,6 +48,7 @@ //#include #include #include +#include #include #include #define LIVIDO_COPY 1 @@ -154,6 +153,22 @@ static int configure_channel( void *instance, const char *name, int channel_id, #ifdef STRICT_CHECKING assert( error == LIVIDO_NO_ERROR ); #endif + + + if( name[0] == 'i' ) { + int current_palette = 0; + vevo_property_get( channel, "current_palette", 0, ¤t_palette ); + if( current_palette != pref_palette_ ) { + switch( current_palette ) { + case LIVIDO_PALETTE_YUV444P: + chroma_supersample ( SSM_422_444, frame, frame->data ); + break; + + } + } + + } + return 1; } @@ -1070,7 +1085,6 @@ void livido_push_channel( void *instance,int n,int dir, VJFrame *frame ) // in_c char *key = (dir == 0 ? "in_channels" : "out_channels" ); livido_push_channel_local(instance, key, n, frame ); - } void livido_plug_process( void *instance, double time_code ) @@ -1090,12 +1104,32 @@ void livido_plug_process( void *instance, double time_code ) (*process)( instance, time_code ); - //see if output channel needs downsampling void *channel = NULL; - int hsampling = 0; - + //see if output channel needs downsampling error = vevo_property_get( instance, "out_channels", 0, &channel ); + if( error != LIVIDO_NO_ERROR ) + return; + + int current_palette = 0; + vevo_property_get( channel, "current_palette", 0, ¤t_palette ); + if( current_palette != pref_palette_ ) { + switch( current_palette ) { + case LIVIDO_PALETTE_YUV444P: { + VJFrame frame; VJFrame *f = &frame; + vevo_property_get( channel, "width", 0, &(f->width)); + vevo_property_get( channel, "height", 0, &(f->height)); + int i; + for( i = 0; i < 3; i ++ ) { + vevo_property_get( channel, "pixel_data", i, &(f->data[i])); + } + chroma_subsample( SSM_422_444, f, f->data ); + } + break; + + } + } + } void livido_plug_deinit( void *instance ) diff --git a/veejay-current/veejay-server/veejay/vj-event.c b/veejay-current/veejay-server/veejay/vj-event.c index 9045121a..ca7d2ff6 100644 --- a/veejay-current/veejay-server/veejay/vj-event.c +++ b/veejay-current/veejay-server/veejay/vj-event.c @@ -1703,11 +1703,6 @@ void vj_event_update_remote(void *ptr) if( p3 ) has_n += vj_server_new_connection( v->vjs[VEEJAY_PORT_DAT] ); -// if( has_n ) -// { -// return; -// } - if( v->settings->use_vims_mcast ) { int res = vj_server_update(v->vjs[VEEJAY_PORT_MAT],0 );