示例#1
0
文件: plugin.c 项目: vpinon/mlt
static void
plugin_init_holder (plugin_t * plugin,
                    guint copy,
                    LADSPA_Handle instance,
                    jack_rack_t * jack_rack)
{
    unsigned long i;
    plugin_desc_t * desc;
    ladspa_holder_t * holder;

    desc = plugin->desc;
    holder = plugin->holders + copy;

    holder->instance = instance;

    if (desc->control_port_count > 0)
    {
        holder->ui_control_fifos    = g_malloc (sizeof (lff_t) * desc->control_port_count);
        holder->control_memory = g_malloc (sizeof (LADSPA_Data) * desc->control_port_count);
    }
    else
    {
        holder->ui_control_fifos  = NULL;
        holder->control_memory = NULL;
    }

    for (i = 0; i < desc->control_port_count; i++)
    {
        lff_init (holder->ui_control_fifos + i, CONTROL_FIFO_SIZE, sizeof (LADSPA_Data));
        holder->control_memory[i] =
            plugin_desc_get_default_control_value (desc, desc->control_port_indicies[i], sample_rate);

        plugin->descriptor->
        connect_port (instance, desc->control_port_indicies[i], holder->control_memory + i);
    }

    if (desc->status_port_count > 0)
    {
        holder->status_memory = g_malloc (sizeof (LADSPA_Data) * desc->status_port_count);
    }
    else
    {
        holder->status_memory = NULL;
    }

    for (i = 0; i < desc->status_port_count; i++)
    {
        plugin->descriptor->
        connect_port (instance, desc->status_port_indicies[i], holder->status_memory + i);
    }

    if (jack_rack->procinfo->jack_client && plugin->desc->aux_channels > 0)
        plugin_create_aux_ports (plugin, copy, jack_rack);

    if (plugin->descriptor->activate)
        plugin->descriptor->activate (instance);
}
示例#2
0
static void
plugin_init_holder (plugin_t * plugin,
                    guint copy,
                    LADSPA_Handle instance,
                    jack_rack_t * jack_rack)
{
  unsigned long i;
  plugin_desc_t * desc;
  ladspa_holder_t * holder;
  
  desc = plugin->desc;
  holder = plugin->holders + copy;
  
  holder->instance = instance;
  
  if (desc->control_port_count > 0)
    {
      holder->ui_control_fifos    = g_malloc (sizeof (lff_t) * desc->control_port_count);
#ifdef HAVE_ALSA
      holder->midi_control_fifos  = g_malloc (sizeof (lff_t) * desc->control_port_count);
#endif
      holder->control_memory = g_malloc (sizeof (LADSPA_Data) * desc->control_port_count);
    }
  else
    {
      holder->ui_control_fifos  = NULL;
#ifdef HAVE_ALSA
      holder->midi_control_fifos  = NULL;
#endif
      holder->control_memory = NULL;
    }
  
  for (i = 0; i < desc->control_port_count; i++)
    {
      lff_init (holder->ui_control_fifos + i, CONTROL_FIFO_SIZE, sizeof (LADSPA_Data));
#ifdef HAVE_ALSA
      lff_init (holder->midi_control_fifos + i, CONTROL_FIFO_SIZE, sizeof (LADSPA_Data));
#endif
      
      holder->control_memory[i] =
        plugin_desc_get_default_control_value (desc, desc->control_port_indicies[i], sample_rate);        
      
      plugin->descriptor->
        connect_port (instance, desc->control_port_indicies[i], holder->control_memory + i);
    }
  
  for (i = 0; i < desc->port_count; i++)
    {
      if (!LADSPA_IS_PORT_CONTROL (desc->port_descriptors[i]))
        continue;
      
      if (LADSPA_IS_PORT_OUTPUT (desc->port_descriptors[i]))
        plugin->descriptor-> connect_port (instance, i, &unused_control_port_output);
    }
  
  if (plugin->desc->aux_channels > 0)
    plugin_create_aux_ports (plugin, copy, jack_rack);
  
  if (plugin->descriptor->activate)
    plugin->descriptor->activate (instance);
}