X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fhistogram%2Fhistogram.C;fp=cinelerra-5.1%2Fplugins%2Fhistogram%2Fhistogram.C;h=da67c208694425820ffdc42af07f0949562086d7;hb=5a46f81a504562b7c8a0c4ff940e2b5b5c068ded;hp=33091111dbbb05aa5217effc5d425784796c064c;hpb=2a7b3d16f56274e1548abd2493e688794ee557c4;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/plugins/histogram/histogram.C b/cinelerra-5.1/plugins/histogram/histogram.C index 33091111..da67c208 100644 --- a/cinelerra-5.1/plugins/histogram/histogram.C +++ b/cinelerra-5.1/plugins/histogram/histogram.C @@ -321,11 +321,13 @@ float HistogramMain::calculate_level(float input, void HistogramMain::calculate_histogram(VFrame *data, int do_value) { - - if(!engine) engine = new HistogramEngine(this, - get_project_smp() + 1, - get_project_smp() + 1); - + if( !engine ) + { + int cpus = data->get_w() * data->get_h() / 0x80000 + 2; + int smps = get_project_smp(); + if( cpus > smps ) cpus = smps; + engine = new HistogramEngine(this, cpus, cpus); + } if(!accum[0]) { for(int i = 0; i < HISTOGRAM_MODES; i++) @@ -446,11 +448,15 @@ int HistogramMain::process_buffer(VFrame *frame, // Apply histogram in hardware if(use_opengl) return run_opengl(); - if(!engine) engine = new HistogramEngine(this, - get_project_smp() + 1, - get_project_smp() + 1); this->input = frame; this->output = frame; + if( !engine ) + { + int cpus = input->get_w() * input->get_h() / 0x80000 + 2; + int smps = get_project_smp(); + if( cpus > smps ) cpus = smps; + engine = new HistogramEngine(this, cpus, cpus); + } // Always plot to set the curves if automatic if(config.plot || config.automatic) send_render_gui(frame);