void veejay_osc_del_methods( void *user_data, void *osc_space,void *vevo_port, void *fx_instance ) { veejay_t *info = (veejay_t*) user_data; osc_recv_t *s = (osc_recv_t*) info->osc_server; char **keys = vevo_list_properties( osc_space ); int i; int error; for( i = 0; keys[i] != NULL ; i ++ ) { void *event_port = NULL; error = vevo_property_get( osc_space, keys[i],0,&event_port ); void *ptr = NULL; error = vevo_property_get( event_port, "userdata",0, &ptr ); char *types = get_str_vevo( event_port, "format" ); lo_server_thread_del_method( s->st, keys[i], types ); free(keys[i]); if(types) free(types); free(ptr); } free(keys); }
int veejay_osc_verify_format( void *vevo_port, char const *types ) { char *format = get_str_vevo( vevo_port, "format" ); int n = strlen(types); if(!format) { if( (n ==0 || types == NULL) && format == NULL ) return 1; return 0; } if( strcasecmp( types,format ) == 0 ) { free(format); return 1; } free(format); return 0; }
char *plug_describe( int fx_id ) { void *plug = index_map_[fx_id]; if(!plug) return NULL; void *instance = NULL; void *filter = NULL; int pi = 0; int po = 0; int ci = 0; int co = 0; char *res = NULL; char key[64]; int i; int len = 0; vevo_property_get( plug, "num_inputs", 0, &ci ); vevo_property_get( plug, "num_params", 0, &pi ); vevo_property_get( plug, "num_out_params",0,&po ); vevo_property_get( plug, "num_outputs",0,&co ); if( vevo_property_get( plug, "instance", 0,&instance ) != VEVO_NO_ERROR ) return NULL; if( vevo_property_get( instance, "filters",0,&filter ) != VEVO_NO_ERROR ) return NULL; //@ cannot handle multiple filters yet char *maintainer = get_str_vevo( instance, "maintainer"); char *version = get_str_vevo( instance, "version" ); char *description = get_str_vevo( filter, "description" ); char *name = get_str_vevo( filter, "name"); char *author = get_str_vevo( filter, "author" ); char *license = get_str_vevo( filter, "license" ); char **in_params = NULL; char **out_params = NULL; if( pi > 0 ) { in_params = (char**) vj_malloc(sizeof(char*) * pi ); for( i = 0; i < pi; i ++ ) { sprintf(key, "p%02d",i); in_params[i] = flatten_port( plug , key ); len += strlen(in_params[i])+1; } } if( po > 0 ) { out_params = (char**) vj_malloc(sizeof(char*) * pi ); for( i = 0; i < pi; i ++ ) { sprintf(key, "q%02d",i); out_params[i] = flatten_port( plug , key ); len += strlen(out_params[i])+1; } } len += strlen( maintainer ) + 12; len += strlen( version ) + 9; len += strlen( description ) + 13; len += strlen( name ) +6; len += strlen( author )+8; len += strlen( license )+9; res = (char*) vj_malloc(sizeof(char) * len + 150 ); memset(res,0,len); sprintf( res, "name=%s:description=%s:author=%s:maintainer=%s:license=%s:version=%s:outs=%d:ins=%d", 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(out_params); free(maintainer); free(version); free(description); free(name); free(author); free(license); return res; }