X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginaclientlad.C;h=15ff05ed0e6ab8b3d542511c1dd45b3c5a2bfc93;hp=982492ba8b028d2b4a695df5e92f3f06bd8df67d;hb=b2eb290b3f6e5c233393017aa152e67c76243130;hpb=21c2e6b36d6a96c2f662a89459d607b5a387f4eb diff --git a/cinelerra-5.1/cinelerra/pluginaclientlad.C b/cinelerra-5.1/cinelerra/pluginaclientlad.C index 982492ba..15ff05ed 100644 --- a/cinelerra-5.1/cinelerra/pluginaclientlad.C +++ b/cinelerra-5.1/cinelerra/pluginaclientlad.C @@ -21,8 +21,10 @@ #include "clip.h" #include "bchash.h" +#include "filesystem.h" #include "filexml.h" #include "language.h" +#include "mwindow.h" #include "pluginaclientlad.h" #include "pluginserver.h" #include "samples.h" @@ -69,28 +71,20 @@ int PluginAClientConfig::equivalent(PluginAClientConfig &that) // Need PluginServer to do this. void PluginAClientConfig::copy_from(PluginAClientConfig &that) { - if(total_ports != that.total_ports) - { + if( total_ports != that.total_ports ) { delete_objects(); total_ports = that.total_ports; port_data = new LADSPA_Data[total_ports]; port_type = new int[total_ports]; } - - for(int i = 0; i < total_ports; i++) - { + for( int i=0; ilad_descriptor; const LADSPA_PortDescriptor *port_desc = lad_desc->PortDescriptors; - const LADSPA_PortRangeHint *lad_hint = lad_desc->PortRangeHints; int port_count = lad_desc->PortCount; for(int i = 0; i < port_count; i++) { if( !LADSPA_IS_PORT_INPUT(port_desc[i]) ) continue; @@ -115,15 +108,14 @@ void PluginAClientConfig::initialize(PluginServer *server) for(int port = 0, i = 0; i < port_count; i++) { if( !LADSPA_IS_PORT_INPUT(port_desc[i]) ) continue; if( !LADSPA_IS_PORT_CONTROL(port_desc[i]) ) continue; + const LADSPA_PortRangeHint *lad_hint = &lad_desc->PortRangeHints[i]; + LADSPA_PortRangeHintDescriptor hint_desc = lad_hint->HintDescriptor; // Convert LAD default to default value float value = 0.0; - LADSPA_PortRangeHintDescriptor hint_desc = lad_hint->HintDescriptor; // Store type of port for GUI use port_type[port] = PORT_NORMAL; - if( LADSPA_IS_HINT_SAMPLE_RATE(hint_desc) /* && - LADSPA_IS_HINT_BOUNDED_ABOVE(hint_desc) && - LADSPA_IS_HINT_BOUNDED_BELOW(hint_desc) */ ) // LAD frequency table + if( LADSPA_IS_HINT_SAMPLE_RATE(hint_desc) ) port_type[port] = PORT_FREQ_INDEX; else if(LADSPA_IS_HINT_TOGGLED(hint_desc)) port_type[port] = PORT_TOGGLE; @@ -138,8 +130,7 @@ void PluginAClientConfig::initialize(PluginServer *server) else if( LADSPA_IS_HINT_DEFAULT_100(hint_desc) ) value = 100.0; else if( LADSPA_IS_HINT_DEFAULT_440(hint_desc) ) - value = port_type[port] == PORT_FREQ_INDEX ? - 440.0 / 44100 : 440.0; + value = 440.0; else if( LADSPA_IS_HINT_DEFAULT_MAXIMUM(hint_desc) ) value = lad_hint->UpperBound; else if( LADSPA_IS_HINT_DEFAULT_MINIMUM(hint_desc) ) @@ -364,6 +355,7 @@ PluginAClientLAD::PluginAClientLAD(PluginServer *server) total_outbuffers = 0; buffer_allocation = 0; lad_instance = 0; + snprintf(title, sizeof(title), "L_%s", server->lad_descriptor->Name); } PluginAClientLAD::~PluginAClientLAD() @@ -416,7 +408,7 @@ int PluginAClientLAD::get_outchannels() const char* PluginAClientLAD::plugin_title() { - return (char*)server->lad_descriptor->Name; + return title; } int PluginAClientLAD::uses_gui() @@ -460,12 +452,11 @@ char* PluginAClientLAD::lad_to_upper(char *string, const char *input) void PluginAClientLAD::save_data(KeyFrame *keyframe) { - FileXML output; - char string[BCTEXTLEN]; if( !config.port_data ) config.initialize(server); - + FileXML output; // cause data to be stored directly in text - output.set_shared_output(keyframe->get_data(), MESSAGESIZE); + output.set_shared_output(keyframe->xbuf); + char string[BCTEXTLEN]; output.tag.set_title(lad_to_upper(string, plugin_title())); const LADSPA_Descriptor *lad_desc = server->lad_descriptor; @@ -489,14 +480,13 @@ void PluginAClientLAD::save_data(KeyFrame *keyframe) void PluginAClientLAD::read_data(KeyFrame *keyframe) { + if( !config.port_data ) config.initialize(server); FileXML input; - char string[BCTEXTLEN]; - - input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data())); - config.initialize(server); + input.set_shared_input(keyframe->xbuf); while(! input.read_tag() ) { //printf("PluginAClientLAD::read_data %s\n", input.tag.get_title()); + char string[BCTEXTLEN]; if(! input.tag.title_is(lad_to_upper(string, plugin_title())) ) continue; const LADSPA_Descriptor *lad_desc = server->lad_descriptor; const LADSPA_PortDescriptor *port_desc = lad_desc->PortDescriptors; @@ -515,12 +505,14 @@ void PluginAClientLAD::read_data(KeyFrame *keyframe) void PluginAClientLAD::delete_buffers() { - if(in_buffers) - for(int i = 0; i < total_inbuffers; i++) delete [] in_buffers[i]; - if(out_buffers) - for(int i = 0; i < total_outbuffers; i++) delete [] out_buffers[i]; - in_buffers = 0; - out_buffers = 0; + if( in_buffers ) { + for( int i=0; i