X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Fvirtualanode.C;h=a1ad5235c65841c413e88d309034820a5e3d7395;hb=a19a685a46ddc630010788707d9e5b9d2342af46;hp=62cb5965e88f692768888fc9917f72489023a3db;hpb=e13e0a987ad66b8274fcbaddc71eac583ea80bea;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/virtualanode.C b/cinelerra-5.1/cinelerra/virtualanode.C index 62cb5965..a1ad5235 100644 --- a/cinelerra-5.1/cinelerra/virtualanode.C +++ b/cinelerra-5.1/cinelerra/virtualanode.C @@ -281,8 +281,6 @@ if(debug) printf("VirtualANode::render_as_module %d\n", __LINE__); // Scan fragment in meter sized fragments for(int i = 0; i < len; ) { - int current_level = ((AModule*)real_module)->current_level; - double peak = 0; meter_render_start = i; meter_render_end = i + meter_render_fragment; if(meter_render_end > len) @@ -290,25 +288,20 @@ if(debug) printf("VirtualANode::render_as_module %d\n", __LINE__); // Number of samples into the fragment this meter sized fragment is, // normalized to project sample rate. int64_t meter_render_start_project = meter_render_start * - project_sample_rate / - sample_rate; + project_sample_rate / sample_rate; // Scan meter sized fragment - double *output_samples = output_temp->get_data(); - for( ; i < meter_render_end; i++) - { - double sample = fabs(output_samples[i]); - if(sample > peak) peak = sample; + double peak = 0, *output_samples = output_temp->get_data(); + while( i < meter_render_end ) { + double sample = fabs(output_samples[i++]); + if( sample > peak ) peak = sample; } - ((AModule*)real_module)->level_history[current_level] = - peak; - ((AModule*)real_module)->level_samples[current_level] = - (direction == PLAY_FORWARD) ? + MeterHistory *meter_history = ((AModule*)real_module)->meter_history; + int64_t pos = (direction == PLAY_FORWARD) ? (start_position_project + meter_render_start_project) : - (start_position_project - meter_render_start_project); - ((AModule*)real_module)->current_level = - arender->get_next_peak(current_level); + (start_position_project - meter_render_start_project) ; + meter_history->set_peak(0, peak, pos); } } if(debug) printf("VirtualANode::render_as_module %d\n", __LINE__);