X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Faattachmentpoint.C;h=edeba467a244465e17175a26ed4506d01cfde594;hb=a3a59f63fdfbcf94c561595f515951fdfd4bea30;hp=00d8ae0de00afbe5cb2262e49f33a917040c123b;hpb=48f43d501344bd185f8877329a47c64600187a72;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/aattachmentpoint.C b/cinelerra-5.0/cinelerra/aattachmentpoint.C index 00d8ae0d..edeba467 100644 --- a/cinelerra-5.0/cinelerra/aattachmentpoint.C +++ b/cinelerra-5.0/cinelerra/aattachmentpoint.C @@ -96,48 +96,27 @@ void AAttachmentPoint::render(Samples *output, if(plugin_server->multichannel) { // Test against previous parameters for reuse of previous data - if(is_processed && - this->start_position == start_position && - this->len == len && - this->sample_rate == sample_rate) - { - memcpy(output->get_data(), - buffer_vector[buffer_number]->get_data(), - sizeof(double) * len); - return; - } - + if( !is_processed || this->start_position != start_position || + this->len != len || this->sample_rate != sample_rate ) { // Update status - this->start_position = start_position; - this->len = len; - this->sample_rate = sample_rate; - is_processed = 1; + this->start_position = start_position; + this->len = len; + this->sample_rate = sample_rate; + is_processed = 1; // Allocate buffer vector - new_buffer_vector(virtual_plugins.total, len); - -// Create temporary buffer vector with output argument substituted in - Samples **output_temp = new Samples*[virtual_plugins.total]; - for(int i = 0; i < virtual_plugins.total; i++) - { - if(i == buffer_number) - output_temp[i] = output; - else - output_temp[i] = buffer_vector[i]; - } + new_buffer_vector(virtual_plugins.total, len); // Process plugin - plugin_servers.values[0]->process_buffer(output_temp, - start_position, - len, - sample_rate, - plugin->length * - sample_rate / - renderengine->get_edl()->session->sample_rate, - renderengine->command->get_direction()); - -// Delete temporary buffer vector - delete [] output_temp; + plugin_servers.values[0]->process_buffer( + buffer_vector, start_position, len, sample_rate, + plugin->length * sample_rate / + renderengine->get_edl()->session->sample_rate, + renderengine->command->get_direction()); + } + memcpy(output->get_data(), + buffer_vector[buffer_number]->get_data(), + sizeof(double) * len); } else {