X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Farender.C;h=7737f5d2f4f2b11f6c822b4f3c561c9a90dc4c04;hb=eecf057a9d6b8c8cffc7d0001bff89bc9cac7b05;hp=bbfe590670fa156d773782f1ae3816f2a3a6187b;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/arender.C b/cinelerra-5.1/cinelerra/arender.C index bbfe5906..7737f5d2 100644 --- a/cinelerra-5.1/cinelerra/arender.C +++ b/cinelerra-5.1/cinelerra/arender.C @@ -48,27 +48,20 @@ ARender::ARender(RenderEngine *renderengine) : CommonRender(renderengine) { // Clear output buffers - for(int i = 0; i < MAXCHANNELS; i++) - { + for( int i=0; i 0) - return total_peaks; - else - { + if( !total_peaks ) { meter_render_fragment = renderengine->fragment_len; + int tracking_fragment = renderengine->get_edl()->session->sample_rate / TRACKING_RATE; // This number and the timer in tracking.C determine the rate - while(meter_render_fragment > - renderengine->get_edl()->session->sample_rate / TRACKING_RATE) - meter_render_fragment /= 2; - total_peaks = 16 * - renderengine->fragment_len / - meter_render_fragment; - return total_peaks; + while( meter_render_fragment > tracking_fragment ) meter_render_fragment /= 2; + total_peaks = 16 * renderengine->fragment_len / meter_render_fragment; } + return total_peaks; } int ARender::init_meters() { // not providing enough peaks results in peaks that are ahead of the sound - if(level_samples) delete [] level_samples; - calculate_history_size(); - level_samples = new int64_t[total_peaks]; - - for(int i = 0; i < MAXCHANNELS;i++) - { - current_level[i] = 0; - if(buffer[i] && !level_history[i]) - level_history[i] = new double[total_peaks]; - } - - for(int i = 0; i < total_peaks; i++) - { - level_samples[i] = -1; - } - - for(int j = 0; j < MAXCHANNELS; j++) - { - if(buffer[j]) - for(int i = 0; i < total_peaks; i++) - level_history[j][i] = 0; + meter_history->init(MAXCHANNELS, calculate_history_size()); + for( int i=0; ireset_channel(i); } return 0; } void ARender::allocate_buffers(int samples) { - for(int i = 0; i < MAXCHANNELS; i++) - { + for( int i=0; i= renderengine->get_edl()->session->audio_channels ) { + delete buffer[i]; buffer[i] = 0; } - if(i < renderengine->get_edl()->session->audio_channels) - { + if( !buffer[i] && i < renderengine->get_edl()->session->audio_channels ) { buffer[i] = new Samples(samples); buffer_allocated[i] = samples; - audio_out[i] = buffer[i]; } + audio_out[i] = buffer[i]; } } @@ -246,26 +212,6 @@ int ARender::process_buffer(int64_t input_len, int64_t input_position) return result; } -int ARender::get_history_number(int64_t *table, int64_t position) -{ -// Get the entry closest to position - int result = 0; - int64_t min_difference = 0x7fffffff; - for(int i = 0; i < total_peaks; i++) - { - -//printf("%jd ", table[i]); - if(labs(table[i] - position) < min_difference) - { - min_difference = labs(table[i] - position); - result = i; - } - } -//printf("\n"); -//printf("ARender::get_history_number %jd %d\n", position, result); - return result; -} - void ARender::send_last_buffer() { if( renderengine->audio ) @@ -358,12 +304,3 @@ if(debug) printf("ARender::run %d\n", __LINE__); stop_plugins(); } - -int ARender::get_next_peak(int current_peak) -{ - current_peak++; - if(current_peak >= total_peaks) current_peak = 0; - return current_peak; -} - -