Lines Matching refs:instance
26 * struct plugin struct instance
46 /* This represents an audio port on an instance. */
49 struct plugin *plugin; /* the plugin corresponds to the instance */
54 /* This represents a control port on an instance. */
57 struct plugin *plugin; /* the plugin corresponds to the instance */
65 /* An instance is a dynamic representation of a plugin. We only create
66 * an instance when a plugin is needed (data actually flows through it
67 * and it is not disabled). An instance also contains a pointer to a
69 struct instance {
70 /* The plugin this instance corresponds to */
73 /* These are the ports on this instance. The difference
92 /* This is the total buffering delay from source to this instance. It is
97 DECLARE_ARRAY_TYPE(struct instance, instance_array)
108 * order that if instance B depends on instance A, then A will
119 /* The instance where the audio data flow in */
120 struct instance *source_instance;
122 /* The instance where the audio data flow out */
123 struct instance *sink_instance;
147 static struct instance *find_instance_by_plugin(instance_array *instances,
151 struct instance *instance;
153 FOR_ARRAY_ELEMENT(instances, i, instance) {
154 if (instance->plugin == plugin)
155 return instance;
186 /* if the plugin is not disabled, it will be pointed by some instance */
233 struct instance *instance;
236 instance = find_instance_by_plugin(instances, plugin);
237 if (!instance)
240 FOR_ARRAY_ELEMENT(&instance->output_audio_ports, i, audio_port) {
253 struct instance *instance;
256 instance = find_instance_by_plugin(instances, plugin);
257 if (!instance)
260 FOR_ARRAY_ELEMENT(&instance->output_control_ports, i, control_port) {
286 struct instance *instance;
308 /* if the plugin is disabled, we don't construct an instance for it */
312 instance = ARRAY_APPEND_ZERO(&pipeline->instances);
313 instance->plugin = plugin;
315 /* constructs audio and control ports for the instance */
331 &instance->input_audio_ports :
332 &instance->output_audio_ports;
350 &instance->input_control_ports :
351 &instance->output_control_ports;
466 static int load_module(struct plugin *plugin, struct instance *instance)
474 instance->module = module;
475 instance->properties = module->get_properties(module);
502 /* assign which buffer each audio port on each instance should use */
506 struct instance *instance;
511 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
512 int in = ARRAY_COUNT(&instance->input_audio_ports);
513 int out = ARRAY_COUNT(&instance->output_audio_ports);
515 if (instance->properties & MODULE_INPLACE_BROKEN) {
546 /* Now assign buffer index for each instance's input/output ports */
548 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
553 FOR_ARRAY_ELEMENT(&instance->input_audio_ports, j, audio_port) {
583 if (instance->properties & MODULE_INPLACE_BROKEN) {
584 use_buffers(busy, &instance->output_audio_ports);
585 unuse_buffers(busy, &instance->input_audio_ports);
587 unuse_buffers(busy, &instance->input_audio_ports);
588 use_buffers(busy, &instance->output_audio_ports);
599 instance *instance;
601 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
602 struct plugin *plugin = instance->plugin;
603 if (load_module(plugin, instance) != 0)
613 /* Calculates the total buffering delay of each instance from the source */
617 struct instance *instance;
619 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
620 struct dsp_module *module = instance->module;
621 audio_port_array *audio_in = &instance->input_audio_ports;
627 * instance. */
629 struct instance *upstream = find_instance_by_plugin(
634 instance->total_delay = delay + module->get_delay(module);
641 struct instance *instance;
643 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
644 struct dsp_module *module = instance->module;
647 instance->instantiated = 1;
648 syslog(LOG_DEBUG, "instantiate %s", instance->plugin->label);
652 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
653 audio_port_array *audio_in = &instance->input_audio_ports;
654 audio_port_array *audio_out = &instance->output_audio_ports;
655 control_port_array *control_in = &instance->input_control_ports;
657 &instance->output_control_ports;
661 struct dsp_module *module = instance->module;
670 audio_port->buf_index, instance->plugin->title,
679 audio_port->buf_index, instance->plugin->title,
697 control_port->value, instance->plugin->title,
706 control_port->value, instance->plugin->title,
718 struct instance *instance;
720 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
721 struct dsp_module *module = instance->module;
722 if (instance->instantiated) {
724 instance->instantiated = 0;
786 struct instance *instance;
788 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
789 struct dsp_module *module = instance->module;
870 struct instance *instance;
872 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
873 struct dsp_module *module = instance->module;
874 instance->plugin = NULL;
875 ARRAY_FREE(&instance->input_audio_ports);
876 ARRAY_FREE(&instance->input_control_ports);
877 ARRAY_FREE(&instance->output_audio_ports);
878 ARRAY_FREE(&instance->output_control_ports);
881 if (instance->instantiated) {
883 instance->instantiated = 0;
886 instance->module = NULL;
938 struct instance *instance;
963 FOR_ARRAY_ELEMENT(&pipeline->instances, i, instance) {
964 struct dsp_module *module = instance->module;
966 i, instance->plugin->title, module,
967 instance->total_delay);
971 &instance->input_audio_ports);
973 &instance->output_audio_ports);
975 &instance->input_control_ports);
977 &instance->output_control_ports);