This commit is contained in:
niels
2010-10-24 16:40:32 +00:00
parent a666823e6a
commit 08db70de29
6 changed files with 92 additions and 304 deletions

View File

@@ -75,7 +75,7 @@ void* deal_with_ff( void *handle, char *name )
if( q == NULL ) if( q == NULL )
{ {
veejay_msg(VEEJAY_MSG_ERROR,"\tBad FreeFrame plugin '%s': %s", name, dlerror()); veejay_msg(VEEJAY_MSG_ERROR,"\tBad FreeFrame plugin '%s': %s", name, dlerror());
vevo_port_free( port ); vpf( port );
return NULL; return NULL;
} }
@@ -84,7 +84,7 @@ void* deal_with_ff( void *handle, char *name )
if ((q(FF_GETPLUGINCAPS, (LPVOID)FF_CAP_V_BITS_VIDEO, 0)).ivalue != FF_TRUE) if ((q(FF_GETPLUGINCAPS, (LPVOID)FF_CAP_V_BITS_VIDEO, 0)).ivalue != FF_TRUE)
{ {
veejay_msg(VEEJAY_MSG_ERROR, "FreeFrame plugin '%s' cannot handle 32 bit",name); veejay_msg(VEEJAY_MSG_ERROR, "FreeFrame plugin '%s' cannot handle 32 bit",name);
vevo_port_free(port); vpf(port);
return NULL; return NULL;
} }
@@ -92,7 +92,7 @@ void* deal_with_ff( void *handle, char *name )
if (pis->APIMajorVersion < 1) if (pis->APIMajorVersion < 1)
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Cowardly refusing FreeFrame API version < 1.0 (%s)",name ); veejay_msg(VEEJAY_MSG_ERROR, "Cowardly refusing FreeFrame API version < 1.0 (%s)",name );
vevo_port_free(port); vpf(port);
return NULL; return NULL;
} }
@@ -100,7 +100,7 @@ void* deal_with_ff( void *handle, char *name )
if ( (q(FF_INITIALISE, NULL, 0 )).ivalue == FF_FAIL ) if ( (q(FF_INITIALISE, NULL, 0 )).ivalue == FF_FAIL )
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Plugin '%s' unable to initialize", name); veejay_msg(VEEJAY_MSG_ERROR, "Plugin '%s' unable to initialize", name);
vevo_port_free(port); vpf(port);
if(plugin_name) free(plugin_name); if(plugin_name) free(plugin_name);
return NULL; return NULL;
} }
@@ -109,7 +109,7 @@ void* deal_with_ff( void *handle, char *name )
if( n_params == FF_FAIL ) if( n_params == FF_FAIL )
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Cannot get number of parameters for plugin %s",name); veejay_msg(VEEJAY_MSG_ERROR, "Cannot get number of parameters for plugin %s",name);
vevo_port_free(port); vpf(port);
if(plugin_name) free(plugin_name); if(plugin_name) free(plugin_name);
return NULL; return NULL;
} }

View File

@@ -122,7 +122,7 @@ void* deal_with_fr( void *handle, char *name)
if( f0r_init == NULL ) if( f0r_init == NULL )
{ {
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror()); veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
vevo_port_free( port ); vpf( port );
return NULL; return NULL;
} }
@@ -130,7 +130,7 @@ void* deal_with_fr( void *handle, char *name)
if( f0r_deinit == NULL ) if( f0r_deinit == NULL )
{ {
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror()); veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
vevo_port_free( port ); vpf( port );
return NULL; return NULL;
} }
@@ -138,7 +138,7 @@ void* deal_with_fr( void *handle, char *name)
if( f0r_info == NULL ) if( f0r_info == NULL )
{ {
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror()); veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
vevo_port_free( port ); vpf( port );
return NULL; return NULL;
} }
@@ -146,7 +146,7 @@ void* deal_with_fr( void *handle, char *name)
if( f0r_param == NULL ) if( f0r_param == NULL )
{ {
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror()); veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': %s", name, dlerror());
vevo_port_free( port ); vpf( port );
return NULL; return NULL;
} }
//@ gamble //@ gamble
@@ -178,7 +178,7 @@ void* deal_with_fr( void *handle, char *name)
if( (*f0r_init)() == 0) if( (*f0r_init)() == 0)
{ {
veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': ", name); veejay_msg(VEEJAY_MSG_ERROR,"\tBorked frei0r plugin '%s': ", name);
vevo_port_free( port ); vpf( port );
return NULL; return NULL;
} }
@@ -187,7 +187,7 @@ void* deal_with_fr( void *handle, char *name)
if( finfo.frei0r_version != FREI0R_MAJOR_VERSION ) if( finfo.frei0r_version != FREI0R_MAJOR_VERSION )
{ {
(*f0r_deinit)(); (*f0r_deinit)();
vevo_port_free(port); vpf(port);
return NULL; return NULL;
} }
int extra = 0; int extra = 0;

View File

@@ -52,6 +52,34 @@
#define IS_RGB_PALETTE( p ) ( p < 512 ? 1 : 0 ) #define IS_RGB_PALETTE( p ) ( p < 512 ? 1 : 0 )
static char make_valid_char_( const char c )
{
const char *invalid = " #*,?[]{}";
int k = 0;
char o = '_';
char r = c;
for( k = 0; k < 8 ; k ++ )
{
if ( c == invalid[k] || isspace((unsigned char)c))
return o;
char l = tolower(c);
if(l)
r = l;
}
return r;
}
char *veejay_valid_osc_name( const char *in )
{
int n = strlen( in );
int k;
char *res = strdup( in );
for( k = 0; k < n ; k ++ )
{
res[k] = make_valid_char_( in[k] );
}
return res;
}
static int pref_palette_ = 0; static int pref_palette_ = 0;
static int pref_palette_ffmpeg_ = 0; static int pref_palette_ffmpeg_ = 0;
@@ -121,9 +149,6 @@ static int configure_channel( void *instance, const char *name, int channel_id,
void *channel = NULL; void *channel = NULL;
int error = 0; int error = 0;
void *pd[4]; void *pd[4];
#ifdef STRICT_CHECKING
vjf_dump_frame( frame );
#endif
error = vevo_property_get( instance, name, channel_id, &channel ); error = vevo_property_get( instance, name, channel_id, &channel );
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
@@ -140,40 +165,15 @@ static int configure_channel( void *instance, const char *name, int channel_id,
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
assert( error == LIVIDO_NO_ERROR ); assert( error == LIVIDO_NO_ERROR );
#endif #endif
int flags = 0;
error = vevo_property_get( channel, "flags",0,&flags );
pd[0] = (void*) frame->data[0];
pd[1] = (void*) frame->data[1];
pd[2] = (void*) frame->data[2];
pd[3] = (void*) frame->data[3];
if( flags & LIVIDO_FILTER_CAN_DO_INPLACE ) {
if( name[0] =='o' ){ //@ set output_channels to inplace
pd[0] = NULL; pd[1] = NULL; pd[2] = NULL; pd[3] = NULL;
}
} else {
if(name[0] == 'i') {
VJFrame *tmp = vjf_clone_frame(frame);
pd[0] = (void*) tmp->data[0];
pd[1] = (void*) tmp->data[1];
pd[2] = (void*) tmp->data[2];
pd[3] = (void*) tmp->data[3];
vjf_dump_frame(tmp);
char *stkey = vevo_create_key( "HOST_inplace", channel_id);
error = vevo_property_set( channel, stkey, LIVIDO_ATOM_TYPE_VOIDPTR,1,&tmp );
#ifdef STRICT_CHECKING
assert( error == LIVIDO_NO_ERROR );
#endif
free(stkey);
//@ FIXME: clean data
}
}
error = vevo_property_set( channel , "timecode", LIVIDO_ATOM_TYPE_DOUBLE,1, &(frame->timecode)); error = vevo_property_set( channel , "timecode", LIVIDO_ATOM_TYPE_DOUBLE,1, &(frame->timecode));
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
assert( error == LIVIDO_NO_ERROR ); assert( error == LIVIDO_NO_ERROR );
#endif #endif
pd[0] = (void*) frame->data[0];
pd[1] = (void*) frame->data[1];
pd[2] = (void*) frame->data[2];
pd[3] = (void*) frame->data[3];
error = vevo_property_set( channel, "pixel_data",LIVIDO_ATOM_TYPE_VOIDPTR, 4, &pd); error = vevo_property_set( channel, "pixel_data",LIVIDO_ATOM_TYPE_VOIDPTR, 4, &pd);
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
@@ -192,8 +192,6 @@ static int configure_channel( void *instance, const char *name, int channel_id,
frame->height ); frame->height );
} }
//@ FIXME: must allocate buffer to copy frame 0 to temporary and use temporary frame as input.
return 1; return 1;
} }
@@ -718,11 +716,14 @@ static int init_channel_port(livido_port_t *ptr, livido_port_t *in_channel, int
} }
error = vevo_property_get( ptr, "flags", 0, &flags ); error = vevo_property_get( ptr, "flags", 0, &flags );
#ifdef STRICT_CHECKING
assert( error == LIVIDO_NO_ERROR );
#endif
livido_property_set( in_channel, "width", LIVIDO_ATOM_TYPE_INT,1,&w ); livido_property_set( in_channel, "width", LIVIDO_ATOM_TYPE_INT,1,&w );
livido_property_set( in_channel, "height", LIVIDO_ATOM_TYPE_INT,1,&h ); livido_property_set( in_channel, "height", LIVIDO_ATOM_TYPE_INT,1,&h );
livido_property_set( in_channel, "flags", LIVIDO_ATOM_TYPE_INT,1,&flags ); livido_property_set( in_channel, "flags", LIVIDO_ATOM_TYPE_INT,1,&flags );
error = vevo_property_get( in_channel, "current_palette",0,NULL ); error = vevo_property_get( in_channel, "current_palette",0,NULL );
if( error != LIVIDO_NO_ERROR ) if( error != LIVIDO_NO_ERROR )
{ {
@@ -1019,18 +1020,34 @@ void *livido_plug_init(void *plugin,int w, int h )
"out_channel_templates", "out_channels", "out_channel_templates", "out_channels",
w,h, 0 ); w,h, 0 );
if( num_out_channels < 0 )
{
veejay_msg(0, "Require at least 1 output channel");
return NULL;
}
int num_in_params = init_ports_from_template( int num_in_params = init_ports_from_template(
filter_instance, filter_templ, filter_instance, filter_templ,
LIVIDO_PORT_TYPE_PARAMETER, LIVIDO_PORT_TYPE_PARAMETER,
"in_parameter_templates", "in_parameters", "in_parameter_templates", "in_parameters",
w,h, 0 ); w,h, 0 );
if( num_in_params < 0 )
{
veejay_msg(0, "Require at least 0 input parameter");
return NULL;
}
int num_out_params = init_ports_from_template( int num_out_params = init_ports_from_template(
filter_instance, filter_templ, filter_instance, filter_templ,
LIVIDO_PORT_TYPE_PARAMETER, LIVIDO_PORT_TYPE_PARAMETER,
"out_parameter_templates", "out_parameters", "out_parameter_templates", "out_parameters",
w,h,0 ); w,h,0 );
if( num_out_params < 0 )
{
veejay_msg(0, "Require at least 0 output parameters (%d)",
num_out_params);
return NULL;
}
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
assert( num_in_params >= 0 ); assert( num_in_params >= 0 );
assert( num_out_params >= 0 ); assert( num_out_params >= 0 );
@@ -1093,33 +1110,6 @@ void livido_push_channel( void *instance,const char *key, int n, VJFrame *frame
configure_channel( instance, key, n, frame ); configure_channel( instance, key, n, frame );
} }
static void livido_cleanup_channels( void *instance, char *name ) {
int np = vevo_property_num_elements( instance, "in_channels" );
if( np <= 0 )
return;
int n = 0;
int error = 0;
for( n = 0; n < np ; n ++ )
{
void *port = NULL;
error = vevo_property_get( instance, name,n, &port );
if( error != LIVIDO_NO_ERROR ) {
veejay_msg(0, "__FATAL__ %s",__FUNCTION__ );
}
VJFrame *tmp = NULL;
char *stkey = vevo_create_key( "HOST_inplace", n );
error = vevo_property_get( port, stkey, 0, &tmp );
free(stkey);
if( error == LIVIDO_NO_ERROR ) {
veejay_msg(0, "Clean %s:%d",name,n);
free(tmp->data[0]);
free(tmp);
}
}
}
//@FIXME: color space / sampling
void livido_plug_process( void *instance, double time_code ) void livido_plug_process( void *instance, double time_code )
{ {
void *filter_templ = NULL; void *filter_templ = NULL;
@@ -1164,10 +1154,6 @@ void livido_plug_process( void *instance, double time_code )
chroma_subsample( hsampling,sampler,pd,w,h ); chroma_subsample( hsampling,sampler,pd,w,h );
} }
livido_cleanup_channels( instance, "in_channels" );
livido_cleanup_channels( instance, "out_channels" );
} }
void livido_plug_deinit( void *instance ) void livido_plug_deinit( void *instance )
@@ -1472,14 +1458,16 @@ void* deal_with_livido( void *handle, const char *name )
livido_setup_f livido_setup = dlsym( handle, "livido_setup" ); livido_setup_f livido_setup = dlsym( handle, "livido_setup" );
return NULL; //@disable
/*
#ifndef STRICT_CHECKING #ifndef STRICT_CHECKING
livido_setup_t setup[] = { livido_setup_t setup[] = {
{ (void(*)()) vj_malloc }, { (void(*)()) malloc },
{ (void(*)()) free }, { (void(*)()) free },
{ (void(*)())memset }, { (void(*)())memset },
{ (void(*)())memcpy }, { (void(*)())memcpy },
{ (void(*)())vevo_port_new }, { (void(*)())vevo_port_new },
{ (void(*)())vevo_port_free }, { (void(*)()) },
{ (void(*)())vevo_property_set }, { (void(*)())vevo_property_set },
{ (void(*)())vevo_property_get }, { (void(*)())vevo_property_get },
{ (void(*)())vevo_property_num_elements }, { (void(*)())vevo_property_num_elements },
@@ -1494,7 +1482,7 @@ void* deal_with_livido( void *handle, const char *name )
{ (void(*)())memset }, { (void(*)())memset },
{ (void(*)())memcpy }, { (void(*)())memcpy },
{ (void(*)())livido_plugin_port_new }, { (void(*)())livido_plugin_port_new },
{ (void(*)())vevo_port_free }, { (void(*)()) },
{ (void(*)())vevo_property_set }, { (void(*)())vevo_property_set },
{ (void(*)())vevo_property_get }, { (void(*)())vevo_property_get },
{ (void(*)())vevo_property_num_elements }, { (void(*)())vevo_property_num_elements },
@@ -1507,12 +1495,13 @@ void* deal_with_livido( void *handle, const char *name )
#endif #endif
void *livido_plugin = livido_setup( setup, 100 ); void *livido_plugin = livido_setup( setup, 100 );
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
assert( livido_plugin != NULL ); assert( livido_plugin != NULL );
#endif #endif
if(!livido_plugin) if(!livido_plugin)
{ {
vevo_port_free( port ); ( port );
return NULL; return NULL;
} }
@@ -1533,9 +1522,6 @@ void* deal_with_livido( void *handle, const char *name )
int is_mix = 0; int is_mix = 0;
int n_inputs = livido_property_num_elements( filter_templ, "in_channel_templates" ); int n_inputs = livido_property_num_elements( filter_templ, "in_channel_templates" );
int n_outputs = livido_property_num_elements( filter_templ, "out_channel_templates");
//@ Now, prefix the name with LVD //@ Now, prefix the name with LVD
plugin_name = get_str_vevo( filter_templ, "name" ); plugin_name = get_str_vevo( filter_templ, "name" );
@@ -1551,14 +1537,13 @@ void* deal_with_livido( void *handle, const char *name )
vevo_property_set( port, "num_out_params", VEVO_ATOM_TYPE_INT,1,&n_oparams ); vevo_property_set( port, "num_out_params", VEVO_ATOM_TYPE_INT,1,&n_oparams );
vevo_property_set( port, "name", VEVO_ATOM_TYPE_STRING,1, &clone_name ); vevo_property_set( port, "name", VEVO_ATOM_TYPE_STRING,1, &clone_name );
vevo_property_set( port, "num_inputs", VEVO_ATOM_TYPE_INT,1, &n_inputs); vevo_property_set( port, "num_inputs", VEVO_ATOM_TYPE_INT,1, &n_inputs);
vevo_property_set( port, "num_outputs",VEVO_ATOM_TYPE_INT,1, &n_outputs);
vevo_property_set( port, "info", LIVIDO_ATOM_TYPE_PORTPTR,1,&filter_templ ); vevo_property_set( port, "info", LIVIDO_ATOM_TYPE_PORTPTR,1,&filter_templ );
vevo_property_set( port, "HOST_plugin_type", VEVO_ATOM_TYPE_INT,1,&livido_signature_); vevo_property_set( port, "HOST_plugin_type", VEVO_ATOM_TYPE_INT,1,&livido_signature_);
free(clone_name); free(clone_name);
free(plugin_name); free(plugin_name);
return port; return port;*/
} }
void livido_set_pref_palette( int pref_palette ) void livido_set_pref_palette( int pref_palette )
@@ -1574,6 +1559,3 @@ void livido_set_pref_palette( int pref_palette )
void livido_exit( void ) void livido_exit( void )
{ {
} }

View File

@@ -43,6 +43,7 @@
#include <libplugger/ldefs.h> #include <libplugger/ldefs.h>
#include <libplugger/specs/livido.h> #include <libplugger/specs/livido.h>
#include <libyuv/yuvconv.h> #include <libyuv/yuvconv.h>
#include <libavutil/avutil.h> #include <libavutil/avutil.h>
#include <stdlib.h> #include <stdlib.h>
#include <sys/types.h> #include <sys/types.h>
@@ -66,10 +67,6 @@ static int n_ff_ = 0;
static int n_fr_ = 0; static int n_fr_ = 0;
static int n_lvd_ = 0; static int n_lvd_ = 0;
static int base_fmt_ = -1; static int base_fmt_ = -1;
static char make_valid_char_( const char c );
static char *veejay_valid_osc_name( const char *in );
static void plug_print_all();
static int select_f( const struct dirent *d ) static int select_f( const struct dirent *d )
{ {
@@ -194,11 +191,10 @@ static void add_to_plugin_list( const char *path )
continue; continue;
} }
// veejay_msg(0, "\tOpened plugin '%s' in '%s'", name,path );
if(dlsym( handle, "plugMain" )) if(dlsym( handle, "plugMain" ))
{ {
veejay_msg(VEEJAY_MSG_INFO, "%d\tOpened FreeFrame plugin '%s' in '%s'",index_,name,path );
void *plugin = deal_with_ff( handle, name ); void *plugin = deal_with_ff( handle, name );
if( plugin ) if( plugin )
{ {
@@ -209,10 +205,7 @@ static void add_to_plugin_list( const char *path )
else else
dlclose( handle ); dlclose( handle );
} else if(dlsym( handle, "f0r_construct" )) { } else if(dlsym( handle, "f0r_construct" )) {
void *plugin = deal_with_fr( handle, name );
veejay_msg(VEEJAY_MSG_INFO, "%d\tSkip Frei0r plugin '%s' in '%s'",index_,name,path );
//@FIXME: Fix frei0r loading
void *plugin = NULL; // deal_with_fr( handle, name );
if( plugin ) if( plugin )
{ {
index_map_[ index_ ] = plugin; index_map_[ index_ ] = plugin;
@@ -222,9 +215,6 @@ static void add_to_plugin_list( const char *path )
else else
dlclose( handle ); dlclose( handle );
} else if(dlsym( handle, "livido_setup" )) { } else if(dlsym( handle, "livido_setup" )) {
veejay_msg(VEEJAY_MSG_INFO, "%d\tOpened LiViDO plugin '%s' in '%s'",index_,name,path );
void *plugin = deal_with_livido( handle , name ); void *plugin = deal_with_livido( handle , name );
if( plugin ) if( plugin )
{ {
@@ -597,9 +587,7 @@ char *plug_describe( int fx_id )
error = vevo_property_get( plug, "num_out_params",0,&po ); error = vevo_property_get( plug, "num_out_params",0,&po );
error = vevo_property_get( plug, "num_outputs",0,&co ); error = vevo_property_get( plug, "num_outputs",0,&co );
error = vevo_property_get( plug, "instance", 0,&instance ); error = vevo_property_get( plug, "instance", 0,&instance );
#ifdef STRICT_CHECKING
assert( error == VEVO_NO_ERROR);
#endif
error = vevo_property_get( instance, "filters",0,&filter ); error = vevo_property_get( instance, "filters",0,&filter );
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
assert( error == VEVO_NO_ERROR ); assert( error == VEVO_NO_ERROR );
@@ -632,8 +620,6 @@ char *plug_describe( int fx_id )
{ {
sprintf(key, "q%02d",i); sprintf(key, "q%02d",i);
out_params[i] = flatten_port( plug , key ); out_params[i] = flatten_port( plug , key );
if(out_params[i] == NULL )
continue;
len += strlen(out_params[i])+1; len += strlen(out_params[i])+1;
} }
} }
@@ -653,6 +639,21 @@ char *plug_describe( int fx_id )
"name=%s:description=%s:author=%s:maintainer=%s:license=%s:version=%s:outs=%d:ins=%d", "name=%s:description=%s:author=%s:maintainer=%s:license=%s:version=%s:outs=%d:ins=%d",
name,description,author,maintainer,license,version,co,ci ); name,description,author,maintainer,license,version,co,ci );
char *p = res + strlen(res);
for( i = 0; i < pi ; i ++ )
{
sprintf(p, "p%02d=[%s]:", i, in_params[i] );
p += strlen(in_params[i]) + 7;
free(in_params[i]);
}
for( i = 0; i < po ; i ++ )
{
sprintf(p, "q%02d=[%s]:", i, out_params[i] );
p += strlen( out_params[i] ) + 7;
free(out_params[i]);
}
free(in_params); free(in_params);
free(out_params); free(out_params);
free(maintainer); free(maintainer);
@@ -713,7 +714,7 @@ void plug_build_name_space( int fx_id, void *fx_instance, void *data, int entry_
} }
static void plug_print_all() void plug_print_all()
{ {
int n; int n;
for(n = 0; n < index_ ; n ++ ) for(n = 0; n < index_ ; n ++ )
@@ -722,8 +723,6 @@ static void plug_print_all()
if(fx_name) if(fx_name)
{ {
veejay_msg(VEEJAY_MSG_INFO, "\t'FX %s loaded", fx_name ); veejay_msg(VEEJAY_MSG_INFO, "\t'FX %s loaded", fx_name );
char *txt = plug_describe(n);
printf("%s\n",txt);
free(fx_name); free(fx_name);
} }
} }
@@ -846,8 +845,6 @@ void plug_push_frame( void *instance, int out, int seq_num, void *frame_info )
#ifdef STRICT_CHECKING #ifdef STRICT_CHECKING
assert( error == 0 ); assert( error == 0 );
#endif #endif
veejay_msg(0,"%s: %s Channel %d",
__FUNCTION__, (out ? "Output" : "Input" ), seq_num);
(*gpu)( instance, (out ? "out_channels" : "in_channels" ), seq_num, frame ); (*gpu)( instance, (out ? "out_channels" : "in_channels" ), seq_num, frame );
} }
@@ -951,124 +948,3 @@ vj_effect *plug_get_plugin( int fx_id ) {
} }
return vje; return vje;
} }
static char make_valid_char_( const char c )
{
const char *invalid = " #*,?[]{}";
int k = 0;
char o = '_';
char r = c;
for( k = 0; k < 8 ; k ++ )
{
if ( c == invalid[k] || isspace((unsigned char)c))
return o;
char l = tolower(c);
if(l)
r = l;
}
return r;
}
static char *veejay_valid_osc_name( const char *in )
{
int n = strlen( in );
int k;
char *res = strdup( in );
for( k = 0; k < n ; k ++ )
{
res[k] = make_valid_char_( in[k] );
}
return res;
}
//@FIXME
int plug_fx_activate( void *info, int fx_entry, int fx_id )
{
/* fx_slot_t *slot = (fx_slot_t*) sample_get_fx_port_ptr( info,fx_entry );
#ifdef STRICT_CHECKING
assert(slot!=NULL);
#endif
slot->fx_instance = plug_activate( new_fx );
if(!slot->fx_instance)
{
veejay_msg(0, "Unable to initialize plugin %d", new_fx );
return 0;
}
slot->fx_id = new_fx;
slot->id = fx_entry;
char tmp[128];
sprintf( tmp, "Sample%dFX%d", srd->primary_key, fx_entry );
slot->frame = strdup( tmp );
plug_get_defaults( slot->fx_instance, slot->in_values );
plug_set_defaults( slot->fx_instance, slot->in_values );
int i;
int n_channels = vevo_property_num_elements( slot->fx_instance, "in_channels" );
if( n_channels <= 0)
{
veejay_msg(0, "Veejay cannot handle generator plugins yet");
return 0;
}
for(i=0; i < n_channels; i ++ )
sample_fx_set_in_channel(info,fx_entry,i, sample_get_key_ptr(info));
int pk = 0;
vevo_property_get( srd->info_port, "primary_key", 0, &pk );
plug_build_name_space( new_fx, slot->fx_instance, srd->user_data, fx_entry ,pk,
sample_notify_parameter, info );
*/
return 0;
}
static void sample_osc_print( void *osc_port )
{
char **osc_events = vevo_list_properties ( osc_port );
int i;
for( i = 0; osc_events[i] != NULL ; i ++ )
{
void *osc_info = NULL;
int error = vevo_property_get( osc_port, osc_events[i], 0, &osc_info );
#ifdef STRICT_CHECKING
assert( error == VEVO_NO_ERROR );
#endif
char *format = get_str_vevo( osc_info, "format" );
veejay_msg(VEEJAY_MSG_INFO, "OSC PATH %s",osc_events[i] );
char *descr = get_str_vevo( osc_info, "description" );
if(descr)
{
veejay_msg(VEEJAY_MSG_INFO,"\t%s", descr);
free(descr);
}
veejay_msg(VEEJAY_MSG_INFO, "\tFormat=%s", format );
if(format)
{
int n_args = strlen(format);
char key[10];
int j;
for( j = 0; j < n_args ; j ++ )
{
sprintf(key, "help_%d", j );
char *help_str = get_str_vevo( osc_info, key );
if(help_str)
{
veejay_msg(VEEJAY_MSG_INFO,"\t\tArgument %d : %s", j, help_str );
free(help_str);
}
}
free(format);
}
veejay_msg(VEEJAY_MSG_INFO,"\t");
free( osc_events[i]);
}
free(osc_events);
}

View File

@@ -32,7 +32,7 @@
#include <libplugger/ldefs.h> #include <libplugger/ldefs.h>
#include <libplugger/specs/livido.h> #include <libplugger/specs/livido.h>
#include <libyuv/yuvconv.h> #include <libyuv/yuvconv.h>
#include <libavutil/avutil.h> #include <libavcodec/avcodec.h>
#include <stdlib.h> #include <stdlib.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@@ -250,70 +250,3 @@ void clone_prop_vevo2( void *port, void *to_port, const char *key, const char *
} }
static char make_valid_char_( const char c )
{
const char *invalid = " #*,?[]{}";
int k = 0;
char o = '_';
char r = c;
for( k = 0; k < 8 ; k ++ )
{
if ( c == invalid[k] || isspace((unsigned char)c))
return o;
char l = tolower(c);
if(l)
r = l;
}
return r;
}
char *veejay_valid_osc_name( const char *in )
{
int n = strlen( in );
int k;
char *res = strdup( in );
for( k = 0; k < n ; k ++ )
{
res[k] = make_valid_char_( in[k] );
}
return res;
}
VJFrame *vjf_clone_frame( VJFrame *v ) {
//@ FIXME: embed color/sampling conversion
VJFrame *f = (VJFrame*) vj_calloc(sizeof(VJFrame));
veejay_memcpy( f, v,sizeof(VJFrame));
f->data[0] = (uint8_t*) vj_malloc(sizeof(uint8_t)*v->width*v->height*4);
f->data[1] = (uint8_t*) f->data[0] + (v->width*v->height);
f->data[2] = (uint8_t*) f->data[1] + (v->width*v->height);
f->data[3] = (uint8_t*) f->data[2] + (v->width*v->height);
veejay_memcpy( f->data[0], v->data[0], v->len );
veejay_memcpy( f->data[1], v->data[1], v->uv_len );
veejay_memcpy( f->data[2], v->data[2], v->uv_len );
return f;
}
void vjf_dump_frame( VJFrame *v ) {
if( v == NULL ) {
veejay_msg(0, "VJFrame <invalid>");
} else {
veejay_msg(VEEJAY_MSG_DEBUG,"Frame %p: ",v);
veejay_msg(VEEJAY_MSG_DEBUG,"\tWidth=%d Height=%d FPS=%2.2f TC=%2.2g",
v->width,v->height,v->fps,v->timecode );
veejay_msg(VEEJAY_MSG_DEBUG,"\tUV =%dx%d V=%d,H=%d",
v->uv_width,v->uv_height,v->shift_v,v->shift_h );
veejay_msg(VEEJAY_MSG_DEBUG,"\tSSM =%d Alpha=%d Format=%d Len=%d, UV len=%d, stand=%d",
v->ssm, v->alpha, v->format, v->len,v->uv_len, v->stand );
veejay_msg(VEEJAY_MSG_DEBUG,"\tData planes = %p,%p,%p", v->data[0],v->data[1],v->data[2]);
}
}
char *vevo_create_key(char *prefix, int val )
{
char tmp[128];
snprintf(tmp,sizeof(tmp),"%s_%d",prefix,val);
return strdup(tmp);
}

View File

@@ -25,7 +25,4 @@ double *get_dbl_arr_vevo( void *port, const char *key );
void clone_prop_vevo( void *port, void *to_port, const char *key, const char *as_key ); void clone_prop_vevo( void *port, void *to_port, const char *key, const char *as_key );
void util_convertrgba32( uint8_t **data, int w, int h,int in_pix_fmt,int shiftv, void *out_buffer ); void util_convertrgba32( uint8_t **data, int w, int h,int in_pix_fmt,int shiftv, void *out_buffer );
void util_convertsrc( void *indata, int w, int h, int out_pix_fmt, uint8_t **data); void util_convertsrc( void *indata, int w, int h, int out_pix_fmt, uint8_t **data);
char *veejay_valid_osc_name( const char *in );
void vjf_dump_frame( VJFrame *v );
VJFrame *vjf_clone_frame( VJFrame *v );
#endif #endif