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;
}
Exemple #3
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;	
}