raise vwdw stacking tweak, drag handle for transitions, cleanup histogram plugin...
authorGood Guy <[email protected]>
Sun, 27 Sep 2020 20:07:22 +0000 (14:07 -0600)
committerGood Guy <[email protected]>
Sun, 27 Sep 2020 20:07:22 +0000 (14:07 -0600)
30 files changed:
cinelerra-5.1/cinelerra/appearanceprefs.C
cinelerra-5.1/cinelerra/mainmenu.C
cinelerra-5.1/cinelerra/mainsession.C
cinelerra-5.1/cinelerra/mainsession.h
cinelerra-5.1/cinelerra/mainsession.inc
cinelerra-5.1/cinelerra/mwindow.C
cinelerra-5.1/cinelerra/mwindow.h
cinelerra-5.1/cinelerra/mwindowedit.C
cinelerra-5.1/cinelerra/new.C
cinelerra-5.1/cinelerra/trackcanvas.C
cinelerra-5.1/cinelerra/trackcanvas.h
cinelerra-5.1/cinelerra/transitionpopup.C
cinelerra-5.1/cinelerra/transitionpopup.h
cinelerra-5.1/plugins/histogram/debug [deleted file]
cinelerra-5.1/plugins/histogram/histogram.C
cinelerra-5.1/plugins/histogram/histogram.h
cinelerra-5.1/plugins/histogram/histogramwindow.C
cinelerra-5.1/plugins/theme_suv/data/expandpatch_checked.png
cinelerra-5.1/plugins/theme_suv/data/expandpatch_checkedhi.png
cinelerra-5.1/plugins/theme_suv/data/expandpatch_dn.png
cinelerra-5.1/plugins/theme_suv/data/expandpatch_hi.png
cinelerra-5.1/plugins/theme_suv/data/expandpatch_up.png
cinelerra-5.1/plugins/theme_suv/data/new_bg.png
cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_dn.png
cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_hi.png
cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_up.png
cinelerra-5.1/plugins/theme_suv/data/tumblepatch_bottom.png
cinelerra-5.1/plugins/theme_suv/data/tumblepatch_hi.png
cinelerra-5.1/plugins/theme_suv/data/tumblepatch_top.png
cinelerra-5.1/plugins/theme_suv/data/tumblepatch_up.png

index c53db8300875e242bdb9dc042ec2b039a690564b..1f87883551ba69b5096b71932046dd05437ec904 100644 (file)
@@ -205,7 +205,7 @@ void AppearancePrefs::create_objects()
        if( y2 < y ) y2 = y;
 
        add_subwindow(new BC_Bar(x0, y2, get_w()-x0 - xs30));
-       y += ys15;
+       y += ys35;
 
        x = x0;  y1 = y;
        add_subwindow(title = new BC_Title(x, y, _("Warnings:"), LARGEFONT,
index 3a694f72b6099155ab862fdb8ae929295f246f6e..4359595baebd2fb5efc9e5894473fb0f7031849c 100644 (file)
@@ -1605,7 +1605,7 @@ ShowVWindow::ShowVWindow(MWindow *mwindow)
 int ShowVWindow::handle_event()
 {
        mwindow->gui->unlock_window();
-       mwindow->show_vwindow();
+       mwindow->show_vwindow(1);
        mwindow->gui->lock_window("ShowVWindow::handle_event");
        return 1;
 }
index de63b8b112b03ac399d6484499a6460d6d15e1c0..7d582c46d59e65d7b32e2a0993067a69664834af 100644 (file)
@@ -36,6 +36,7 @@
 #include "mwindow.h"
 #include "mwindowgui.h"
 #include "plugin.h"
+#include "transition.h"
 
 MainSession::MainSession(MWindow *mwindow)
 {
@@ -51,6 +52,7 @@ MainSession::MainSession(MWindow *mwindow)
        current_operation = NO_OPERATION;
        drag_pluginservers = new ArrayList<PluginServer*>;
        drag_plugin = 0;
+       drag_transition = 0;
        drag_assets = new ArrayList<Indexable*>;
        drag_auto_gang = new ArrayList<Auto*>;
        drag_clips = new ArrayList<EDL*>;
@@ -657,6 +659,10 @@ Track *MainSession::drag_handle_track()
        case DRAG_PLUGINHANDLE2:
                track = drag_plugin->edits->track;
                break;
+       case DRAG_TRANSNHANDLE1:
+       case DRAG_TRANSNHANDLE2:
+               track = drag_transition->edits->track;
+               break;
        }
        return track;
 }
index 58115d69fc313b3b1b13d069ec0d04baef702149..e8d31db67e4e07f2b6c569e91fe7adb83fd1bf2c 100644 (file)
@@ -38,6 +38,7 @@
 #include "pluginset.inc"
 #include "pluginserver.inc"
 #include "track.inc"
+#include "transition.inc"
 #include "vwindowgui.inc"
 
 // Options not in EDL but not changed in preferences
@@ -73,6 +74,7 @@ public:
 // Item being dragged
        ArrayList <PluginServer*> *drag_pluginservers;
        Plugin *drag_plugin;
+       Transition *drag_transition;
 // When trim should only affect the selected edits or plugins
        Edits *trim_edits;
        ArrayList<Indexable*> *drag_assets;
index 0a734958ca99b948e33f908576349ebdea942943..754183c29e85ce21b9b24c6504880bbbd6724813 100644 (file)
@@ -61,6 +61,8 @@ enum
        DRAG_PLUGINKEY,
        DRAG_PLUGINHANDLE1,        // Waiting to move out of drag threshold
        DRAG_PLUGINHANDLE2,         // Dragging outside drag threshold
+       DRAG_TRANSNHANDLE1,
+       DRAG_TRANSNHANDLE2,
        DRAG_SPEED,
        DRAG_GROUP,
        GROUP_TOGGLE,
index bb04335f118e6b85f9bac7a95ad323fa65c5ce93..cf16cd9354528066b1f040cbe60055c2d7df0aa1 100644 (file)
@@ -2919,7 +2919,7 @@ void MWindow::run()
        run_lock->unlock();
 }
 
-void MWindow::show_vwindow()
+void MWindow::show_vwindow(int raise)
 {
        int total_running = 0;
        session->show_vwindow = 1;
@@ -2929,19 +2929,17 @@ void MWindow::show_vwindow()
        for(int j = 0; j < vwindows.size(); j++) {
                VWindow *vwindow = vwindows[j];
                if( !vwindow->is_running() ) continue;
+               total_running++;
+               if( !raise && !vwindow->gui->is_hidden() ) continue;
                vwindow->gui->lock_window("MWindow::show_vwindow");
                vwindow->gui->show_window(0);
                vwindow->gui->raise_window();
                vwindow->gui->flush();
                vwindow->gui->unlock_window();
-               total_running++;
        }
-
 // If no windows visible
-       if(!total_running)
-       {
+       if( !total_running )
                get_viewer(1, DEFAULT_VWINDOW);
-       }
 
        gui->mainmenu->show_vwindow->set_checked(1);
 }
@@ -3016,8 +3014,8 @@ void MWindow::restore_windows()
                        vwindow->gui->unlock_window();
                }
        }
-       else
-               show_vwindow();
+       else 
+               show_vwindow(0);
 
        if( !session->show_awindow && !awindow->gui->is_hidden() ) {
                awindow->gui->lock_window("MWindow::restore_windows");
index d7e54b1cba31e3cd1d144ae34ba5463e2f5648e5..b31f2642141ceddad78638c31c1210bd84ab20ef 100644 (file)
@@ -209,7 +209,7 @@ public:
        void media_to_clip();
        int create_ref(Asset *asset, EDL *ref);
 // Show windows
-       void show_vwindow();
+       void show_vwindow(int raise);
        void show_awindow();
        void show_lwindow();
        void show_cwindow();
@@ -623,6 +623,7 @@ public:
 
        int modify_edithandles();
        int modify_pluginhandles();
+       int modify_transnhandles();
        void finish_modify_handles();
        void rescale_proxy(EDL *clip, int orig_scale, int new_scale);
        void add_proxy(ArrayList<Indexable*> *orig_assets,
index 2bf9a97cf2192127e6a7863c447b84e292a7c3ff..003844fe9a61698083240ba6f8dbd0a6ae059676 100644 (file)
@@ -960,6 +960,34 @@ void MWindow::finish_modify_handles()
        cwindow->update(1, 0, 0, 0, 1);
 }
 
+int MWindow::modify_transnhandles()
+{
+       gui->reset_default_message();
+       gui->default_message();
+       Transition *transition = session->drag_transition;
+       if( !transition ) return 1;
+       int64_t length = transition->length;
+       Track *track = transition->edit->track;
+       int64_t start_pos = track->to_units(session->drag_start, 0);
+       int64_t end_pos = track->to_units(session->drag_position, 0);
+       length += end_pos - start_pos;
+       if( length < 0 ) length = 0;
+       if( length == transition->length ) return 0;
+
+       undo_before();
+       transition->length = length;
+       undo_after(_("trans handle"), LOAD_EDITS);
+
+       save_backup();
+       restart_brender();
+       sync_parameters(CHANGE_EDL);
+       update_plugin_guis();
+       gui->update(1, FORCE_REDRAW, 1, 1, 1, 1, 0);
+       cwindow->update(1, 0, 0, 0, 1);
+
+       return 0;
+}
+
 void MWindow::match_output_size(Track *track)
 {
        undo_before();
index a9f4aaf235a3efcb97b3ee8c68730b6375828873..47e467050920d397eb5baa1c49ff8fc13d7e7d8c 100644 (file)
@@ -60,7 +60,7 @@
 // add tracks dialog
 #define HEIGHT1 yS(240)
 // offset for folder panel
-#define HEIGHT2 yS(440)
+#define HEIGHT2 yS(435)
 
 New::New(MWindow *mwindow)
 {
index f37b1cd63c4d307873a64fdda3c71b2cd5cfc3c5..c0fea44a35d82970fa662baf7f558a5e07a00a24 100644 (file)
@@ -1967,7 +1967,8 @@ void TrackCanvas::draw_inout_points()
 void TrackCanvas::draw_drag_handle()
 {
        if( mwindow->session->current_operation != DRAG_EDITHANDLE2 &&
-           mwindow->session->current_operation != DRAG_PLUGINHANDLE2 ) return;
+           mwindow->session->current_operation != DRAG_PLUGINHANDLE2 &&
+           mwindow->session->current_operation != DRAG_TRANSNHANDLE2 ) return;
        int64_t pixel1 = Units::round(mwindow->session->drag_position *
                mwindow->edl->session->sample_rate /
                mwindow->edl->local_session->zoom_sample -
@@ -3846,14 +3847,8 @@ void TrackCanvas::update_drag_handle()
        double new_position;
        int cursor_x = get_cursor_x();
 
-       new_position =
-               (double)(cursor_x +
-               mwindow->edl->local_session->view_start[pane->number]) *
-               mwindow->edl->local_session->zoom_sample /
-               mwindow->edl->session->sample_rate;
-
-       new_position =
-               mwindow->edl->align_to_frame(new_position, 0);
+       new_position = mwindow->edl->get_cursor_position(cursor_x, pane->number);
+       new_position = mwindow->edl->align_to_frame(new_position, 0);
 
        if( ctrl_down() && alt_down() ) {
 #define snapper(v) do { \
@@ -4321,42 +4316,46 @@ int TrackCanvas::cursor_update(int in_motion)
        {
                case DRAG_EDITHANDLE1:
 // Outside threshold.  Upgrade status
-                       if(active)
-                       {
-                               if(labs(get_cursor_x() - mwindow->session->drag_origin_x) > HANDLE_W)
-                               {
-                                       mwindow->session->current_operation = DRAG_EDITHANDLE2;
-                                       update_overlay = 1;
-                               }
+                       if( !active ) break;
+                       if( labs(get_cursor_x() - mwindow->session->drag_origin_x) > HANDLE_W ) {
+                               mwindow->session->current_operation = DRAG_EDITHANDLE2;
+                               update_overlay = 1;
                        }
                        break;
-
                case DRAG_EDITHANDLE2:
-                       if(active)
-                       {
-                               update_drag_handle();
-                               update_overlay = 1;
-                       }
+                       if( !active ) break;
+                       update_drag_handle();
+                       update_overlay = 1;
                        break;
 
                case DRAG_PLUGINHANDLE1:
-                       if(active)
-                       {
-                               if(labs(get_cursor_x() - mwindow->session->drag_origin_x) > HANDLE_W)
-                               {
-                                       mwindow->session->current_operation = DRAG_PLUGINHANDLE2;
-                                       update_overlay = 1;
-                               }
+                       if( !active ) break;
+                       if( labs(get_cursor_x() - mwindow->session->drag_origin_x) > HANDLE_W ) {
+                               mwindow->session->current_operation = DRAG_PLUGINHANDLE2;
+                               update_overlay = 1;
                        }
                        break;
-
                case DRAG_PLUGINHANDLE2:
-                       if(active)
-                       {
-                               update_drag_handle();
+                       if( !active ) break;
+                       update_drag_handle();
+                       update_overlay = 1;
+                       break;
+
+               case DRAG_TRANSNHANDLE1:
+                       if( !active ) break;
+                       if( labs(get_cursor_x() - mwindow->session->drag_origin_x) > HANDLE_W ) {
+                               mwindow->session->current_operation = DRAG_TRANSNHANDLE2;
                                update_overlay = 1;
                        }
                        break;
+               case DRAG_TRANSNHANDLE2: {
+                       if( !active ) break;
+                       position = mwindow->edl->get_cursor_position(get_cursor_x(), pane->number);
+                       position = mwindow->edl->align_to_frame(position, 1);
+                       drag_transition_handle(position);
+                       rerender = 1;
+                       update_overlay = 1;
+                       break; }
 
 // Rubber band curves
                case DRAG_FADE:
@@ -4479,6 +4478,8 @@ int TrackCanvas::cursor_update(int in_motion)
                                                0, new_cursor, update_cursor)) break;
                                if(do_keyframes(get_cursor_x(), get_cursor_y(),
                                        0, 0, new_cursor, update_cursor, rerender)) break;
+                               if(do_transition_handles(get_cursor_x(), get_cursor_y(),
+                                       0, rerender, update_overlay, new_cursor, update_cursor)) break;
                                if(do_edit_handles(get_cursor_x(), get_cursor_y(),
                                        0, rerender, update_overlay, new_cursor, update_cursor)) break;
 // Plugin boundaries
@@ -4678,6 +4679,20 @@ int TrackCanvas::button_release_event()
                        result = 1;
                        break;
 
+               case DRAG_TRANSNHANDLE2:
+                       mwindow->session->current_operation = NO_OPERATION;
+                       drag_scroll = 0;
+                       result = 1;
+
+                       end_transnhandle_selection();
+                       break;
+
+               case DRAG_TRANSNHANDLE1:
+                       mwindow->session->current_operation = NO_OPERATION;
+                       drag_scroll = 0;
+                       result = 1;
+                       break;
+
                case DRAG_SPEED:
                        redraw = FORCE_REDRAW;
                        load_flags |= LOAD_EDITS | LOAD_TIMEBAR;
@@ -5000,6 +5015,95 @@ int TrackCanvas::do_plugin_handles(int cursor_x,
        return result;
 }
 
+int TrackCanvas::do_transition_handles(int cursor_x, int cursor_y, int button_press,
+               int &rerender, int &update_overlay, int &new_cursor, int &update_cursor)
+{
+       Transition *trans_result = 0;
+       int result = 0;
+
+       Track *track = mwindow->edl->tracks->first;
+       for( ; track && !result; track=track->next) {
+               if( track->is_hidden() ) continue;
+               Edit *edit = track->edits->first;
+               for( ; edit && !result; edit=edit->next ) {
+                       Transition *trans = edit->transition;
+                       if( !trans ) continue;
+                       int64_t x, y, w, h;
+                       edit_dimensions(edit, x, y, w, h);
+                       int strip_x = x, edit_y = y;
+                       get_transition_coords(edit, x, y, w, h);
+                       VFrame *strip = mwindow->theme->get_image("plugin_bg_data");
+                       int strip_y = y - strip->get_h();
+                       if( track->show_assets() && track->show_titles() )
+                               edit_y += mwindow->theme->get_image("title_bg_data")->get_h();
+                       if( strip_y < edit_y ) strip_y = edit_y;
+                       int strip_w = Units::round(edit->track->from_units(edit->transition->length) *
+                               mwindow->edl->session->sample_rate / mwindow->edl->local_session->zoom_sample);
+                       int x1 = strip_x + strip_w - HANDLE_W/2, x2 = x1 + HANDLE_W;
+                       int y1 = strip_y + strip->get_h()/2 - HANDLE_H/2, y2 = y1 + HANDLE_W;
+                       if( cursor_x >= x1 && cursor_x < x2 &&
+                           cursor_y >= y1 && cursor_y < y2 ) {
+                               trans_result = trans;
+                               result = 1;
+                       }
+               }
+       }
+
+       if( result ) {
+               if( button_press ) {
+                       mwindow->session->drag_transition = trans_result;
+                       mwindow->session->drag_handle = 1;
+                       mwindow->session->drag_button = get_buttonpress() - 1;
+                       int64_t trans_end = trans_result->edit->startproject + trans_result->length;
+                       double position = trans_result->edit->track->from_units(trans_end);
+                       mwindow->session->drag_position = position;
+                       mwindow->session->drag_start = position;
+                       mwindow->session->current_operation = DRAG_TRANSNHANDLE1;
+                       mwindow->session->drag_origin_x = get_cursor_x();
+                       mwindow->session->drag_origin_y = get_cursor_y();
+                       update_cursor = 1;
+               }
+               new_cursor = RIGHT_CURSOR;
+               update_overlay = 1;
+       }
+
+       return result;
+}
+
+int TrackCanvas::drag_transition_handle(double position)
+{
+       Transition *transition = mwindow->session->drag_transition;
+       if( !transition ) return 1;
+       mwindow->session->drag_position = position;
+       mwindow->edl->local_session->set_selectionstart(position);
+       mwindow->edl->local_session->set_selectionend(position);
+       char string[BCSTRLEN];
+       int64_t length = transition->length;
+       Track *track = transition->edit->track;
+       int64_t start_pos = track->to_units(mwindow->session->drag_start, 0);
+       int64_t end_pos = track->to_units(mwindow->session->drag_position, 0);
+       length += end_pos - start_pos;
+       if( length < 0 ) length = 0;
+       double time = track->from_units(length);
+       Units::totext(string, time,
+               mwindow->edl->session->time_format,
+               mwindow->edl->session->sample_rate,
+               mwindow->edl->session->frame_rate,
+               mwindow->edl->session->frames_per_foot);
+       mwindow->gui->show_message(string);
+       if( mwindow->gui->transition_menu->length_thread->running() ) {
+               TransitionLengthDialog *dialog = (TransitionLengthDialog *)
+                        mwindow->gui->transition_menu->length_thread->get_gui();
+               if( dialog ) {
+                       dialog->lock_window("TrackCanvas::drag_transition_handle");
+                       dialog->update_text(time);
+                       dialog->thread->new_length = time;
+                       dialog->unlock_window();
+               }
+       }
+       return 0;
+}
+
 
 int TrackCanvas::do_tracks(int cursor_x, int cursor_y, int button_press)
 {
@@ -5421,6 +5525,10 @@ int TrackCanvas::button_press_event()
                                        0, get_buttonpress(), new_cursor,
                                        update_cursor, rerender) ) break;
                                update_message = 1;
+
+                               if( do_transition_handles(cursor_x, cursor_y,
+                                       1, rerender, update_overlay, new_cursor,
+                                       update_cursor) ) break;
 // Test edit boundaries
                                if( do_edit_handles(cursor_x, cursor_y,
                                        1, rerender, update_overlay, new_cursor,
@@ -5457,6 +5565,8 @@ int TrackCanvas::button_press_event()
                                        break;
                                }
                                update_message = 1;
+                               if( do_transition_handles(cursor_x, cursor_y,
+                                       1, rerender, update_overlay, new_cursor, update_cursor) ) break;
 // Test edit boundaries
                                if( do_edit_handles(cursor_x, cursor_y,
                                        1, rerender, update_overlay, new_cursor, update_cursor) ) break;
@@ -5553,11 +5663,19 @@ int TrackCanvas::start_selection(double position)
 void TrackCanvas::end_edithandle_selection()
 {
        mwindow->modify_edithandles();
+       mwindow->session->drag_edit = 0;
 }
 
 void TrackCanvas::end_pluginhandle_selection()
 {
        mwindow->modify_pluginhandles();
+       mwindow->session->drag_plugin = 0;
+}
+
+void TrackCanvas::end_transnhandle_selection()
+{
+       mwindow->modify_transnhandles();
+       mwindow->session->drag_transition = 0;
 }
 
 
index d08b420a0163f0859b5403a52a6dc20cbff591cb..3d1ded196c39c94e69e7a7e068379c4382c9b127 100644 (file)
@@ -250,53 +250,28 @@ public:
        int ibeam_mode();
 
 // Get edit and handle the cursor is over
-       int do_edit_handles(int cursor_x,
-               int cursor_y,
-               int button_press,
-               int &rerender,
-               int &update_overlay,
-               int &new_cursor,
-               int &update_cursor);
+       int do_edit_handles(int cursor_x, int cursor_y, int button_press,
+               int &rerender, int &update_overlay, int &new_cursor, int &update_cursor);
 // Get plugin and handle the cursor if over
-       int do_plugin_handles(int cursor_x,
-               int cursor_y,
-               int button_press,
-               int &rerender,
-               int &update_overlay,
-               int &new_cursor,
-               int &update_cursor);
+       int do_plugin_handles(int cursor_x, int cursor_y, int button_press,
+               int &rerender, int &update_overlay, int &new_cursor, int &update_cursor);
+       int do_transition_handles(int cursor_x, int cursor_y, int button_press,
+               int &rerender, int &update_overlay, int &new_cursor, int &update_cursor);
+       int drag_transition_handle(double position);
 // Get edit the cursor is over
-       int do_edits(int cursor_x,
-               int cursor_y,
-               int button_press,
-               int drag_start,
-               int &redraw,
-               int &rerender,
-               int &new_cursor,
-               int &update_cursor);
+       int do_edits(int cursor_x, int cursor_y, int button_press,
+               int drag_start, int &redraw, int &rerender, int &new_cursor, int &update_cursor);
        int do_tracks(int cursor_x,
                int cursor_y,
                int button_press);
        int test_track_group(EDL *group, Track *first_track, double &pos);
        int edit_intersects(Track *track, Edit *src_edit, double &pos);
        int test_resources(int cursor_x, int cursor_y);
-       int do_plugins(int cursor_x,
-               int cursor_y,
-               int drag_start,
-               int button_press,
-               int &redraw,
-               int &rerender);
-       int do_transitions(int cursor_x,
-               int cursor_y,
-               int button_press,
-               int &new_cursor,
-               int &update_cursor);
-       void draw_cropped_line(int x1,
-               int y1,
-               int x2,
-               int y2,
-               int min_y,
-               int max_y);
+       int do_plugins(int cursor_x, int cursor_y, int drag_start, int button_press,
+               int &redraw, int &rerender);
+       int do_transitions(int cursor_x, int cursor_y, int button_press,
+               int &new_cursor, int &update_cursor);
+       void draw_cropped_line(int x1, int y1, int x2, int y2, int min_y, int max_y);
        int button_press_event();
        int button_release_event();
        int cursor_update(int in_motion);
@@ -319,6 +294,7 @@ public:
        int64_t drop_plugin_position(PluginSet *plugin_set, Plugin *moved_plugin);
        void end_edithandle_selection();
        void end_pluginhandle_selection();
+       void end_transnhandle_selection();
 // Number of seconds spanned by the trackcanvas
        double time_visible();
        void update_drag_handle();
index 58a05e588872a79239302e460b1c5957dda8c266..5922a8810e0e3b5cc9cf1352534e8f6fc73fb402 100644 (file)
@@ -111,14 +111,9 @@ int TransitionUnitsItem::handle_event()
 {
        TransitionUnitsPopup *units_popup = (TransitionUnitsPopup *)get_popup_menu();
        TransitionLengthDialog *gui = units_popup->gui;
-       TransitionLengthText *length_text = gui->text;
-       EDLSession *session = gui->mwindow->edl->session;
        double length = gui->thread->new_length;
-       char text[BCSTRLEN];
        units_popup->units = id;
-       Units::totext(text, length, units_popup->units, session->sample_rate,
-                       session->frame_rate, session->frames_per_foot);
-       length_text->update(text);
+       gui->update_text(length);
        units_popup->set_text(get_text());
        return 1;
 }
@@ -181,6 +176,17 @@ int TransitionLengthDialog::close_event()
        return 1;
 }
 
+void TransitionLengthDialog::update_text(double length)
+{
+       int units = units_popup->units;
+       EDLSession *session = mwindow->edl->session;
+       char string[BCSTRLEN];
+       Units::totext(string, length, units,
+               session->sample_rate, session->frame_rate,
+               session->frames_per_foot);
+       text->update(string);
+}
+
 
 TransitionLengthText::TransitionLengthText(MWindow *mwindow,
        TransitionLengthDialog *gui, int x, int y)
@@ -220,11 +226,7 @@ int TransitionLengthText::handle_up_down(int dir)
                break;
        }
        double length = gui->thread->new_length + delta * dir;
-       char text[BCSTRLEN];
-       Units::totext(text, length, units,
-               session->sample_rate, session->frame_rate,
-               session->frames_per_foot);
-       update(text);
+       gui->update_text(length);
        return gui->thread->update(length);
 }
 
index 67498a32f7f2a472a2aada31567a83fec07f3466..57792f9cb6be15badf6aca7608157bfce856840d 100644 (file)
@@ -84,6 +84,7 @@ public:
 
        void create_objects();
        int close_event();
+       void update_text(double length);
 
        MWindow *mwindow;
        TransitionLengthThread *thread;
diff --git a/cinelerra-5.1/plugins/histogram/debug b/cinelerra-5.1/plugins/histogram/debug
deleted file mode 100644 (file)
index 5978e87..0000000
+++ /dev/null
@@ -1,1111 +0,0 @@
-HistogramConfig::interpolate 150 0.220192 1.000000 0.800000
-TimeAvgMain::process_buffer 357 prev_frame=270 start_position=270 i=270
-HistogramConfig::interpolate 150 0.220642 1.000000 0.800131
-TimeAvgMain::process_buffer 357 prev_frame=271 start_position=271 i=271
-HistogramConfig::interpolate 150 0.221091 1.000000 0.800261
-TimeAvgMain::process_buffer 357 prev_frame=272 start_position=272 i=272
-HistogramConfig::interpolate 150 0.221541 1.000000 0.800392
-TimeAvgMain::process_buffer 357 prev_frame=273 start_position=273 i=273
-HistogramConfig::interpolate 150 0.221990 1.000000 0.800523
-TimeAvgMain::process_buffer 357 prev_frame=274 start_position=274 i=274
-HistogramConfig::interpolate 150 0.222440 1.000000 0.800654
-TimeAvgMain::process_buffer 357 prev_frame=275 start_position=275 i=275
-HistogramConfig::interpolate 150 0.222889 1.000000 0.800784
-TimeAvgMain::process_buffer 357 prev_frame=276 start_position=276 i=276
-HistogramConfig::interpolate 150 0.223338 1.000000 0.800915
-TimeAvgMain::process_buffer 357 prev_frame=277 start_position=277 i=277
-HistogramConfig::interpolate 150 0.223788 1.000000 0.801046
-TimeAvgMain::process_buffer 357 prev_frame=278 start_position=278 i=278
-HistogramConfig::interpolate 150 0.224237 1.000000 0.801177
-TimeAvgMain::process_buffer 357 prev_frame=279 start_position=279 i=279
-HistogramConfig::interpolate 150 0.224687 1.000000 0.801307
-TimeAvgMain::process_buffer 357 prev_frame=280 start_position=280 i=280
-HistogramConfig::interpolate 150 0.225136 1.000000 0.801438
-TimeAvgMain::process_buffer 357 prev_frame=281 start_position=281 i=281
-HistogramConfig::interpolate 150 0.225586 1.000000 0.801569
-TimeAvgMain::process_buffer 357 prev_frame=282 start_position=282 i=282
-HistogramConfig::interpolate 150 0.226035 1.000000 0.801700
-TimeAvgMain::process_buffer 357 prev_frame=283 start_position=283 i=283
-HistogramConfig::interpolate 150 0.226485 1.000000 0.801830
-TimeAvgMain::process_buffer 357 prev_frame=284 start_position=284 i=284
-HistogramConfig::interpolate 150 0.226934 1.000000 0.801961
-TimeAvgMain::process_buffer 357 prev_frame=285 start_position=285 i=285
-HistogramConfig::interpolate 150 0.227383 1.000000 0.802092
-TimeAvgMain::process_buffer 357 prev_frame=286 start_position=286 i=286
-HistogramConfig::interpolate 150 0.227833 1.000000 0.802223
-TimeAvgMain::process_buffer 357 prev_frame=287 start_position=287 i=287
-HistogramConfig::interpolate 150 0.228282 1.000000 0.802353
-TimeAvgMain::process_buffer 357 prev_frame=288 start_position=288 i=288
-HistogramConfig::interpolate 150 0.228732 1.000000 0.802484
-TimeAvgMain::process_buffer 357 prev_frame=289 start_position=289 i=289
-HistogramConfig::interpolate 150 0.229181 1.000000 0.802615
-TimeAvgMain::process_buffer 357 prev_frame=290 start_position=290 i=290
-HistogramConfig::interpolate 150 0.229631 1.000000 0.802746
-TimeAvgMain::process_buffer 357 prev_frame=291 start_position=291 i=291
-HistogramConfig::interpolate 150 0.230080 1.000000 0.802876
-TimeAvgMain::process_buffer 357 prev_frame=292 start_position=292 i=292
-HistogramConfig::interpolate 150 0.230530 1.000000 0.803007
-TimeAvgMain::process_buffer 357 prev_frame=293 start_position=293 i=293
-HistogramConfig::interpolate 150 0.230979 1.000000 0.803138
-TimeAvgMain::process_buffer 357 prev_frame=294 start_position=294 i=294
-HistogramConfig::interpolate 150 0.231428 1.000000 0.803269
-TimeAvgMain::process_buffer 357 prev_frame=295 start_position=295 i=295
-HistogramConfig::interpolate 150 0.231878 1.000000 0.803399
-TimeAvgMain::process_buffer 357 prev_frame=296 start_position=296 i=296
-HistogramConfig::interpolate 150 0.232327 1.000000 0.803530
-TimeAvgMain::process_buffer 357 prev_frame=297 start_position=297 i=297
-HistogramConfig::interpolate 150 0.232777 1.000000 0.803661
-TimeAvgMain::process_buffer 357 prev_frame=298 start_position=298 i=298
-HistogramConfig::interpolate 150 0.233226 1.000000 0.803792
-TimeAvgMain::process_buffer 357 prev_frame=299 start_position=299 i=299
-HistogramConfig::interpolate 150 0.233676 1.000000 0.803922
-TimeAvgMain::process_buffer 357 prev_frame=300 start_position=300 i=300
-HistogramConfig::interpolate 150 0.234125 1.000000 0.804053
-TimeAvgMain::process_buffer 357 prev_frame=301 start_position=301 i=301
-HistogramConfig::interpolate 150 0.234575 1.000000 0.804184
-TimeAvgMain::process_buffer 357 prev_frame=302 start_position=302 i=302
-HistogramConfig::interpolate 150 0.235024 1.000000 0.804315
-TimeAvgMain::process_buffer 357 prev_frame=303 start_position=303 i=303
-HistogramConfig::interpolate 150 0.235473 1.000000 0.804445
-TimeAvgMain::process_buffer 357 prev_frame=304 start_position=304 i=304
-HistogramConfig::interpolate 150 0.235923 1.000000 0.804576
-TimeAvgMain::process_buffer 357 prev_frame=305 start_position=305 i=305
-HistogramConfig::interpolate 150 0.236372 1.000000 0.804707
-TimeAvgMain::process_buffer 357 prev_frame=306 start_position=306 i=306
-HistogramConfig::interpolate 150 0.236822 1.000000 0.804838
-TimeAvgMain::process_buffer 357 prev_frame=307 start_position=307 i=307
-HistogramConfig::interpolate 150 0.237271 1.000000 0.804968
-TimeAvgMain::process_buffer 357 prev_frame=308 start_position=308 i=308
-HistogramConfig::interpolate 150 0.237721 1.000000 0.805099
-TimeAvgMain::process_buffer 357 prev_frame=309 start_position=309 i=309
-HistogramConfig::interpolate 150 0.238170 1.000000 0.805230
-TimeAvgMain::process_buffer 357 prev_frame=310 start_position=310 i=310
-HistogramConfig::interpolate 150 0.238620 1.000000 0.805361
-TimeAvgMain::process_buffer 357 prev_frame=311 start_position=311 i=311
-HistogramConfig::interpolate 150 0.239069 1.000000 0.805491
-TimeAvgMain::process_buffer 357 prev_frame=312 start_position=312 i=312
-HistogramConfig::interpolate 150 0.239518 1.000000 0.805622
-TimeAvgMain::process_buffer 357 prev_frame=313 start_position=313 i=313
-HistogramConfig::interpolate 150 0.239968 1.000000 0.805753
-TimeAvgMain::process_buffer 357 prev_frame=314 start_position=314 i=314
-HistogramConfig::interpolate 150 0.240417 1.000000 0.805884
-TimeAvgMain::process_buffer 357 prev_frame=315 start_position=315 i=315
-HistogramConfig::interpolate 150 0.240867 1.000000 0.806014
-TimeAvgMain::process_buffer 357 prev_frame=316 start_position=316 i=316
-HistogramConfig::interpolate 150 0.241316 1.000000 0.806145
-TimeAvgMain::process_buffer 357 prev_frame=317 start_position=317 i=317
-HistogramConfig::interpolate 150 0.241766 1.000000 0.806276
-TimeAvgMain::process_buffer 357 prev_frame=318 start_position=318 i=318
-HistogramConfig::interpolate 150 0.242215 1.000000 0.806407
-TimeAvgMain::process_buffer 357 prev_frame=319 start_position=319 i=319
-HistogramConfig::interpolate 150 0.242665 1.000000 0.806537
-TimeAvgMain::process_buffer 357 prev_frame=320 start_position=320 i=320
-HistogramConfig::interpolate 150 0.243114 1.000000 0.806668
-TimeAvgMain::process_buffer 357 prev_frame=321 start_position=321 i=321
-HistogramConfig::interpolate 150 0.243563 1.000000 0.806799
-TimeAvgMain::process_buffer 357 prev_frame=322 start_position=322 i=322
-HistogramConfig::interpolate 150 0.244013 1.000000 0.806930
-TimeAvgMain::process_buffer 357 prev_frame=323 start_position=323 i=323
-HistogramConfig::interpolate 150 0.244462 1.000000 0.807060
-TimeAvgMain::process_buffer 357 prev_frame=324 start_position=324 i=324
-HistogramConfig::interpolate 150 0.244912 1.000000 0.807191
-TimeAvgMain::process_buffer 357 prev_frame=325 start_position=325 i=325
-HistogramConfig::interpolate 150 0.245361 1.000000 0.807322
-TimeAvgMain::process_buffer 357 prev_frame=326 start_position=326 i=326
-HistogramConfig::interpolate 150 0.245811 1.000000 0.807453
-TimeAvgMain::process_buffer 357 prev_frame=327 start_position=327 i=327
-HistogramConfig::interpolate 150 0.246260 1.000000 0.807583
-TimeAvgMain::process_buffer 357 prev_frame=328 start_position=328 i=328
-HistogramConfig::interpolate 150 0.246710 1.000000 0.807714
-TimeAvgMain::process_buffer 357 prev_frame=329 start_position=329 i=329
-HistogramConfig::interpolate 150 0.247159 1.000000 0.807845
-TimeAvgMain::process_buffer 357 prev_frame=330 start_position=330 i=330
-HistogramConfig::interpolate 150 0.247608 1.000000 0.807976
-TimeAvgMain::process_buffer 357 prev_frame=331 start_position=331 i=331
-HistogramConfig::interpolate 150 0.248058 1.000000 0.808106
-TimeAvgMain::process_buffer 357 prev_frame=332 start_position=332 i=332
-HistogramConfig::interpolate 150 0.248507 1.000000 0.808237
-TimeAvgMain::process_buffer 357 prev_frame=333 start_position=333 i=333
-HistogramConfig::interpolate 150 0.248957 1.000000 0.808368
-TimeAvgMain::process_buffer 357 prev_frame=334 start_position=334 i=334
-HistogramConfig::interpolate 150 0.249406 1.000000 0.808499
-TimeAvgMain::process_buffer 357 prev_frame=335 start_position=335 i=335
-HistogramConfig::interpolate 150 0.249856 1.000000 0.808629
-TimeAvgMain::process_buffer 357 prev_frame=336 start_position=336 i=336
-HistogramConfig::interpolate 150 0.250305 1.000000 0.808760
-TimeAvgMain::process_buffer 357 prev_frame=337 start_position=337 i=337
-HistogramConfig::interpolate 150 0.250755 1.000000 0.808891
-TimeAvgMain::process_buffer 357 prev_frame=338 start_position=338 i=338
-HistogramConfig::interpolate 150 0.251204 1.000000 0.809022
-TimeAvgMain::process_buffer 357 prev_frame=339 start_position=339 i=339
-HistogramConfig::interpolate 150 0.251653 1.000000 0.809152
-TimeAvgMain::process_buffer 357 prev_frame=340 start_position=340 i=340
-HistogramConfig::interpolate 150 0.252103 1.000000 0.809283
-TimeAvgMain::process_buffer 357 prev_frame=341 start_position=341 i=341
-HistogramConfig::interpolate 150 0.252552 1.000000 0.809414
-TimeAvgMain::process_buffer 357 prev_frame=342 start_position=342 i=342
-HistogramConfig::interpolate 150 0.253002 1.000000 0.809545
-TimeAvgMain::process_buffer 357 prev_frame=343 start_position=343 i=343
-HistogramConfig::interpolate 150 0.253451 1.000000 0.809675
-TimeAvgMain::process_buffer 357 prev_frame=344 start_position=344 i=344
-HistogramConfig::interpolate 150 0.253901 1.000000 0.809806
-TimeAvgMain::process_buffer 357 prev_frame=345 start_position=345 i=345
-HistogramConfig::interpolate 150 0.254350 1.000000 0.809937
-TimeAvgMain::process_buffer 357 prev_frame=346 start_position=346 i=346
-HistogramConfig::interpolate 150 0.254800 1.000000 0.810068
-TimeAvgMain::process_buffer 357 prev_frame=347 start_position=347 i=347
-HistogramConfig::interpolate 150 0.255249 1.000000 0.810198
-TimeAvgMain::process_buffer 357 prev_frame=348 start_position=348 i=348
-HistogramConfig::interpolate 150 0.255698 1.000000 0.810329
-TimeAvgMain::process_buffer 357 prev_frame=349 start_position=349 i=349
-HistogramConfig::interpolate 150 0.256148 1.000000 0.810460
-TimeAvgMain::process_buffer 357 prev_frame=350 start_position=350 i=350
-HistogramConfig::interpolate 150 0.256597 1.000000 0.810591
-TimeAvgMain::process_buffer 357 prev_frame=351 start_position=351 i=351
-HistogramConfig::interpolate 150 0.257047 1.000000 0.810721
-TimeAvgMain::process_buffer 357 prev_frame=352 start_position=352 i=352
-HistogramConfig::interpolate 150 0.257496 1.000000 0.810852
-TimeAvgMain::process_buffer 357 prev_frame=353 start_position=353 i=353
-HistogramConfig::interpolate 150 0.257946 1.000000 0.810983
-TimeAvgMain::process_buffer 357 prev_frame=354 start_position=354 i=354
-HistogramConfig::interpolate 150 0.258395 1.000000 0.811114
-TimeAvgMain::process_buffer 357 prev_frame=355 start_position=355 i=355
-HistogramConfig::interpolate 150 0.258845 1.000000 0.811244
-TimeAvgMain::process_buffer 357 prev_frame=356 start_position=356 i=356
-HistogramConfig::interpolate 150 0.259294 1.000000 0.811375
-TimeAvgMain::process_buffer 357 prev_frame=357 start_position=357 i=357
-HistogramConfig::interpolate 150 0.259743 1.000000 0.811506
-TimeAvgMain::process_buffer 357 prev_frame=358 start_position=358 i=358
-HistogramConfig::interpolate 150 0.260193 1.000000 0.811637
-TimeAvgMain::process_buffer 357 prev_frame=359 start_position=359 i=359
-HistogramConfig::interpolate 150 0.260642 1.000000 0.811767
-TimeAvgMain::process_buffer 357 prev_frame=360 start_position=360 i=360
-HistogramConfig::interpolate 150 0.261092 1.000000 0.811898
-TimeAvgMain::process_buffer 357 prev_frame=361 start_position=361 i=361
-HistogramConfig::interpolate 150 0.261541 1.000000 0.812029
-TimeAvgMain::process_buffer 357 prev_frame=362 start_position=362 i=362
-HistogramConfig::interpolate 150 0.261991 1.000000 0.812160
-TimeAvgMain::process_buffer 357 prev_frame=363 start_position=363 i=363
-HistogramConfig::interpolate 150 0.262440 1.000000 0.812290
-TimeAvgMain::process_buffer 357 prev_frame=364 start_position=364 i=364
-HistogramConfig::interpolate 150 0.262890 1.000000 0.812421
-TimeAvgMain::process_buffer 357 prev_frame=365 start_position=365 i=365
-HistogramConfig::interpolate 150 0.263339 1.000000 0.812552
-TimeAvgMain::process_buffer 357 prev_frame=366 start_position=366 i=366
-HistogramConfig::interpolate 150 0.263788 1.000000 0.812683
-TimeAvgMain::process_buffer 357 prev_frame=367 start_position=367 i=367
-HistogramConfig::interpolate 150 0.264238 1.000000 0.812813
-TimeAvgMain::process_buffer 357 prev_frame=368 start_position=368 i=368
-HistogramConfig::interpolate 150 0.264687 1.000000 0.812944
-TimeAvgMain::process_buffer 357 prev_frame=369 start_position=369 i=369
-HistogramConfig::interpolate 150 0.265137 1.000000 0.813075
-TimeAvgMain::process_buffer 357 prev_frame=370 start_position=370 i=370
-HistogramConfig::interpolate 150 0.265586 1.000000 0.813206
-TimeAvgMain::process_buffer 357 prev_frame=371 start_position=371 i=371
-HistogramConfig::interpolate 150 0.266036 1.000000 0.813336
-TimeAvgMain::process_buffer 357 prev_frame=372 start_position=372 i=372
-HistogramConfig::interpolate 150 0.266485 1.000000 0.813467
-TimeAvgMain::process_buffer 357 prev_frame=373 start_position=373 i=373
-HistogramConfig::interpolate 150 0.266935 1.000000 0.813598
-TimeAvgMain::process_buffer 357 prev_frame=374 start_position=374 i=374
-HistogramConfig::interpolate 150 0.267384 1.000000 0.813729
-TimeAvgMain::process_buffer 357 prev_frame=375 start_position=375 i=375
-HistogramConfig::interpolate 150 0.267833 1.000000 0.813859
-TimeAvgMain::process_buffer 357 prev_frame=376 start_position=376 i=376
-HistogramConfig::interpolate 150 0.268283 1.000000 0.813990
-TimeAvgMain::process_buffer 357 prev_frame=377 start_position=377 i=377
-HistogramConfig::interpolate 150 0.268732 1.000000 0.814121
-TimeAvgMain::process_buffer 357 prev_frame=378 start_position=378 i=378
-HistogramConfig::interpolate 150 0.269182 1.000000 0.814251
-TimeAvgMain::process_buffer 357 prev_frame=379 start_position=379 i=379
-HistogramConfig::interpolate 150 0.269631 1.000000 0.814382
-TimeAvgMain::process_buffer 357 prev_frame=380 start_position=380 i=380
-HistogramConfig::interpolate 150 0.270081 1.000000 0.814513
-TimeAvgMain::process_buffer 357 prev_frame=381 start_position=381 i=381
-HistogramConfig::interpolate 150 0.270530 1.000000 0.814644
-TimeAvgMain::process_buffer 357 prev_frame=382 start_position=382 i=382
-HistogramConfig::interpolate 150 0.270980 1.000000 0.814775
-TimeAvgMain::process_buffer 357 prev_frame=383 start_position=383 i=383
-HistogramConfig::interpolate 150 0.271429 1.000000 0.814905
-TimeAvgMain::process_buffer 357 prev_frame=384 start_position=384 i=384
-HistogramConfig::interpolate 150 0.271878 1.000000 0.815036
-TimeAvgMain::process_buffer 357 prev_frame=385 start_position=385 i=385
-HistogramConfig::interpolate 150 0.272328 1.000000 0.815167
-TimeAvgMain::process_buffer 357 prev_frame=386 start_position=386 i=386
-HistogramConfig::interpolate 150 0.272777 1.000000 0.815297
-TimeAvgMain::process_buffer 357 prev_frame=387 start_position=387 i=387
-HistogramConfig::interpolate 150 0.273227 1.000000 0.815428
-TimeAvgMain::process_buffer 357 prev_frame=388 start_position=388 i=388
-HistogramConfig::interpolate 150 0.273676 1.000000 0.815559
-TimeAvgMain::process_buffer 357 prev_frame=389 start_position=389 i=389
-HistogramConfig::interpolate 150 0.274126 1.000000 0.815690
-TimeAvgMain::process_buffer 357 prev_frame=390 start_position=390 i=390
-HistogramConfig::interpolate 150 0.274575 1.000000 0.815820
-TimeAvgMain::process_buffer 357 prev_frame=391 start_position=391 i=391
-HistogramConfig::interpolate 150 0.275025 1.000000 0.815951
-TimeAvgMain::process_buffer 357 prev_frame=392 start_position=392 i=392
-HistogramConfig::interpolate 150 0.275474 1.000000 0.816082
-TimeAvgMain::process_buffer 357 prev_frame=393 start_position=393 i=393
-HistogramConfig::interpolate 150 0.275923 1.000000 0.816213
-TimeAvgMain::process_buffer 357 prev_frame=394 start_position=394 i=394
-HistogramConfig::interpolate 150 0.276373 1.000000 0.816343
-TimeAvgMain::process_buffer 357 prev_frame=395 start_position=395 i=395
-HistogramConfig::interpolate 150 0.276822 1.000000 0.816474
-TimeAvgMain::process_buffer 357 prev_frame=396 start_position=396 i=396
-HistogramConfig::interpolate 150 0.277272 1.000000 0.816605
-TimeAvgMain::process_buffer 357 prev_frame=397 start_position=397 i=397
-HistogramConfig::interpolate 150 0.277721 1.000000 0.816736
-TimeAvgMain::process_buffer 357 prev_frame=398 start_position=398 i=398
-HistogramConfig::interpolate 150 0.278171 1.000000 0.816866
-TimeAvgMain::process_buffer 357 prev_frame=399 start_position=399 i=399
-HistogramConfig::interpolate 150 0.278620 1.000000 0.816997
-TimeAvgMain::process_buffer 357 prev_frame=400 start_position=400 i=400
-HistogramConfig::interpolate 150 0.279070 1.000000 0.817128
-TimeAvgMain::process_buffer 357 prev_frame=401 start_position=401 i=401
-HistogramConfig::interpolate 150 0.279519 1.000000 0.817259
-TimeAvgMain::process_buffer 357 prev_frame=402 start_position=402 i=402
-HistogramConfig::interpolate 150 0.279968 1.000000 0.817389
-TimeAvgMain::process_buffer 357 prev_frame=403 start_position=403 i=403
-HistogramConfig::interpolate 150 0.280418 1.000000 0.817520
-TimeAvgMain::process_buffer 357 prev_frame=404 start_position=404 i=404
-HistogramConfig::interpolate 150 0.280867 1.000000 0.817651
-TimeAvgMain::process_buffer 357 prev_frame=405 start_position=405 i=405
-HistogramConfig::interpolate 150 0.281317 1.000000 0.817782
-TimeAvgMain::process_buffer 357 prev_frame=406 start_position=406 i=406
-HistogramConfig::interpolate 150 0.281766 1.000000 0.817912
-TimeAvgMain::process_buffer 357 prev_frame=407 start_position=407 i=407
-HistogramConfig::interpolate 150 0.282216 1.000000 0.818043
-TimeAvgMain::process_buffer 357 prev_frame=408 start_position=408 i=408
-HistogramConfig::interpolate 150 0.282665 1.000000 0.818174
-TimeAvgMain::process_buffer 357 prev_frame=409 start_position=409 i=409
-HistogramConfig::interpolate 150 0.283115 1.000000 0.818305
-TimeAvgMain::process_buffer 357 prev_frame=410 start_position=410 i=410
-HistogramConfig::interpolate 150 0.283564 1.000000 0.818435
-TimeAvgMain::process_buffer 357 prev_frame=411 start_position=411 i=411
-HistogramConfig::interpolate 150 0.284013 1.000000 0.818566
-TimeAvgMain::process_buffer 357 prev_frame=412 start_position=412 i=412
-HistogramConfig::interpolate 150 0.284463 1.000000 0.818697
-TimeAvgMain::process_buffer 357 prev_frame=413 start_position=413 i=413
-HistogramConfig::interpolate 150 0.284912 1.000000 0.818828
-TimeAvgMain::process_buffer 357 prev_frame=414 start_position=414 i=414
-HistogramConfig::interpolate 150 0.285362 1.000000 0.818958
-TimeAvgMain::process_buffer 357 prev_frame=415 start_position=415 i=415
-HistogramConfig::interpolate 150 0.285811 1.000000 0.819089
-TimeAvgMain::process_buffer 357 prev_frame=416 start_position=416 i=416
-HistogramConfig::interpolate 150 0.286261 1.000000 0.819220
-TimeAvgMain::process_buffer 357 prev_frame=417 start_position=417 i=417
-HistogramConfig::interpolate 150 0.286710 1.000000 0.819351
-TimeAvgMain::process_buffer 357 prev_frame=418 start_position=418 i=418
-HistogramConfig::interpolate 150 0.287160 1.000000 0.819481
-TimeAvgMain::process_buffer 357 prev_frame=419 start_position=419 i=419
-HistogramConfig::interpolate 150 0.287609 1.000000 0.819612
-TimeAvgMain::process_buffer 357 prev_frame=420 start_position=420 i=420
-HistogramConfig::interpolate 150 0.288058 1.000000 0.819743
-TimeAvgMain::process_buffer 357 prev_frame=421 start_position=421 i=421
-HistogramConfig::interpolate 150 0.288508 1.000000 0.819874
-TimeAvgMain::process_buffer 357 prev_frame=422 start_position=422 i=422
-HistogramConfig::interpolate 150 0.288957 1.000000 0.820004
-TimeAvgMain::process_buffer 357 prev_frame=423 start_position=423 i=423
-HistogramConfig::interpolate 150 0.289407 1.000000 0.820135
-TimeAvgMain::process_buffer 357 prev_frame=424 start_position=424 i=424
-HistogramConfig::interpolate 150 0.289856 1.000000 0.820266
-TimeAvgMain::process_buffer 357 prev_frame=425 start_position=425 i=425
-HistogramConfig::interpolate 150 0.290306 1.000000 0.820397
-TimeAvgMain::process_buffer 357 prev_frame=426 start_position=426 i=426
-HistogramConfig::interpolate 150 0.290755 1.000000 0.820527
-TimeAvgMain::process_buffer 357 prev_frame=427 start_position=427 i=427
-HistogramConfig::interpolate 150 0.291205 1.000000 0.820658
-TimeAvgMain::process_buffer 357 prev_frame=428 start_position=428 i=428
-HistogramConfig::interpolate 150 0.291654 1.000000 0.820789
-TimeAvgMain::process_buffer 357 prev_frame=429 start_position=429 i=429
-HistogramConfig::interpolate 150 0.292103 1.000000 0.820920
-TimeAvgMain::process_buffer 357 prev_frame=430 start_position=430 i=430
-HistogramConfig::interpolate 150 0.292553 1.000000 0.821050
-TimeAvgMain::process_buffer 357 prev_frame=431 start_position=431 i=431
-HistogramConfig::interpolate 150 0.293002 1.000000 0.821181
-TimeAvgMain::process_buffer 357 prev_frame=432 start_position=432 i=432
-HistogramConfig::interpolate 150 0.293452 1.000000 0.821312
-TimeAvgMain::process_buffer 357 prev_frame=433 start_position=433 i=433
-HistogramConfig::interpolate 150 0.293901 1.000000 0.821443
-TimeAvgMain::process_buffer 357 prev_frame=434 start_position=434 i=434
-HistogramConfig::interpolate 150 0.294351 1.000000 0.821573
-TimeAvgMain::process_buffer 357 prev_frame=435 start_position=435 i=435
-HistogramConfig::interpolate 150 0.294800 1.000000 0.821704
-TimeAvgMain::process_buffer 357 prev_frame=436 start_position=436 i=436
-HistogramConfig::interpolate 150 0.295250 1.000000 0.821835
-TimeAvgMain::process_buffer 357 prev_frame=437 start_position=437 i=437
-HistogramConfig::interpolate 150 0.295699 1.000000 0.821966
-TimeAvgMain::process_buffer 357 prev_frame=438 start_position=438 i=438
-HistogramConfig::interpolate 150 0.296148 1.000000 0.822096
-TimeAvgMain::process_buffer 357 prev_frame=439 start_position=439 i=439
-HistogramConfig::interpolate 150 0.296598 1.000000 0.822227
-TimeAvgMain::process_buffer 357 prev_frame=440 start_position=440 i=440
-HistogramConfig::interpolate 150 0.297047 1.000000 0.822358
-TimeAvgMain::process_buffer 357 prev_frame=441 start_position=441 i=441
-HistogramConfig::interpolate 150 0.297497 1.000000 0.822489
-TimeAvgMain::process_buffer 357 prev_frame=442 start_position=442 i=442
-HistogramConfig::interpolate 150 0.297946 1.000000 0.822619
-TimeAvgMain::process_buffer 357 prev_frame=443 start_position=443 i=443
-HistogramConfig::interpolate 150 0.298396 1.000000 0.822750
-TimeAvgMain::process_buffer 357 prev_frame=444 start_position=444 i=444
-HistogramConfig::interpolate 150 0.298845 1.000000 0.822881
-TimeAvgMain::process_buffer 357 prev_frame=445 start_position=445 i=445
-HistogramConfig::interpolate 150 0.299295 1.000000 0.823012
-TimeAvgMain::process_buffer 357 prev_frame=446 start_position=446 i=446
-HistogramConfig::interpolate 150 0.299744 1.000000 0.823142
-TimeAvgMain::process_buffer 357 prev_frame=447 start_position=447 i=447
-HistogramConfig::interpolate 150 0.300193 1.000000 0.823273
-TimeAvgMain::process_buffer 357 prev_frame=448 start_position=448 i=448
-HistogramConfig::interpolate 150 0.300643 1.000000 0.823404
-TimeAvgMain::process_buffer 357 prev_frame=449 start_position=449 i=449
-HistogramConfig::interpolate 150 0.301092 1.000000 0.823535
-TimeAvgMain::process_buffer 357 prev_frame=450 start_position=450 i=450
-HistogramConfig::interpolate 150 0.301542 1.000000 0.823665
-TimeAvgMain::process_buffer 357 prev_frame=451 start_position=451 i=451
-HistogramConfig::interpolate 150 0.301991 1.000000 0.823796
-TimeAvgMain::process_buffer 357 prev_frame=452 start_position=452 i=452
-HistogramConfig::interpolate 150 0.302441 1.000000 0.823927
-TimeAvgMain::process_buffer 357 prev_frame=453 start_position=453 i=453
-HistogramConfig::interpolate 150 0.302890 1.000000 0.824058
-TimeAvgMain::process_buffer 357 prev_frame=454 start_position=454 i=454
-HistogramConfig::interpolate 150 0.303340 1.000000 0.824188
-TimeAvgMain::process_buffer 357 prev_frame=455 start_position=455 i=455
-HistogramConfig::interpolate 150 0.303789 1.000000 0.824319
-TimeAvgMain::process_buffer 357 prev_frame=456 start_position=456 i=456
-HistogramConfig::interpolate 150 0.304238 1.000000 0.824450
-TimeAvgMain::process_buffer 357 prev_frame=457 start_position=457 i=457
-HistogramConfig::interpolate 150 0.304688 1.000000 0.824581
-TimeAvgMain::process_buffer 357 prev_frame=458 start_position=458 i=458
-HistogramConfig::interpolate 150 0.305137 1.000000 0.824711
-TimeAvgMain::process_buffer 357 prev_frame=459 start_position=459 i=459
-HistogramConfig::interpolate 150 0.305587 1.000000 0.824842
-TimeAvgMain::process_buffer 357 prev_frame=460 start_position=460 i=460
-HistogramConfig::interpolate 150 0.306036 1.000000 0.824973
-TimeAvgMain::process_buffer 357 prev_frame=461 start_position=461 i=461
-HistogramConfig::interpolate 150 0.306486 1.000000 0.825104
-TimeAvgMain::process_buffer 357 prev_frame=462 start_position=462 i=462
-HistogramConfig::interpolate 150 0.306935 1.000000 0.825234
-HistogramConfig::interpolate 150 0.324014 1.000000 0.830203
-TimeAvgMain::process_buffer 357 prev_frame=463 start_position=463 i=463
-HistogramConfig::interpolate 150 0.307385 1.000000 0.825365
-TimeAvgMain::process_buffer 357 prev_frame=464 start_position=464 i=464
-HistogramConfig::interpolate 150 0.307834 1.000000 0.825496
-TimeAvgMain::process_buffer 357 prev_frame=465 start_position=465 i=465
-TimeAvgMain::process_buffer 357 prev_frame=501 start_position=501 i=501
-HistogramConfig::interpolate 150 0.308283 1.000000 0.825627
-TimeAvgMain::process_buffer 357 prev_frame=466 start_position=466 i=466
-HistogramConfig::interpolate 150 0.308733 1.000000 0.825757
-TimeAvgMain::process_buffer 357 prev_frame=467 start_position=467 i=467
-HistogramConfig::interpolate 150 0.309182 1.000000 0.825888
-TimeAvgMain::process_buffer 357 prev_frame=468 start_position=468 i=468
-HistogramConfig::interpolate 150 0.309632 1.000000 0.826019
-TimeAvgMain::process_buffer 357 prev_frame=469 start_position=469 i=469
-HistogramConfig::interpolate 150 0.310081 1.000000 0.826150
-TimeAvgMain::process_buffer 357 prev_frame=470 start_position=470 i=470
-HistogramConfig::interpolate 150 0.310531 1.000000 0.826280
-TimeAvgMain::process_buffer 357 prev_frame=471 start_position=471 i=471
-HistogramConfig::interpolate 150 0.310980 1.000000 0.826411
-TimeAvgMain::process_buffer 357 prev_frame=472 start_position=472 i=472
-HistogramConfig::interpolate 150 0.311430 1.000000 0.826542
-TimeAvgMain::process_buffer 357 prev_frame=473 start_position=473 i=473
-HistogramConfig::interpolate 150 0.311879 1.000000 0.826672
-TimeAvgMain::process_buffer 357 prev_frame=474 start_position=474 i=474
-HistogramConfig::interpolate 150 0.312328 1.000000 0.826803
-TimeAvgMain::process_buffer 357 prev_frame=475 start_position=475 i=475
-HistogramConfig::interpolate 150 0.312778 1.000000 0.826934
-TimeAvgMain::process_buffer 357 prev_frame=476 start_position=476 i=476
-HistogramConfig::interpolate 150 0.313227 1.000000 0.827065
-TimeAvgMain::process_buffer 357 prev_frame=477 start_position=477 i=477
-HistogramConfig::interpolate 150 0.313677 1.000000 0.827196
-TimeAvgMain::process_buffer 357 prev_frame=478 start_position=478 i=478
-HistogramConfig::interpolate 150 0.314126 1.000000 0.827326
-TimeAvgMain::process_buffer 357 prev_frame=479 start_position=479 i=479
-HistogramConfig::interpolate 150 0.314576 1.000000 0.827457
-TimeAvgMain::process_buffer 357 prev_frame=480 start_position=480 i=480
-HistogramConfig::interpolate 150 0.315025 1.000000 0.827588
-TimeAvgMain::process_buffer 357 prev_frame=481 start_position=481 i=481
-HistogramConfig::interpolate 150 0.315475 1.000000 0.827718
-TimeAvgMain::process_buffer 357 prev_frame=482 start_position=482 i=482
-HistogramConfig::interpolate 150 0.315924 1.000000 0.827849
-TimeAvgMain::process_buffer 357 prev_frame=483 start_position=483 i=483
-HistogramConfig::interpolate 150 0.316373 1.000000 0.827980
-TimeAvgMain::process_buffer 357 prev_frame=484 start_position=484 i=484
-HistogramConfig::interpolate 150 0.316823 1.000000 0.828111
-TimeAvgMain::process_buffer 357 prev_frame=485 start_position=485 i=485
-HistogramConfig::interpolate 150 0.317272 1.000000 0.828241
-TimeAvgMain::process_buffer 357 prev_frame=486 start_position=486 i=486
-HistogramConfig::interpolate 150 0.317722 1.000000 0.828372
-TimeAvgMain::process_buffer 357 prev_frame=487 start_position=487 i=487
-HistogramConfig::interpolate 150 0.318171 1.000000 0.828503
-TimeAvgMain::process_buffer 357 prev_frame=488 start_position=488 i=488
-HistogramConfig::interpolate 150 0.318621 1.000000 0.828634
-TimeAvgMain::process_buffer 357 prev_frame=489 start_position=489 i=489
-HistogramConfig::interpolate 150 0.319070 1.000000 0.828764
-TimeAvgMain::process_buffer 357 prev_frame=490 start_position=490 i=490
-HistogramConfig::interpolate 150 0.319520 1.000000 0.828895
-TimeAvgMain::process_buffer 357 prev_frame=491 start_position=491 i=491
-HistogramConfig::interpolate 150 0.319969 1.000000 0.829026
-TimeAvgMain::process_buffer 357 prev_frame=492 start_position=492 i=492
-HistogramConfig::interpolate 150 0.320418 1.000000 0.829157
-TimeAvgMain::process_buffer 357 prev_frame=493 start_position=493 i=493
-HistogramConfig::interpolate 150 0.320868 1.000000 0.829287
-TimeAvgMain::process_buffer 357 prev_frame=494 start_position=494 i=494
-HistogramConfig::interpolate 150 0.321317 1.000000 0.829418
-TimeAvgMain::process_buffer 357 prev_frame=495 start_position=495 i=495
-HistogramConfig::interpolate 150 0.321767 1.000000 0.829549
-TimeAvgMain::process_buffer 357 prev_frame=496 start_position=496 i=496
-HistogramConfig::interpolate 150 0.322216 1.000000 0.829680
-TimeAvgMain::process_buffer 357 prev_frame=497 start_position=497 i=497
-HistogramConfig::interpolate 150 0.322666 1.000000 0.829810
-TimeAvgMain::process_buffer 357 prev_frame=498 start_position=498 i=498
-HistogramConfig::interpolate 150 0.323115 1.000000 0.829941
-TimeAvgMain::process_buffer 357 prev_frame=499 start_position=499 i=499
-HistogramConfig::interpolate 150 0.323565 1.000000 0.830072
-TimeAvgMain::process_buffer 357 prev_frame=500 start_position=500 i=500
-HistogramConfig::interpolate 150 0.324014 1.000000 0.830203
-TimeAvgMain::process_buffer 357 prev_frame=501 start_position=501 i=501
-HistogramConfig::interpolate 150 0.324463 1.000000 0.830333
-TimeAvgMain::process_buffer 357 prev_frame=502 start_position=502 i=502
-HistogramConfig::interpolate 150 0.324913 1.000000 0.830464
-TimeAvgMain::process_buffer 357 prev_frame=503 start_position=503 i=503
-HistogramConfig::interpolate 150 0.325362 1.000000 0.830595
-TimeAvgMain::process_buffer 357 prev_frame=504 start_position=504 i=504
-HistogramConfig::interpolate 150 0.325812 1.000000 0.830726
-TimeAvgMain::process_buffer 357 prev_frame=505 start_position=505 i=505
-HistogramConfig::interpolate 150 0.326261 1.000000 0.830856
-TimeAvgMain::process_buffer 357 prev_frame=506 start_position=506 i=506
-HistogramConfig::interpolate 150 0.326711 1.000000 0.830987
-TimeAvgMain::process_buffer 357 prev_frame=507 start_position=507 i=507
-HistogramConfig::interpolate 150 0.327160 1.000000 0.831118
-TimeAvgMain::process_buffer 357 prev_frame=508 start_position=508 i=508
-HistogramConfig::interpolate 150 0.327610 1.000000 0.831249
-TimeAvgMain::process_buffer 357 prev_frame=509 start_position=509 i=509
-HistogramConfig::interpolate 150 0.328059 1.000000 0.831379
-TimeAvgMain::process_buffer 357 prev_frame=510 start_position=510 i=510
-HistogramConfig::interpolate 150 0.328508 1.000000 0.831510
-TimeAvgMain::process_buffer 357 prev_frame=511 start_position=511 i=511
-HistogramConfig::interpolate 150 0.328958 1.000000 0.831641
-TimeAvgMain::process_buffer 357 prev_frame=512 start_position=512 i=512
-HistogramConfig::interpolate 150 0.329407 1.000000 0.831772
-TimeAvgMain::process_buffer 357 prev_frame=513 start_position=513 i=513
-HistogramConfig::interpolate 150 0.329857 1.000000 0.831902
-TimeAvgMain::process_buffer 357 prev_frame=514 start_position=514 i=514
-HistogramConfig::interpolate 150 0.330306 1.000000 0.832033
-TimeAvgMain::process_buffer 357 prev_frame=515 start_position=515 i=515
-HistogramConfig::interpolate 150 0.330756 1.000000 0.832164
-TimeAvgMain::process_buffer 357 prev_frame=516 start_position=516 i=516
-HistogramConfig::interpolate 150 0.331205 1.000000 0.832295
-TimeAvgMain::process_buffer 357 prev_frame=517 start_position=517 i=517
-HistogramConfig::interpolate 150 0.331655 1.000000 0.832425
-TimeAvgMain::process_buffer 357 prev_frame=518 start_position=518 i=518
-HistogramConfig::interpolate 150 0.332104 1.000000 0.832556
-TimeAvgMain::process_buffer 357 prev_frame=519 start_position=519 i=519
-HistogramConfig::interpolate 150 0.332553 1.000000 0.832687
-TimeAvgMain::process_buffer 357 prev_frame=520 start_position=520 i=520
-HistogramConfig::interpolate 150 0.333003 1.000000 0.832818
-TimeAvgMain::process_buffer 357 prev_frame=521 start_position=521 i=521
-HistogramConfig::interpolate 150 0.333452 1.000000 0.832948
-TimeAvgMain::process_buffer 357 prev_frame=522 start_position=522 i=522
-HistogramConfig::interpolate 150 0.333902 1.000000 0.833079
-TimeAvgMain::process_buffer 357 prev_frame=523 start_position=523 i=523
-HistogramConfig::interpolate 150 0.334351 1.000000 0.833210
-TimeAvgMain::process_buffer 357 prev_frame=524 start_position=524 i=524
-HistogramConfig::interpolate 150 0.334801 1.000000 0.833341
-TimeAvgMain::process_buffer 357 prev_frame=525 start_position=525 i=525
-HistogramConfig::interpolate 150 0.335250 1.000000 0.833471
-TimeAvgMain::process_buffer 357 prev_frame=526 start_position=526 i=526
-HistogramConfig::interpolate 150 0.335700 1.000000 0.833602
-TimeAvgMain::process_buffer 357 prev_frame=527 start_position=527 i=527
-HistogramConfig::interpolate 150 0.336149 1.000000 0.833733
-TimeAvgMain::process_buffer 357 prev_frame=528 start_position=528 i=528
-HistogramConfig::interpolate 150 0.336598 1.000000 0.833864
-TimeAvgMain::process_buffer 357 prev_frame=529 start_position=529 i=529
-HistogramConfig::interpolate 150 0.337048 1.000000 0.833994
-TimeAvgMain::process_buffer 357 prev_frame=530 start_position=530 i=530
-HistogramConfig::interpolate 150 0.337497 1.000000 0.834125
-TimeAvgMain::process_buffer 357 prev_frame=531 start_position=531 i=531
-HistogramConfig::interpolate 150 0.337947 1.000000 0.834256
-TimeAvgMain::process_buffer 357 prev_frame=532 start_position=532 i=532
-HistogramConfig::interpolate 150 0.338396 1.000000 0.834387
-TimeAvgMain::process_buffer 357 prev_frame=533 start_position=533 i=533
-HistogramConfig::interpolate 150 0.338846 1.000000 0.834517
-TimeAvgMain::process_buffer 357 prev_frame=534 start_position=534 i=534
-HistogramConfig::interpolate 150 0.339295 1.000000 0.834648
-TimeAvgMain::process_buffer 357 prev_frame=535 start_position=535 i=535
-HistogramConfig::interpolate 150 0.339745 1.000000 0.834779
-TimeAvgMain::process_buffer 357 prev_frame=536 start_position=536 i=536
-HistogramConfig::interpolate 150 0.340194 1.000000 0.834910
-TimeAvgMain::process_buffer 357 prev_frame=537 start_position=537 i=537
-HistogramConfig::interpolate 150 0.340643 1.000000 0.835040
-TimeAvgMain::process_buffer 357 prev_frame=538 start_position=538 i=538
-HistogramConfig::interpolate 150 0.341093 1.000000 0.835171
-TimeAvgMain::process_buffer 357 prev_frame=539 start_position=539 i=539
-HistogramConfig::interpolate 150 0.341542 1.000000 0.835302
-TimeAvgMain::process_buffer 357 prev_frame=540 start_position=540 i=540
-HistogramConfig::interpolate 150 0.341992 1.000000 0.835433
-TimeAvgMain::process_buffer 357 prev_frame=541 start_position=541 i=541
-HistogramConfig::interpolate 150 0.342441 1.000000 0.835563
-TimeAvgMain::process_buffer 357 prev_frame=542 start_position=542 i=542
-HistogramConfig::interpolate 150 0.342891 1.000000 0.835694
-TimeAvgMain::process_buffer 357 prev_frame=543 start_position=543 i=543
-HistogramConfig::interpolate 150 0.343340 1.000000 0.835825
-TimeAvgMain::process_buffer 357 prev_frame=544 start_position=544 i=544
-HistogramConfig::interpolate 150 0.343790 1.000000 0.835956
-TimeAvgMain::process_buffer 357 prev_frame=545 start_position=545 i=545
-HistogramConfig::interpolate 150 0.344239 1.000000 0.836086
-TimeAvgMain::process_buffer 357 prev_frame=546 start_position=546 i=546
-HistogramConfig::interpolate 150 0.344688 1.000000 0.836217
-TimeAvgMain::process_buffer 357 prev_frame=547 start_position=547 i=547
-HistogramConfig::interpolate 150 0.345138 1.000000 0.836348
-TimeAvgMain::process_buffer 357 prev_frame=548 start_position=548 i=548
-HistogramConfig::interpolate 150 0.345587 1.000000 0.836479
-TimeAvgMain::process_buffer 357 prev_frame=549 start_position=549 i=549
-HistogramConfig::interpolate 150 0.346037 1.000000 0.836609
-TimeAvgMain::process_buffer 357 prev_frame=550 start_position=550 i=550
-HistogramConfig::interpolate 150 0.346486 1.000000 0.836740
-TimeAvgMain::process_buffer 357 prev_frame=551 start_position=551 i=551
-HistogramConfig::interpolate 150 0.346936 1.000000 0.836871
-TimeAvgMain::process_buffer 357 prev_frame=552 start_position=552 i=552
-HistogramConfig::interpolate 150 0.347385 1.000000 0.837002
-TimeAvgMain::process_buffer 357 prev_frame=553 start_position=553 i=553
-HistogramConfig::interpolate 150 0.347835 1.000000 0.837132
-TimeAvgMain::process_buffer 357 prev_frame=554 start_position=554 i=554
-HistogramConfig::interpolate 150 0.348284 1.000000 0.837263
-TimeAvgMain::process_buffer 357 prev_frame=555 start_position=555 i=555
-HistogramConfig::interpolate 150 0.348733 1.000000 0.837394
-TimeAvgMain::process_buffer 357 prev_frame=556 start_position=556 i=556
-HistogramConfig::interpolate 150 0.349183 1.000000 0.837525
-TimeAvgMain::process_buffer 357 prev_frame=557 start_position=557 i=557
-HistogramConfig::interpolate 150 0.349632 1.000000 0.837655
-TimeAvgMain::process_buffer 357 prev_frame=558 start_position=558 i=558
-HistogramConfig::interpolate 150 0.350082 1.000000 0.837786
-TimeAvgMain::process_buffer 357 prev_frame=559 start_position=559 i=559
-HistogramConfig::interpolate 150 0.350531 1.000000 0.837917
-TimeAvgMain::process_buffer 357 prev_frame=560 start_position=560 i=560
-HistogramConfig::interpolate 150 0.350981 1.000000 0.838048
-TimeAvgMain::process_buffer 357 prev_frame=561 start_position=561 i=561
-HistogramConfig::interpolate 150 0.351430 1.000000 0.838178
-TimeAvgMain::process_buffer 357 prev_frame=562 start_position=562 i=562
-HistogramConfig::interpolate 150 0.351880 1.000000 0.838309
-TimeAvgMain::process_buffer 357 prev_frame=563 start_position=563 i=563
-HistogramConfig::interpolate 150 0.352329 1.000000 0.838440
-TimeAvgMain::process_buffer 357 prev_frame=564 start_position=564 i=564
-HistogramConfig::interpolate 150 0.352778 1.000000 0.838571
-TimeAvgMain::process_buffer 357 prev_frame=565 start_position=565 i=565
-HistogramConfig::interpolate 150 0.353228 1.000000 0.838701
-TimeAvgMain::process_buffer 357 prev_frame=566 start_position=566 i=566
-HistogramConfig::interpolate 150 0.353677 1.000000 0.838832
-TimeAvgMain::process_buffer 357 prev_frame=567 start_position=567 i=567
-HistogramConfig::interpolate 150 0.354127 1.000000 0.838963
-TimeAvgMain::process_buffer 357 prev_frame=568 start_position=568 i=568
-HistogramConfig::interpolate 150 0.354576 1.000000 0.839094
-TimeAvgMain::process_buffer 357 prev_frame=569 start_position=569 i=569
-HistogramConfig::interpolate 150 0.355026 1.000000 0.839224
-TimeAvgMain::process_buffer 357 prev_frame=570 start_position=570 i=570
-HistogramConfig::interpolate 150 0.355475 1.000000 0.839355
-TimeAvgMain::process_buffer 357 prev_frame=571 start_position=571 i=571
-HistogramConfig::interpolate 150 0.355925 1.000000 0.839486
-TimeAvgMain::process_buffer 357 prev_frame=572 start_position=572 i=572
-HistogramConfig::interpolate 150 0.356374 1.000000 0.839617
-TimeAvgMain::process_buffer 357 prev_frame=573 start_position=573 i=573
-HistogramConfig::interpolate 150 0.356823 1.000000 0.839747
-TimeAvgMain::process_buffer 357 prev_frame=574 start_position=574 i=574
-HistogramConfig::interpolate 150 0.357273 1.000000 0.839878
-TimeAvgMain::process_buffer 357 prev_frame=575 start_position=575 i=575
-HistogramConfig::interpolate 150 0.357722 1.000000 0.840009
-TimeAvgMain::process_buffer 357 prev_frame=576 start_position=576 i=576
-HistogramConfig::interpolate 150 0.358172 1.000000 0.840140
-TimeAvgMain::process_buffer 357 prev_frame=577 start_position=577 i=577
-HistogramConfig::interpolate 150 0.358621 1.000000 0.840270
-TimeAvgMain::process_buffer 357 prev_frame=578 start_position=578 i=578
-HistogramConfig::interpolate 150 0.359071 1.000000 0.840401
-TimeAvgMain::process_buffer 357 prev_frame=579 start_position=579 i=579
-HistogramConfig::interpolate 150 0.359520 1.000000 0.840532
-TimeAvgMain::process_buffer 357 prev_frame=580 start_position=580 i=580
-HistogramConfig::interpolate 150 0.359970 1.000000 0.840663
-TimeAvgMain::process_buffer 357 prev_frame=581 start_position=581 i=581
-HistogramConfig::interpolate 150 0.360419 1.000000 0.840793
-TimeAvgMain::process_buffer 357 prev_frame=582 start_position=582 i=582
-HistogramConfig::interpolate 150 0.360868 1.000000 0.840924
-TimeAvgMain::process_buffer 357 prev_frame=583 start_position=583 i=583
-HistogramConfig::interpolate 150 0.361318 1.000000 0.841055
-TimeAvgMain::process_buffer 357 prev_frame=584 start_position=584 i=584
-HistogramConfig::interpolate 150 0.361767 1.000000 0.841186
-TimeAvgMain::process_buffer 357 prev_frame=585 start_position=585 i=585
-HistogramConfig::interpolate 150 0.362217 1.000000 0.841316
-TimeAvgMain::process_buffer 357 prev_frame=586 start_position=586 i=586
-HistogramConfig::interpolate 150 0.362666 1.000000 0.841447
-TimeAvgMain::process_buffer 357 prev_frame=587 start_position=587 i=587
-HistogramConfig::interpolate 150 0.363116 1.000000 0.841578
-TimeAvgMain::process_buffer 357 prev_frame=588 start_position=588 i=588
-HistogramConfig::interpolate 150 0.363565 1.000000 0.841708
-TimeAvgMain::process_buffer 357 prev_frame=589 start_position=589 i=589
-HistogramConfig::interpolate 150 0.364015 1.000000 0.841839
-TimeAvgMain::process_buffer 357 prev_frame=590 start_position=590 i=590
-HistogramConfig::interpolate 150 0.364464 1.000000 0.841970
-TimeAvgMain::process_buffer 357 prev_frame=591 start_position=591 i=591
-HistogramConfig::interpolate 150 0.364913 1.000000 0.842101
-TimeAvgMain::process_buffer 357 prev_frame=592 start_position=592 i=592
-HistogramConfig::interpolate 150 0.365363 1.000000 0.842232
-TimeAvgMain::process_buffer 357 prev_frame=593 start_position=593 i=593
-HistogramConfig::interpolate 150 0.365812 1.000000 0.842362
-TimeAvgMain::process_buffer 357 prev_frame=594 start_position=594 i=594
-HistogramConfig::interpolate 150 0.366262 1.000000 0.842493
-TimeAvgMain::process_buffer 357 prev_frame=595 start_position=595 i=595
-HistogramConfig::interpolate 150 0.366711 1.000000 0.842624
-TimeAvgMain::process_buffer 357 prev_frame=596 start_position=596 i=596
-HistogramConfig::interpolate 150 0.367161 1.000000 0.842754
-TimeAvgMain::process_buffer 357 prev_frame=597 start_position=597 i=597
-HistogramConfig::interpolate 150 0.367610 1.000000 0.842885
-TimeAvgMain::process_buffer 357 prev_frame=598 start_position=598 i=598
-HistogramConfig::interpolate 150 0.368060 1.000000 0.843016
-TimeAvgMain::process_buffer 357 prev_frame=599 start_position=599 i=599
-HistogramConfig::interpolate 150 0.368509 1.000000 0.843147
-TimeAvgMain::process_buffer 357 prev_frame=600 start_position=600 i=600
-HistogramConfig::interpolate 150 0.368958 1.000000 0.843277
-TimeAvgMain::process_buffer 357 prev_frame=601 start_position=601 i=601
-HistogramConfig::interpolate 150 0.369408 1.000000 0.843408
-TimeAvgMain::process_buffer 357 prev_frame=602 start_position=602 i=602
-HistogramConfig::interpolate 150 0.369857 1.000000 0.843539
-TimeAvgMain::process_buffer 357 prev_frame=603 start_position=603 i=603
-HistogramConfig::interpolate 150 0.370307 1.000000 0.843670
-TimeAvgMain::process_buffer 357 prev_frame=604 start_position=604 i=604
-HistogramConfig::interpolate 150 0.370756 1.000000 0.843800
-TimeAvgMain::process_buffer 357 prev_frame=605 start_position=605 i=605
-HistogramConfig::interpolate 150 0.371206 1.000000 0.843931
-TimeAvgMain::process_buffer 357 prev_frame=606 start_position=606 i=606
-HistogramConfig::interpolate 150 0.371655 1.000000 0.844062
-TimeAvgMain::process_buffer 357 prev_frame=607 start_position=607 i=607
-HistogramConfig::interpolate 150 0.372105 1.000000 0.844193
-TimeAvgMain::process_buffer 357 prev_frame=608 start_position=608 i=608
-HistogramConfig::interpolate 150 0.372554 1.000000 0.844323
-TimeAvgMain::process_buffer 357 prev_frame=609 start_position=609 i=609
-HistogramConfig::interpolate 150 0.373003 1.000000 0.844454
-TimeAvgMain::process_buffer 357 prev_frame=610 start_position=610 i=610
-HistogramConfig::interpolate 150 0.373453 1.000000 0.844585
-TimeAvgMain::process_buffer 357 prev_frame=611 start_position=611 i=611
-HistogramConfig::interpolate 150 0.373902 1.000000 0.844716
-TimeAvgMain::process_buffer 357 prev_frame=612 start_position=612 i=612
-HistogramConfig::interpolate 150 0.374352 1.000000 0.844846
-TimeAvgMain::process_buffer 357 prev_frame=613 start_position=613 i=613
-HistogramConfig::interpolate 150 0.374801 1.000000 0.844977
-TimeAvgMain::process_buffer 357 prev_frame=614 start_position=614 i=614
-HistogramConfig::interpolate 150 0.375251 1.000000 0.845108
-TimeAvgMain::process_buffer 357 prev_frame=615 start_position=615 i=615
-HistogramConfig::interpolate 150 0.375700 1.000000 0.845239
-TimeAvgMain::process_buffer 357 prev_frame=616 start_position=616 i=616
-HistogramConfig::interpolate 150 0.376150 1.000000 0.845369
-TimeAvgMain::process_buffer 357 prev_frame=617 start_position=617 i=617
-HistogramConfig::interpolate 150 0.376599 1.000000 0.845500
-TimeAvgMain::process_buffer 357 prev_frame=618 start_position=618 i=618
-HistogramConfig::interpolate 150 0.377048 1.000000 0.845631
-TimeAvgMain::process_buffer 357 prev_frame=619 start_position=619 i=619
-HistogramConfig::interpolate 150 0.377498 1.000000 0.845762
-TimeAvgMain::process_buffer 357 prev_frame=620 start_position=620 i=620
-HistogramConfig::interpolate 150 0.377947 1.000000 0.845892
-TimeAvgMain::process_buffer 357 prev_frame=621 start_position=621 i=621
-HistogramConfig::interpolate 150 0.378397 1.000000 0.846023
-TimeAvgMain::process_buffer 357 prev_frame=622 start_position=622 i=622
-HistogramConfig::interpolate 150 0.378846 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=623 start_position=623 i=623
-HistogramConfig::interpolate 150 0.378891 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=624 start_position=624 i=624
-HistogramConfig::interpolate 150 0.378935 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=625 start_position=625 i=625
-HistogramConfig::interpolate 150 0.378980 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=626 start_position=626 i=626
-HistogramConfig::interpolate 150 0.379025 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=627 start_position=627 i=627
-HistogramConfig::interpolate 150 0.379069 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=628 start_position=628 i=628
-HistogramConfig::interpolate 150 0.379114 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=629 start_position=629 i=629
-HistogramConfig::interpolate 150 0.379159 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=630 start_position=630 i=630
-HistogramConfig::interpolate 150 0.379203 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=631 start_position=631 i=631
-HistogramConfig::interpolate 150 0.379248 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=632 start_position=632 i=632
-HistogramConfig::interpolate 150 0.379292 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=633 start_position=633 i=633
-HistogramConfig::interpolate 150 0.379337 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=634 start_position=634 i=634
-HistogramConfig::interpolate 150 0.379382 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=635 start_position=635 i=635
-HistogramConfig::interpolate 150 0.379426 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=636 start_position=636 i=636
-HistogramConfig::interpolate 150 0.379471 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=637 start_position=637 i=637
-HistogramConfig::interpolate 150 0.379516 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=638 start_position=638 i=638
-HistogramConfig::interpolate 150 0.379560 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=639 start_position=639 i=639
-HistogramConfig::interpolate 150 0.379605 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=640 start_position=640 i=640
-HistogramConfig::interpolate 150 0.379650 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=641 start_position=641 i=641
-HistogramConfig::interpolate 150 0.379694 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=642 start_position=642 i=642
-HistogramConfig::interpolate 150 0.379739 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=643 start_position=643 i=643
-HistogramConfig::interpolate 150 0.379783 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=644 start_position=644 i=644
-HistogramConfig::interpolate 150 0.379828 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=645 start_position=645 i=645
-HistogramConfig::interpolate 150 0.379873 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=646 start_position=646 i=646
-HistogramConfig::interpolate 150 0.379917 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=647 start_position=647 i=647
-HistogramConfig::interpolate 150 0.379962 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=648 start_position=648 i=648
-HistogramConfig::interpolate 150 0.380007 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=649 start_position=649 i=649
-HistogramConfig::interpolate 150 0.380051 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=650 start_position=650 i=650
-HistogramConfig::interpolate 150 0.380096 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=651 start_position=651 i=651
-HistogramConfig::interpolate 150 0.380140 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=652 start_position=652 i=652
-HistogramConfig::interpolate 150 0.380185 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=653 start_position=653 i=653
-HistogramConfig::interpolate 150 0.380230 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=654 start_position=654 i=654
-HistogramConfig::interpolate 150 0.380274 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=655 start_position=655 i=655
-HistogramConfig::interpolate 150 0.380319 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=656 start_position=656 i=656
-HistogramConfig::interpolate 150 0.380364 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=657 start_position=657 i=657
-HistogramConfig::interpolate 150 0.380408 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=658 start_position=658 i=658
-HistogramConfig::interpolate 150 0.380453 1.000000 0.846154
-TimeAvgMain::process_buffer 357 prev_frame=659 start_position=659 i=659
-Render::render_single: Session finished.
-HistogramConfig::interpolate 150 0.220192 1.000000 0.800000
-TimeAvgMain::process_buffer 357 prev_frame=270 start_position=270 i=270
-HistogramConfig::interpolate 150 0.220642 1.000000 0.800131
-TimeAvgMain::process_buffer 357 prev_frame=271 start_position=271 i=271
-HistogramConfig::interpolate 150 0.221091 1.000000 0.800261
-TimeAvgMain::process_buffer 357 prev_frame=272 start_position=272 i=272
-HistogramConfig::interpolate 150 0.221541 1.000000 0.800392
-TimeAvgMain::process_buffer 357 prev_frame=273 start_position=273 i=273
-HistogramConfig::interpolate 150 0.221990 1.000000 0.800523
-TimeAvgMain::process_buffer 357 prev_frame=274 start_position=274 i=274
-HistogramConfig::interpolate 150 0.222440 1.000000 0.800654
-TimeAvgMain::process_buffer 357 prev_frame=275 start_position=275 i=275
-HistogramConfig::interpolate 150 0.222889 1.000000 0.800784
-TimeAvgMain::process_buffer 357 prev_frame=276 start_position=276 i=276
-HistogramConfig::interpolate 150 0.223338 1.000000 0.800915
-TimeAvgMain::process_buffer 357 prev_frame=277 start_position=277 i=277
-HistogramConfig::interpolate 150 0.223788 1.000000 0.801046
-TimeAvgMain::process_buffer 357 prev_frame=278 start_position=278 i=278
-HistogramConfig::interpolate 150 0.224237 1.000000 0.801177
-TimeAvgMain::process_buffer 357 prev_frame=279 start_position=279 i=279
-HistogramConfig::interpolate 150 0.224687 1.000000 0.801307
-TimeAvgMain::process_buffer 357 prev_frame=280 start_position=280 i=280
-HistogramConfig::interpolate 150 0.225136 1.000000 0.801438
-TimeAvgMain::process_buffer 357 prev_frame=281 start_position=281 i=281
-HistogramConfig::interpolate 150 0.225586 1.000000 0.801569
-TimeAvgMain::process_buffer 357 prev_frame=282 start_position=282 i=282
-HistogramConfig::interpolate 150 0.226035 1.000000 0.801700
-TimeAvgMain::process_buffer 357 prev_frame=283 start_position=283 i=283
-HistogramConfig::interpolate 150 0.226485 1.000000 0.801830
-TimeAvgMain::process_buffer 357 prev_frame=284 start_position=284 i=284
-HistogramConfig::interpolate 150 0.226934 1.000000 0.801961
-TimeAvgMain::process_buffer 357 prev_frame=285 start_position=285 i=285
-HistogramConfig::interpolate 150 0.227383 1.000000 0.802092
-TimeAvgMain::process_buffer 357 prev_frame=286 start_position=286 i=286
-HistogramConfig::interpolate 150 0.227833 1.000000 0.802223
-TimeAvgMain::process_buffer 357 prev_frame=287 start_position=287 i=287
-HistogramConfig::interpolate 150 0.228282 1.000000 0.802353
-TimeAvgMain::process_buffer 357 prev_frame=288 start_position=288 i=288
-HistogramConfig::interpolate 150 0.228732 1.000000 0.802484
-TimeAvgMain::process_buffer 357 prev_frame=289 start_position=289 i=289
-HistogramConfig::interpolate 150 0.229181 1.000000 0.802615
-TimeAvgMain::process_buffer 357 prev_frame=290 start_position=290 i=290
-HistogramConfig::interpolate 150 0.229631 1.000000 0.802746
-TimeAvgMain::process_buffer 357 prev_frame=291 start_position=291 i=291
-HistogramConfig::interpolate 150 0.230080 1.000000 0.802876
-TimeAvgMain::process_buffer 357 prev_frame=292 start_position=292 i=292
-HistogramConfig::interpolate 150 0.230530 1.000000 0.803007
-TimeAvgMain::process_buffer 357 prev_frame=293 start_position=293 i=293
-HistogramConfig::interpolate 150 0.230979 1.000000 0.803138
-TimeAvgMain::process_buffer 357 prev_frame=294 start_position=294 i=294
-HistogramConfig::interpolate 150 0.231428 1.000000 0.803269
-TimeAvgMain::process_buffer 357 prev_frame=295 start_position=295 i=295
-HistogramConfig::interpolate 150 0.231878 1.000000 0.803399
-TimeAvgMain::process_buffer 357 prev_frame=296 start_position=296 i=296
-HistogramConfig::interpolate 150 0.232327 1.000000 0.803530
-TimeAvgMain::process_buffer 357 prev_frame=297 start_position=297 i=297
-HistogramConfig::interpolate 150 0.232777 1.000000 0.803661
-TimeAvgMain::process_buffer 357 prev_frame=298 start_position=298 i=298
-HistogramConfig::interpolate 150 0.233226 1.000000 0.803792
-TimeAvgMain::process_buffer 357 prev_frame=299 start_position=299 i=299
-HistogramConfig::interpolate 150 0.233676 1.000000 0.803922
-TimeAvgMain::process_buffer 357 prev_frame=300 start_position=300 i=300
-HistogramConfig::interpolate 150 0.234125 1.000000 0.804053
-TimeAvgMain::process_buffer 357 prev_frame=301 start_position=301 i=301
-HistogramConfig::interpolate 150 0.234575 1.000000 0.804184
-TimeAvgMain::process_buffer 357 prev_frame=302 start_position=302 i=302
-HistogramConfig::interpolate 150 0.235024 1.000000 0.804315
-TimeAvgMain::process_buffer 357 prev_frame=303 start_position=303 i=303
-HistogramConfig::interpolate 150 0.235473 1.000000 0.804445
-TimeAvgMain::process_buffer 357 prev_frame=304 start_position=304 i=304
-HistogramConfig::interpolate 150 0.235923 1.000000 0.804576
-TimeAvgMain::process_buffer 357 prev_frame=305 start_position=305 i=305
-HistogramConfig::interpolate 150 0.236372 1.000000 0.804707
-TimeAvgMain::process_buffer 357 prev_frame=306 start_position=306 i=306
-HistogramConfig::interpolate 150 0.236822 1.000000 0.804838
-TimeAvgMain::process_buffer 357 prev_frame=307 start_position=307 i=307
-HistogramConfig::interpolate 150 0.237271 1.000000 0.804968
-TimeAvgMain::process_buffer 357 prev_frame=308 start_position=308 i=308
-HistogramConfig::interpolate 150 0.237721 1.000000 0.805099
-TimeAvgMain::process_buffer 357 prev_frame=309 start_position=309 i=309
-HistogramConfig::interpolate 150 0.238170 1.000000 0.805230
-TimeAvgMain::process_buffer 357 prev_frame=310 start_position=310 i=310
-HistogramConfig::interpolate 150 0.238620 1.000000 0.805361
-TimeAvgMain::process_buffer 357 prev_frame=311 start_position=311 i=311
-HistogramConfig::interpolate 150 0.239069 1.000000 0.805491
-TimeAvgMain::process_buffer 357 prev_frame=312 start_position=312 i=312
-HistogramConfig::interpolate 150 0.239518 1.000000 0.805622
-TimeAvgMain::process_buffer 357 prev_frame=313 start_position=313 i=313
-HistogramConfig::interpolate 150 0.239968 1.000000 0.805753
-TimeAvgMain::process_buffer 357 prev_frame=314 start_position=314 i=314
-HistogramConfig::interpolate 150 0.240417 1.000000 0.805884
-TimeAvgMain::process_buffer 357 prev_frame=315 start_position=315 i=315
-HistogramConfig::interpolate 150 0.240867 1.000000 0.806014
-TimeAvgMain::process_buffer 357 prev_frame=316 start_position=316 i=316
-HistogramConfig::interpolate 150 0.241316 1.000000 0.806145
-TimeAvgMain::process_buffer 357 prev_frame=317 start_position=317 i=317
-HistogramConfig::interpolate 150 0.241766 1.000000 0.806276
-TimeAvgMain::process_buffer 357 prev_frame=318 start_position=318 i=318
-HistogramConfig::interpolate 150 0.242215 1.000000 0.806407
-TimeAvgMain::process_buffer 357 prev_frame=319 start_position=319 i=319
-HistogramConfig::interpolate 150 0.242665 1.000000 0.806537
-TimeAvgMain::process_buffer 357 prev_frame=320 start_position=320 i=320
-HistogramConfig::interpolate 150 0.243114 1.000000 0.806668
-TimeAvgMain::process_buffer 357 prev_frame=321 start_position=321 i=321
-HistogramConfig::interpolate 150 0.243563 1.000000 0.806799
-TimeAvgMain::process_buffer 357 prev_frame=322 start_position=322 i=322
-HistogramConfig::interpolate 150 0.244013 1.000000 0.806930
-TimeAvgMain::process_buffer 357 prev_frame=323 start_position=323 i=323
-HistogramConfig::interpolate 150 0.244462 1.000000 0.807060
-TimeAvgMain::process_buffer 357 prev_frame=324 start_position=324 i=324
-HistogramConfig::interpolate 150 0.244912 1.000000 0.807191
-TimeAvgMain::process_buffer 357 prev_frame=325 start_position=325 i=325
-HistogramConfig::interpolate 150 0.245361 1.000000 0.807322
-TimeAvgMain::process_buffer 357 prev_frame=326 start_position=326 i=326
-HistogramConfig::interpolate 150 0.245811 1.000000 0.807453
-TimeAvgMain::process_buffer 357 prev_frame=327 start_position=327 i=327
-HistogramConfig::interpolate 150 0.246260 1.000000 0.807583
-TimeAvgMain::process_buffer 357 prev_frame=328 start_position=328 i=328
-HistogramConfig::interpolate 150 0.246710 1.000000 0.807714
-TimeAvgMain::process_buffer 357 prev_frame=329 start_position=329 i=329
-HistogramConfig::interpolate 150 0.247159 1.000000 0.807845
-TimeAvgMain::process_buffer 357 prev_frame=330 start_position=330 i=330
-HistogramConfig::interpolate 150 0.247608 1.000000 0.807976
-TimeAvgMain::process_buffer 357 prev_frame=331 start_position=331 i=331
-HistogramConfig::interpolate 150 0.248058 1.000000 0.808106
-TimeAvgMain::process_buffer 357 prev_frame=332 start_position=332 i=332
-HistogramConfig::interpolate 150 0.248507 1.000000 0.808237
-TimeAvgMain::process_buffer 357 prev_frame=333 start_position=333 i=333
-HistogramConfig::interpolate 150 0.248957 1.000000 0.808368
-TimeAvgMain::process_buffer 357 prev_frame=334 start_position=334 i=334
-HistogramConfig::interpolate 150 0.249406 1.000000 0.808499
-TimeAvgMain::process_buffer 357 prev_frame=335 start_position=335 i=335
-HistogramConfig::interpolate 150 0.249856 1.000000 0.808629
-TimeAvgMain::process_buffer 357 prev_frame=336 start_position=336 i=336
-HistogramConfig::interpolate 150 0.250305 1.000000 0.808760
-TimeAvgMain::process_buffer 357 prev_frame=337 start_position=337 i=337
-HistogramConfig::interpolate 150 0.250755 1.000000 0.808891
-TimeAvgMain::process_buffer 357 prev_frame=338 start_position=338 i=338
-HistogramConfig::interpolate 150 0.251204 1.000000 0.809022
-TimeAvgMain::process_buffer 357 prev_frame=339 start_position=339 i=339
-HistogramConfig::interpolate 150 0.251653 1.000000 0.809152
-TimeAvgMain::process_buffer 357 prev_frame=340 start_position=340 i=340
-HistogramConfig::interpolate 150 0.252103 1.000000 0.809283
-TimeAvgMain::process_buffer 357 prev_frame=341 start_position=341 i=341
-HistogramConfig::interpolate 150 0.252552 1.000000 0.809414
-TimeAvgMain::process_buffer 357 prev_frame=342 start_position=342 i=342
-HistogramConfig::interpolate 150 0.253002 1.000000 0.809545
-TimeAvgMain::process_buffer 357 prev_frame=343 start_position=343 i=343
-HistogramConfig::interpolate 150 0.253451 1.000000 0.809675
-TimeAvgMain::process_buffer 357 prev_frame=344 start_position=344 i=344
-HistogramConfig::interpolate 150 0.253901 1.000000 0.809806
-TimeAvgMain::process_buffer 357 prev_frame=345 start_position=345 i=345
-HistogramConfig::interpolate 150 0.254350 1.000000 0.809937
-TimeAvgMain::process_buffer 357 prev_frame=346 start_position=346 i=346
-HistogramConfig::interpolate 150 0.254800 1.000000 0.810068
-TimeAvgMain::process_buffer 357 prev_frame=347 start_position=347 i=347
-HistogramConfig::interpolate 150 0.255249 1.000000 0.810198
-TimeAvgMain::process_buffer 357 prev_frame=348 start_position=348 i=348
-HistogramConfig::interpolate 150 0.255698 1.000000 0.810329
-TimeAvgMain::process_buffer 357 prev_frame=349 start_position=349 i=349
-HistogramConfig::interpolate 150 0.256148 1.000000 0.810460
-TimeAvgMain::process_buffer 357 prev_frame=350 start_position=350 i=350
-HistogramConfig::interpolate 150 0.256597 1.000000 0.810591
-TimeAvgMain::process_buffer 357 prev_frame=351 start_position=351 i=351
-HistogramConfig::interpolate 150 0.257047 1.000000 0.810721
-TimeAvgMain::process_buffer 357 prev_frame=352 start_position=352 i=352
-HistogramConfig::interpolate 150 0.257496 1.000000 0.810852
-TimeAvgMain::process_buffer 357 prev_frame=353 start_position=353 i=353
-HistogramConfig::interpolate 150 0.257946 1.000000 0.810983
-TimeAvgMain::process_buffer 357 prev_frame=354 start_position=354 i=354
-HistogramConfig::interpolate 150 0.258395 1.000000 0.811114
-TimeAvgMain::process_buffer 357 prev_frame=355 start_position=355 i=355
-HistogramConfig::interpolate 150 0.258845 1.000000 0.811244
-TimeAvgMain::process_buffer 357 prev_frame=356 start_position=356 i=356
-HistogramConfig::interpolate 150 0.259294 1.000000 0.811375
-TimeAvgMain::process_buffer 357 prev_frame=357 start_position=357 i=357
-HistogramConfig::interpolate 150 0.259743 1.000000 0.811506
-TimeAvgMain::process_buffer 357 prev_frame=358 start_position=358 i=358
-HistogramConfig::interpolate 150 0.260193 1.000000 0.811637
-TimeAvgMain::process_buffer 357 prev_frame=359 start_position=359 i=359
-HistogramConfig::interpolate 150 0.260642 1.000000 0.811767
-TimeAvgMain::process_buffer 357 prev_frame=360 start_position=360 i=360
-HistogramConfig::interpolate 150 0.261092 1.000000 0.811898
-TimeAvgMain::process_buffer 357 prev_frame=361 start_position=361 i=361
-HistogramConfig::interpolate 150 0.261541 1.000000 0.812029
-TimeAvgMain::process_buffer 357 prev_frame=362 start_position=362 i=362
-HistogramConfig::interpolate 150 0.261991 1.000000 0.812160
-TimeAvgMain::process_buffer 357 prev_frame=363 start_position=363 i=363
-HistogramConfig::interpolate 150 0.262440 1.000000 0.812290
-TimeAvgMain::process_buffer 357 prev_frame=364 start_position=364 i=364
-HistogramConfig::interpolate 150 0.262890 1.000000 0.812421
-TimeAvgMain::process_buffer 357 prev_frame=365 start_position=365 i=365
-HistogramConfig::interpolate 150 0.263339 1.000000 0.812552
-TimeAvgMain::process_buffer 357 prev_frame=366 start_position=366 i=366
-HistogramConfig::interpolate 150 0.263788 1.000000 0.812683
-TimeAvgMain::process_buffer 357 prev_frame=367 start_position=367 i=367
-HistogramConfig::interpolate 150 0.264238 1.000000 0.812813
-TimeAvgMain::process_buffer 357 prev_frame=368 start_position=368 i=368
-HistogramConfig::interpolate 150 0.264687 1.000000 0.812944
-TimeAvgMain::process_buffer 357 prev_frame=369 start_position=369 i=369
-HistogramConfig::interpolate 150 0.265137 1.000000 0.813075
-TimeAvgMain::process_buffer 357 prev_frame=370 start_position=370 i=370
-HistogramConfig::interpolate 150 0.265586 1.000000 0.813206
-TimeAvgMain::process_buffer 357 prev_frame=371 start_position=371 i=371
-HistogramConfig::interpolate 150 0.266036 1.000000 0.813336
-TimeAvgMain::process_buffer 357 prev_frame=372 start_position=372 i=372
-HistogramConfig::interpolate 150 0.266485 1.000000 0.813467
-TimeAvgMain::process_buffer 357 prev_frame=373 start_position=373 i=373
-HistogramConfig::interpolate 150 0.266935 1.000000 0.813598
-TimeAvgMain::process_buffer 357 prev_frame=374 start_position=374 i=374
-HistogramConfig::interpolate 150 0.267384 1.000000 0.813729
-TimeAvgMain::process_buffer 357 prev_frame=375 start_position=375 i=375
-HistogramConfig::interpolate 150 0.267833 1.000000 0.813859
-TimeAvgMain::process_buffer 357 prev_frame=376 start_position=376 i=376
-HistogramConfig::interpolate 150 0.268283 1.000000 0.813990
-TimeAvgMain::process_buffer 357 prev_frame=377 start_position=377 i=377
-HistogramConfig::interpolate 150 0.268732 1.000000 0.814121
-TimeAvgMain::process_buffer 357 prev_frame=378 start_position=378 i=378
-HistogramConfig::interpolate 150 0.269182 1.000000 0.814251
-TimeAvgMain::process_buffer 357 prev_frame=379 start_position=379 i=379
-HistogramConfig::interpolate 150 0.269631 1.000000 0.814382
-TimeAvgMain::process_buffer 357 prev_frame=380 start_position=380 i=380
-HistogramConfig::interpolate 150 0.270081 1.000000 0.814513
-TimeAvgMain::process_buffer 357 prev_frame=381 start_position=381 i=381
-HistogramConfig::interpolate 150 0.270530 1.000000 0.814644
-TimeAvgMain::process_buffer 357 prev_frame=382 start_position=382 i=382
-HistogramConfig::interpolate 150 0.270980 1.000000 0.814775
-TimeAvgMain::process_buffer 357 prev_frame=383 start_position=383 i=383
-HistogramConfig::interpolate 150 0.271429 1.000000 0.814905
-TimeAvgMain::process_buffer 357 prev_frame=384 start_position=384 i=384
-HistogramConfig::interpolate 150 0.271878 1.000000 0.815036
-TimeAvgMain::process_buffer 357 prev_frame=385 start_position=385 i=385
-HistogramConfig::interpolate 150 0.272328 1.000000 0.815167
-TimeAvgMain::process_buffer 357 prev_frame=386 start_position=386 i=386
-HistogramConfig::interpolate 150 0.272777 1.000000 0.815297
-TimeAvgMain::process_buffer 357 prev_frame=387 start_position=387 i=387
-HistogramConfig::interpolate 150 0.273227 1.000000 0.815428
-TimeAvgMain::process_buffer 357 prev_frame=388 start_position=388 i=388
-HistogramConfig::interpolate 150 0.273676 1.000000 0.815559
-TimeAvgMain::process_buffer 357 prev_frame=389 start_position=389 i=389
-HistogramConfig::interpolate 150 0.274126 1.000000 0.815690
-TimeAvgMain::process_buffer 357 prev_frame=390 start_position=390 i=390
-HistogramConfig::interpolate 150 0.274575 1.000000 0.815820
-TimeAvgMain::process_buffer 357 prev_frame=391 start_position=391 i=391
-HistogramConfig::interpolate 150 0.275025 1.000000 0.815951
-TimeAvgMain::process_buffer 357 prev_frame=392 start_position=392 i=392
-HistogramConfig::interpolate 150 0.275474 1.000000 0.816082
-TimeAvgMain::process_buffer 357 prev_frame=393 start_position=393 i=393
-HistogramConfig::interpolate 150 0.275923 1.000000 0.816213
-TimeAvgMain::process_buffer 357 prev_frame=394 start_position=394 i=394
-HistogramConfig::interpolate 150 0.276373 1.000000 0.816343
-TimeAvgMain::process_buffer 357 prev_frame=395 start_position=395 i=395
-HistogramConfig::interpolate 150 0.276822 1.000000 0.816474
-TimeAvgMain::process_buffer 357 prev_frame=396 start_position=396 i=396
-HistogramConfig::interpolate 150 0.277272 1.000000 0.816605
-TimeAvgMain::process_buffer 357 prev_frame=397 start_position=397 i=397
-HistogramConfig::interpolate 150 0.277721 1.000000 0.816736
-TimeAvgMain::process_buffer 357 prev_frame=398 start_position=398 i=398
-HistogramConfig::interpolate 150 0.278171 1.000000 0.816866
-TimeAvgMain::process_buffer 357 prev_frame=399 start_position=399 i=399
-HistogramConfig::interpolate 150 0.278620 1.000000 0.816997
-TimeAvgMain::process_buffer 357 prev_frame=400 start_position=400 i=400
-HistogramConfig::interpolate 150 0.279070 1.000000 0.817128
-TimeAvgMain::process_buffer 357 prev_frame=401 start_position=401 i=401
-HistogramConfig::interpolate 150 0.279519 1.000000 0.817259
-TimeAvgMain::process_buffer 357 prev_frame=402 start_position=402 i=402
-HistogramConfig::interpolate 150 0.279968 1.000000 0.817389
-TimeAvgMain::process_buffer 357 prev_frame=403 start_position=403 i=403
-HistogramConfig::interpolate 150 0.280418 1.000000 0.817520
-TimeAvgMain::process_buffer 357 prev_frame=404 start_position=404 i=404
-HistogramConfig::interpolate 150 0.280867 1.000000 0.817651
-TimeAvgMain::process_buffer 357 prev_frame=405 start_position=405 i=405
-HistogramConfig::interpolate 150 0.281317 1.000000 0.817782
-TimeAvgMain::process_buffer 357 prev_frame=406 start_position=406 i=406
-HistogramConfig::interpolate 150 0.281766 1.000000 0.817912
-TimeAvgMain::process_buffer 357 prev_frame=407 start_position=407 i=407
-HistogramConfig::interpolate 150 0.282216 1.000000 0.818043
-TimeAvgMain::process_buffer 357 prev_frame=408 start_position=408 i=408
-HistogramConfig::interpolate 150 0.282665 1.000000 0.818174
-TimeAvgMain::process_buffer 357 prev_frame=409 start_position=409 i=409
-HistogramConfig::interpolate 150 0.283115 1.000000 0.818305
-TimeAvgMain::process_buffer 357 prev_frame=410 start_position=410 i=410
-HistogramConfig::interpolate 150 0.283564 1.000000 0.818435
-TimeAvgMain::process_buffer 357 prev_frame=411 start_position=411 i=411
-HistogramConfig::interpolate 150 0.284013 1.000000 0.818566
-TimeAvgMain::process_buffer 357 prev_frame=412 start_position=412 i=412
-HistogramConfig::interpolate 150 0.284463 1.000000 0.818697
-TimeAvgMain::process_buffer 357 prev_frame=413 start_position=413 i=413
-HistogramConfig::interpolate 150 0.284912 1.000000 0.818828
-TimeAvgMain::process_buffer 357 prev_frame=414 start_position=414 i=414
-HistogramConfig::interpolate 150 0.285362 1.000000 0.818958
-TimeAvgMain::process_buffer 357 prev_frame=415 start_position=415 i=415
-HistogramConfig::interpolate 150 0.285811 1.000000 0.819089
-TimeAvgMain::process_buffer 357 prev_frame=416 start_position=416 i=416
-HistogramConfig::interpolate 150 0.286261 1.000000 0.819220
-TimeAvgMain::process_buffer 357 prev_frame=417 start_position=417 i=417
-HistogramConfig::interpolate 150 0.286710 1.000000 0.819351
-TimeAvgMain::process_buffer 357 prev_frame=418 start_position=418 i=418
-HistogramConfig::interpolate 150 0.287160 1.000000 0.819481
-TimeAvgMain::process_buffer 357 prev_frame=419 start_position=419 i=419
-HistogramConfig::interpolate 150 0.287609 1.000000 0.819612
-TimeAvgMain::process_buffer 357 prev_frame=420 start_position=420 i=420
-HistogramConfig::interpolate 150 0.288058 1.000000 0.819743
-TimeAvgMain::process_buffer 357 prev_frame=421 start_position=421 i=421
-HistogramConfig::interpolate 150 0.288508 1.000000 0.819874
-TimeAvgMain::process_buffer 357 prev_frame=422 start_position=422 i=422
-HistogramConfig::interpolate 150 0.288957 1.000000 0.820004
-TimeAvgMain::process_buffer 357 prev_frame=423 start_position=423 i=423
-HistogramConfig::interpolate 150 0.289407 1.000000 0.820135
-TimeAvgMain::process_buffer 357 prev_frame=424 start_position=424 i=424
-HistogramConfig::interpolate 150 0.289856 1.000000 0.820266
-TimeAvgMain::process_buffer 357 prev_frame=425 start_position=425 i=425
-HistogramConfig::interpolate 150 0.290306 1.000000 0.820397
-TimeAvgMain::process_buffer 357 prev_frame=426 start_position=426 i=426
-HistogramConfig::interpolate 150 0.290755 1.000000 0.820527
-TimeAvgMain::process_buffer 357 prev_frame=427 start_position=427 i=427
-HistogramConfig::interpolate 150 0.291205 1.000000 0.820658
-TimeAvgMain::process_buffer 357 prev_frame=428 start_position=428 i=428
-HistogramConfig::interpolate 150 0.291654 1.000000 0.820789
-TimeAvgMain::process_buffer 357 prev_frame=429 start_position=429 i=429
-HistogramConfig::interpolate 150 0.292103 1.000000 0.820920
-TimeAvgMain::process_buffer 357 prev_frame=430 start_position=430 i=430
-HistogramConfig::interpolate 150 0.292553 1.000000 0.821050
-TimeAvgMain::process_buffer 357 prev_frame=431 start_position=431 i=431
-HistogramConfig::interpolate 150 0.293002 1.000000 0.821181
-TimeAvgMain::process_buffer 357 prev_frame=432 start_position=432 i=432
-HistogramConfig::interpolate 150 0.293452 1.000000 0.821312
-TimeAvgMain::process_buffer 357 prev_frame=433 start_position=433 i=433
index ef88630515baa49ee0ef4a3462ccb0996da566c0..a2cf0c987e555dca592ee089ff6bdb45656a7f0b 100644 (file)
@@ -56,27 +56,14 @@ class HistogramEngine;
 class HistogramWindow;
 
 
-
-
-
 REGISTER_PLUGIN(HistogramMain)
 
-
-
-
-
-
-
-
-
 HistogramMain::HistogramMain(PluginServer *server)
  : PluginVClient(server)
 {
-
        engine = 0;
        stripe_engine = 0;
-       for(int i = 0; i < HISTOGRAM_MODES; i++)
-       {
+       for( int i=0; i<HISTOGRAM_MODES; ++i ) {
                lookup[i] = 0;
                accum[i] = 0;
                preview_lookup[i] = 0;
@@ -97,8 +84,7 @@ HistogramMain::HistogramMain(PluginServer *server)
 HistogramMain::~HistogramMain()
 {
 
-       for(int i = 0; i < HISTOGRAM_MODES;i++)
-       {
+       for( int i=0; i<HISTOGRAM_MODES; ++i ) {
                delete [] lookup[i];
                delete [] accum[i];
                delete [] preview_lookup[i];
@@ -119,39 +105,39 @@ LOAD_CONFIGURATION_MACRO(HistogramMain, HistogramConfig)
 
 void HistogramMain::render_gui(void *data)
 {
-       if(thread)
-       {
+       input = (VFrame*)data;
+       if( thread ) {
 // Process just the RGB values to determine the automatic points or
 // all the points if manual
-               if(!config.automatic)
-               {
+               if( !config.automatic ) {
 // Generate curves for value histogram
 // Lock out changes to curves
                        ((HistogramWindow*)thread->window)->lock_window("HistogramMain::render_gui 1");
                        tabulate_curve(HISTOGRAM_RED, 0);
                        tabulate_curve(HISTOGRAM_GREEN, 0);
                        tabulate_curve(HISTOGRAM_BLUE, 0);
+                       tabulate_curve(preview_lookup, HISTOGRAM_RED, 0x10000, 0);
+                       tabulate_curve(preview_lookup, HISTOGRAM_GREEN, 0x10000, 0);
+                       tabulate_curve(preview_lookup, HISTOGRAM_BLUE, 0x10000, 0);
                        ((HistogramWindow*)thread->window)->unlock_window();
                }
 
-               calculate_histogram((VFrame*)data, !config.automatic);
-
-
-               if(config.automatic)
-               {
-                       calculate_automatic((VFrame*)data);
+               calculate_histogram(input, !config.automatic);
 
+               if( config.automatic ) {
+                       calculate_automatic(input);
 // Generate curves for value histogram
 // Lock out changes to curves
                        ((HistogramWindow*)thread->window)->lock_window("HistogramMain::render_gui 1");
                        tabulate_curve(HISTOGRAM_RED, 0);
                        tabulate_curve(HISTOGRAM_GREEN, 0);
                        tabulate_curve(HISTOGRAM_BLUE, 0);
+                       tabulate_curve(preview_lookup, HISTOGRAM_RED, 0x10000, 0);
+                       tabulate_curve(preview_lookup, HISTOGRAM_GREEN, 0x10000, 0);
+                       tabulate_curve(preview_lookup, HISTOGRAM_BLUE, 0x10000, 0);
                        ((HistogramWindow*)thread->window)->unlock_window();
-
-
 // Need a second pass to get the luminance values.
-                       calculate_histogram((VFrame*)data, 1);
+                       calculate_histogram(input, 1);
                }
 
                ((HistogramWindow*)thread->window)->lock_window("HistogramMain::render_gui 2");
@@ -167,24 +153,16 @@ void HistogramMain::render_gui(void *data)
 
 void HistogramMain::update_gui()
 {
-       if(thread)
-       {
+       if( thread ) {
                ((HistogramWindow*)thread->window)->lock_window("HistogramMain::update_gui");
                int reconfigure = load_configuration();
-               if(reconfigure)
-               {
-                       ((HistogramWindow*)thread->window)->update(1,
-                               1,
-                               1,
-                               1);
-               }
+               if( reconfigure )
+                       ((HistogramWindow*)thread->window)->update(1, 1, 1, 1);
                ((HistogramWindow*)thread->window)->unlock_window();
        }
 }
 
 
-
-
 void HistogramMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
@@ -206,8 +184,7 @@ void HistogramMain::save_data(KeyFrame *keyframe)
        output.tag.set_property("PARADE", parade);
        output.tag.set_property("MODE", mode);
 
-       for(int i = 0; i < HISTOGRAM_MODES; i++)
-       {
+       for( int i=0; i<HISTOGRAM_MODES; ++i ) {
                sprintf(string, "LOW_OUTPUT_%d", i);
                output.tag.set_property(string, config.low_output[i]);
                sprintf(string, "HIGH_OUTPUT_%d", i);
@@ -218,7 +195,6 @@ void HistogramMain::save_data(KeyFrame *keyframe)
                output.tag.set_property(string, config.high_input[i]);
                sprintf(string, "GAMMA_%d", i);
                output.tag.set_property(string, config.gamma[i]);
-//printf("HistogramMain::save_data %d %f %d\n", config.input_min[i], config.input_mid[i], config.input_max[i]);
        }
 
        output.append_tag();
@@ -235,151 +211,106 @@ void HistogramMain::read_data(KeyFrame *keyframe)
        input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
+       while( !(result = input.read_tag()) ) {
+               if( input.tag.title_is("HISTOGRAM") ) {
+                       config.automatic = input.tag.get_property("AUTOMATIC", config.automatic);
+                       config.threshold = input.tag.get_property("THRESHOLD", config.threshold);
+                       config.plot = input.tag.get_property("PLOT", config.plot);
+                       config.split = input.tag.get_property("SPLIT", config.split);
+                       config.frames = input.tag.get_property("FRAMES", config.frames);
+                       config.log_slider = input.tag.get_property("LOG_SLIDER", config.log_slider);
+
+                       if( is_defaults() ) {
+                               w = input.tag.get_property("W", w);
+                               h = input.tag.get_property("H", h);
+                               parade = input.tag.get_property("PARADE", parade);
+                               mode = input.tag.get_property("MODE", mode);
+                       }
 
-
-       while(!result)
-       {
-               result = input.read_tag();
-
-               if(!result)
-               {
-                       if(input.tag.title_is("HISTOGRAM"))
-                       {
-                               config.automatic = input.tag.get_property("AUTOMATIC", config.automatic);
-                               config.threshold = input.tag.get_property("THRESHOLD", config.threshold);
-                               config.plot = input.tag.get_property("PLOT", config.plot);
-                               config.split = input.tag.get_property("SPLIT", config.split);
-                               config.frames = input.tag.get_property("FRAMES", config.frames);
-                               config.log_slider = input.tag.get_property("LOG_SLIDER", config.log_slider);
-
-                               if(is_defaults())
-                               {
-                                       w = input.tag.get_property("W", w);
-                                       h = input.tag.get_property("H", h);
-                                       parade = input.tag.get_property("PARADE", parade);
-                                       mode = input.tag.get_property("MODE", mode);
-                               }
-
-                               char string[BCTEXTLEN];
-                               for(int i = 0; i < HISTOGRAM_MODES; i++)
-                               {
-                                       sprintf(string, "LOW_OUTPUT_%d", i);
-                                       config.low_output[i] = input.tag.get_property(string, config.low_output[i]);
-                                       sprintf(string, "HIGH_OUTPUT_%d", i);
-                                       config.high_output[i] = input.tag.get_property(string, config.high_output[i]);
-                                       sprintf(string, "GAMMA_%d", i);
-                                       config.gamma[i] = input.tag.get_property(string, config.gamma[i]);
-
-                                       if(i == HISTOGRAM_VALUE || !config.automatic)
-                                       {
-                                               sprintf(string, "LOW_INPUT_%d", i);
-                                               config.low_input[i] = input.tag.get_property(string, config.low_input[i]);
-                                               sprintf(string, "HIGH_INPUT_%d", i);
-                                               config.high_input[i] = input.tag.get_property(string, config.high_input[i]);
-                                       }
-//printf("HistogramMain::read_data %d %f %d\n", config.input_min[i], config.input_mid[i], config.input_max[i]);
+                       char string[BCTEXTLEN];
+                       for( int i=0; i<HISTOGRAM_MODES; ++i ) {
+                               sprintf(string, "LOW_OUTPUT_%d", i);
+                               config.low_output[i] = input.tag.get_property(string, config.low_output[i]);
+                               sprintf(string, "HIGH_OUTPUT_%d", i);
+                               config.high_output[i] = input.tag.get_property(string, config.high_output[i]);
+                               sprintf(string, "GAMMA_%d", i);
+                               config.gamma[i] = input.tag.get_property(string, config.gamma[i]);
+
+                               if( i == HISTOGRAM_VALUE || !config.automatic ) {
+                                       sprintf(string, "LOW_INPUT_%d", i);
+                                       config.low_input[i] = input.tag.get_property(string, config.low_input[i]);
+                                       sprintf(string, "HIGH_INPUT_%d", i);
+                                       config.high_input[i] = input.tag.get_property(string, config.high_input[i]);
                                }
                        }
                }
        }
 
        config.boundaries();
-
 }
 
-float HistogramMain::calculate_level(float input,
-       int mode,
-       int use_value)
+float HistogramMain::calculate_level(float input, int mode, int use_value)
 {
        float output = 0.0;
 
 // Scale to input range
-       if(!EQUIV(config.high_input[mode], config.low_input[mode]))
-       {
+       if( !EQUIV(config.high_input[mode], config.low_input[mode]) ) {
                output = input < config.low_input[mode] ? 0 :
                    (input - config.low_input[mode]) /
                        (config.high_input[mode] - config.low_input[mode]);
        }
        else
-       {
                output = input;
-       }
-
-
 
-       if(!EQUIV(config.gamma[mode], 0))
-       {
+       if( !EQUIV(config.gamma[mode], 0) ) {
                output = pow(output, 1.0 / config.gamma[mode]);
                CLAMP(output, 0, 1.0);
        }
 
 // Apply value curve
-       if(use_value && mode != HISTOGRAM_VALUE)
-       {
+       if( use_value && mode != HISTOGRAM_VALUE )
                output = calculate_level(output, HISTOGRAM_VALUE, 0);
-       }
-
-
-
 
 // scale to output range
-       if(!EQUIV(config.low_output[mode], config.high_output[mode]))
-       {
+       if( !EQUIV(config.low_output[mode], config.high_output[mode]) ) {
                output = output * (config.high_output[mode] - config.low_output[mode]) +
                        config.low_output[mode];
        }
 
        CLAMP(output, 0, 1.0);
-
        return output;
 }
 
-
-
 void HistogramMain::calculate_histogram(VFrame *data, int do_value)
 {
-       if( !engine )
-       {
+       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++)
+       if( !accum[0] ) {
+               for( int i=0; i<HISTOGRAM_MODES; ++i )
                        accum[i] = new int[HISTOGRAM_SLOTS];
        }
 
        engine->process_packages(HistogramEngine::HISTOGRAM, data, do_value);
 
-       for(int i = 0; i < engine->get_total_clients(); i++)
-       {
-               HistogramUnit *unit = (HistogramUnit*)engine->get_client(i);
+       HistogramUnit *unit = (HistogramUnit*)engine->get_client(0);
+       for( int i=0; i<HISTOGRAM_MODES; ++i )
+               memcpy(accum[i], unit->accum[i], sizeof(int)*HISTOGRAM_SLOTS);
 
-               if(i == 0)
-               {
-                       for(int j = 0; j < HISTOGRAM_MODES; j++)
-                       {
-                               memcpy(accum[j], unit->accum[j], sizeof(int) * HISTOGRAM_SLOTS);
-                       }
-               }
-               else
-               {
-                       for(int j = 0; j < HISTOGRAM_MODES; j++)
-                       {
-                               int *out = accum[j];
-                               int *in = unit->accum[j];
-                               for(int k = 0; k < HISTOGRAM_SLOTS; k++)
-                                       out[k] += in[k];
-                       }
+       for( int i=1,n=engine->get_total_clients(); i<n; ++i ) {
+               unit = (HistogramUnit*)engine->get_client(i);
+               for( int j=0; j<HISTOGRAM_MODES; ++j ) {
+                       int *in = unit->accum[j], *out = accum[j];
+                       for( int k=HISTOGRAM_SLOTS; --k>=0; ) *out++ += *in++;
                }
        }
 
 // Remove top and bottom from calculations.  Doesn't work in high
 // precision colormodels.
-       for(int i = 0; i < HISTOGRAM_MODES; i++)
-       {
+       for( int i=0; i<HISTOGRAM_MODES; ++i ) {
                accum[i][0] = 0;
                accum[i][HISTOGRAM_SLOTS - 1] = 0;
        }
@@ -392,49 +323,37 @@ void HistogramMain::calculate_automatic(VFrame *data)
        config.reset_points(1);
 
 // Do each channel
-       for(int i = 0; i < 3; i++)
-       {
+       for( int i=0; i<3; ++i ) {
                int *accum = this->accum[i];
                int pixels = data->get_w() * data->get_h();
                float white_fraction = 1.0 - (1.0 - config.threshold) / 2;
                int threshold = (int)(white_fraction * pixels);
-               int total = 0;
-               float max_level = 1.0;
-               float min_level = 0.0;
+               float min_level = 0.0, max_level = 1.0;
 
 // Get histogram slot above threshold of pixels
-               for(int j = 0; j < HISTOGRAM_SLOTS; j++)
-               {
+               for( int j=0, total=0; j<HISTOGRAM_SLOTS; ++j ) {
                        total += accum[j];
-                       if(total >= threshold)
-                       {
+                       if( total >= threshold ) {
                                max_level = (float)j / HISTOGRAM_SLOTS * FLOAT_RANGE + HIST_MIN_INPUT;
                                break;
                        }
                }
 
 // Get slot below 99% of pixels
-               total = 0;
-               for(int j = HISTOGRAM_SLOTS - 1; j >= 0; j--)
-               {
+               for( int j=HISTOGRAM_SLOTS, total=0; --j> 0; ) {
                        total += accum[j];
-                       if(total >= threshold)
-                       {
+                       if( total >= threshold ) {
                                min_level = (float)j / HISTOGRAM_SLOTS * FLOAT_RANGE + HIST_MIN_INPUT;
                                break;
                        }
                }
 
-
                config.low_input[i] = min_level;
                config.high_input[i] = max_level;
        }
 }
 
 
-
-
-
 int HistogramMain::calculate_use_opengl()
 {
 // glHistogram doesn't work.
@@ -536,98 +455,42 @@ int HistogramMain::process_buffer(VFrame *frame,
 // table to avoid green borders
 
 
-       if(need_reconfigure ||
-               !lookup[0] ||
-               config.automatic)
-       {
+       if( need_reconfigure || !lookup[0] || config.automatic ) {
 // Calculate new curves
-               if(config.automatic)
-               {
+               if( config.automatic )
                        calculate_automatic(input);
-               }
-
-
 // Generate transfer tables with value function for integer colormodels.
-               for(int i = 0; i < 3; i++)
+               for( int i=0; i<3; ++i )
                        tabulate_curve(i, 1);
        }
 
-// printf("HistogramMain::process_buffer %d %f %f %f  %f %f %f  %f %f %f\n",
-// __LINE__,
-// config.low_input[HISTOGRAM_RED],
-// config.gamma[HISTOGRAM_RED],
-// config.high_input[HISTOGRAM_RED],
-// config.low_input[HISTOGRAM_GREEN],
-// config.gamma[HISTOGRAM_GREEN],
-// config.high_input[HISTOGRAM_GREEN],
-// config.low_input[HISTOGRAM_BLUE],
-// config.gamma[HISTOGRAM_BLUE],
-// config.high_input[HISTOGRAM_BLUE]);
-
 // Apply histogram in hardware
-       if(use_opengl) return run_opengl();
+       if( use_opengl )
+               return run_opengl();
 
 // Apply histogram
        engine->process_packages(HistogramEngine::APPLY, input, 0);
        return 0;
 }
 
-void HistogramMain::tabulate_curve(int subscript, int use_value)
+void HistogramMain::tabulate_curve(int **table, int idx, int len, int use_value)
 {
-       int i;
-       if(!lookup[subscript])
-               lookup[subscript] = new int[HISTOGRAM_SLOTS];
-       if(!preview_lookup[subscript])
-               preview_lookup[subscript] = new int[HISTOGRAM_SLOTS];
-
-//printf("HistogramMain::tabulate_curve %d input=%p\n", __LINE__, input);
-
-
-// Generate lookup tables for integer colormodels
-       if(input)
-       {
-               switch(input->get_color_model())
-               {
-                       case BC_RGB888:
-                       case BC_RGBA8888:
-                               for(i = 0; i < 0x100; i++)
-                               {
-                                       lookup[subscript][i] =
-                                               (int)(calculate_level((float)i / 0xff, subscript, use_value) *
-                                               0xff);
-                                       CLAMP(lookup[subscript][i], 0, 0xff);
-                               }
-                               break;
-// All other integer colormodels are converted to 16 bit RGB
-                       default:
-                               for(i = 0; i < 0x10000; i++)
-                               {
-                                       lookup[subscript][i] =
-                                               (int)(calculate_level((float)i / 0xffff, subscript, use_value) *
-                                               0xffff);
-                                       CLAMP(lookup[subscript][i], 0, 0xffff);
-                               }
-// for(i = 0; i < 0x100; i++)
-// {
-// if(subscript == HISTOGRAM_BLUE) printf("%d ", lookup[subscript][i * 0x100]);
-// }
-// if(subscript == HISTOGRAM_BLUE) printf("\n");
-
-                               break;
-               }
+       if( !table[idx] )  // must use max demand here
+               table[idx] = new int[0x10000];
+       int *curve = table[idx], len1 = len-1;
+       for( int i=0; i<len; ++i ) {
+               curve[i] = calculate_level((float)i/len1, idx, use_value) * len1;
+               CLAMP(curve[i], 0, len1);
        }
+}
 
-// Lookup table for preview only used for GUI
-       if(!use_value)
-       {
-               for(i = 0; i < 0x10000; i++)
-               {
-                       preview_lookup[subscript][i] =
-                               (int)(calculate_level((float)i / 0xffff, subscript, use_value) *
-                               0xffff);
-                       CLAMP(preview_lookup[subscript][i], 0, 0xffff);
-               }
-       }
+void HistogramMain::tabulate_curve(int idx, int use_value)
+{
+// uint8 rgb is 8 bit, all others are converted to 16 bit RGB
+       int color_model = input->get_color_model();
+       int lookup_len = color_model == BC_RGB888 ||
+                 color_model == BC_RGBA8888 ? 0x100 : 0x10000;
+       tabulate_curve(lookup, idx, lookup_len, use_value);
 }
 
 int HistogramMain::handle_opengl()
@@ -1026,55 +889,37 @@ HistogramUnit::~HistogramUnit()
 void HistogramUnit::process_package(LoadPackage *package)
 {
        HistogramPackage *pkg = (HistogramPackage*)package;
-
-       if(server->operation == HistogramEngine::HISTOGRAM)
-       {
+       switch( server->operation ) {
+       case HistogramEngine::HISTOGRAM: {
                int do_value = server->do_value;
+               const int hmin = HISTOGRAM_MIN * 0xffff / 100;
+               const int slots1 = HISTOGRAM_SLOTS-1;
 
-
-#define HISTOGRAM_HEAD(type) \
-{ \
-       for(int i = pkg->start; i < pkg->end; i++) \
-       { \
-               type *row = (type*)data->get_rows()[i]; \
-               for(int j = 0; j < w; j++) \
-               {
+#define HISTOGRAM_HEAD(type) { \
+       type **rows = (type**)data->get_rows(); \
+       for( int iy=pkg->start; iy<pkg->end; ++iy ) { \
+               type *row = rows[iy]; \
+               for( int ix=0; ix<w; ++ix ) {
 
 #define HISTOGRAM_TAIL(components) \
-/* Value takes the maximum of the output RGB values */ \
-                       if(do_value) \
-                       { \
-                               CLAMP(r, 0, HISTOGRAM_SLOTS - 1); \
-                               CLAMP(g, 0, HISTOGRAM_SLOTS - 1); \
-                               CLAMP(b, 0, HISTOGRAM_SLOTS - 1); \
-                               r_out = lookup_r[r]; \
-                               g_out = lookup_g[g]; \
-                               b_out = lookup_b[b]; \
+                       if( do_value ) { \
+                               r_out = preview_r[bclip(r, 0, 0xffff)]; \
+                               g_out = preview_g[bclip(g, 0, 0xffff)]; \
+                               b_out = preview_b[bclip(b, 0, 0xffff)]; \
 /*                             v = (r * 76 + g * 150 + b * 29) >> 8; */ \
-                               v = MAX(r_out, g_out); \
-                               v = MAX(v, b_out); \
-                               v += -HISTOGRAM_MIN * 0xffff / 100; \
-                               CLAMP(v, 0, HISTOGRAM_SLOTS - 1); \
-                               accum_v[v]++; \
+/* Value takes the maximum of the output RGB values */ \
+                               v = MAX(r_out, g_out); v = MAX(v, b_out); \
+                               ++accum_v[bclip(v -= hmin, 0, slots1)]; \
                        } \
  \
-                       r += -HISTOGRAM_MIN * 0xffff / 100; \
-                       g += -HISTOGRAM_MIN * 0xffff / 100; \
-                       b += -HISTOGRAM_MIN * 0xffff / 100; \
-                       CLAMP(r, 0, HISTOGRAM_SLOTS - 1); \
-                       CLAMP(g, 0, HISTOGRAM_SLOTS - 1); \
-                       CLAMP(b, 0, HISTOGRAM_SLOTS - 1); \
-                       accum_r[r]++; \
-                       accum_g[g]++; \
-                       accum_b[b]++; \
+                       ++accum_r[bclip(r -= hmin, 0, slots1)]; \
+                       ++accum_g[bclip(g -= hmin, 0, slots1)]; \
+                       ++accum_b[bclip(b -= hmin, 0, slots1)]; \
                        row += components; \
                } \
        } \
 }
 
-
-
-
                VFrame *data = server->data;
                int w = data->get_w();
                //int h = data->get_h();
@@ -1084,103 +929,96 @@ void HistogramUnit::process_package(LoadPackage *package)
                int *accum_v = accum[HISTOGRAM_VALUE];
                int32_t r, g, b, y, u, v;
                int r_out, g_out, b_out;
-               int *lookup_r = plugin->preview_lookup[HISTOGRAM_RED];
-               int *lookup_g = plugin->preview_lookup[HISTOGRAM_GREEN];
-               int *lookup_b = plugin->preview_lookup[HISTOGRAM_BLUE];
-
-               switch(data->get_color_model())
-               {
-                       case BC_RGB888:
-                               HISTOGRAM_HEAD(unsigned char)
-                               r = (row[0] << 8) | row[0];
-                               g = (row[1] << 8) | row[1];
-                               b = (row[2] << 8) | row[2];
-                               HISTOGRAM_TAIL(3)
-                               break;
-                       case BC_RGB_FLOAT:
-                               HISTOGRAM_HEAD(float)
-                               r = (int)(row[0] * 0xffff);
-                               g = (int)(row[1] * 0xffff);
-                               b = (int)(row[2] * 0xffff);
-                               HISTOGRAM_TAIL(3)
-                               break;
-                       case BC_YUV888:
-                               HISTOGRAM_HEAD(unsigned char)
-                               y = (row[0] << 8) | row[0];
-                               u = (row[1] << 8) | row[1];
-                               v = (row[2] << 8) | row[2];
-                               YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
-                               HISTOGRAM_TAIL(3)
-                               break;
-                       case BC_RGBA8888:
-                               HISTOGRAM_HEAD(unsigned char)
-                               r = (row[0] << 8) | row[0];
-                               g = (row[1] << 8) | row[1];
-                               b = (row[2] << 8) | row[2];
-                               HISTOGRAM_TAIL(4)
-                               break;
-                       case BC_RGBA_FLOAT:
-                               HISTOGRAM_HEAD(float)
-                               r = (int)(row[0] * 0xffff);
-                               g = (int)(row[1] * 0xffff);
-                               b = (int)(row[2] * 0xffff);
-                               HISTOGRAM_TAIL(4)
-                               break;
-                       case BC_YUVA8888:
-                               HISTOGRAM_HEAD(unsigned char)
-                               y = (row[0] << 8) | row[0];
-                               u = (row[1] << 8) | row[1];
-                               v = (row[2] << 8) | row[2];
-                               YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
-                               HISTOGRAM_TAIL(4)
-                               break;
-                       case BC_RGB161616:
-                               HISTOGRAM_HEAD(uint16_t)
-                               r = row[0];
-                               g = row[1];
-                               b = row[2];
-                               HISTOGRAM_TAIL(3)
-                               break;
-                       case BC_YUV161616:
-                               HISTOGRAM_HEAD(uint16_t)
-                               y = row[0];
-                               u = row[1];
-                               v = row[2];
-                               YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
-                               HISTOGRAM_TAIL(3)
-                               break;
-                       case BC_RGBA16161616:
-                               HISTOGRAM_HEAD(uint16_t)
-                               r = row[0];
-                               g = row[1];
-                               b = row[2];
-                               HISTOGRAM_TAIL(3)
-                               break;
-                       case BC_YUVA16161616:
-                               HISTOGRAM_HEAD(uint16_t)
-                               y = row[0];
-                               u = row[1];
-                               v = row[2];
-                               YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
-                               HISTOGRAM_TAIL(4)
-                               break;
+               int *preview_r = plugin->preview_lookup[HISTOGRAM_RED];
+               int *preview_g = plugin->preview_lookup[HISTOGRAM_GREEN];
+               int *preview_b = plugin->preview_lookup[HISTOGRAM_BLUE];
+
+               switch( data->get_color_model() ) {
+               case BC_RGB888:
+                       HISTOGRAM_HEAD(unsigned char)
+                       r = (row[0] << 8) | row[0];
+                       g = (row[1] << 8) | row[1];
+                       b = (row[2] << 8) | row[2];
+                       HISTOGRAM_TAIL(3)
+                       break;
+               case BC_RGB_FLOAT:
+                       HISTOGRAM_HEAD(float)
+                       r = (int)(row[0] * 0xffff);
+                       g = (int)(row[1] * 0xffff);
+                       b = (int)(row[2] * 0xffff);
+                       HISTOGRAM_TAIL(3)
+                       break;
+               case BC_YUV888:
+                       HISTOGRAM_HEAD(unsigned char)
+                       y = (row[0] << 8) | row[0];
+                       u = (row[1] << 8) | row[1];
+                       v = (row[2] << 8) | row[2];
+                       YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
+                       HISTOGRAM_TAIL(3)
+                       break;
+               case BC_RGBA8888:
+                       HISTOGRAM_HEAD(unsigned char)
+                       r = (row[0] << 8) | row[0];
+                       g = (row[1] << 8) | row[1];
+                       b = (row[2] << 8) | row[2];
+                       HISTOGRAM_TAIL(4)
+                       break;
+               case BC_RGBA_FLOAT:
+                       HISTOGRAM_HEAD(float)
+                       r = (int)(row[0] * 0xffff);
+                       g = (int)(row[1] * 0xffff);
+                       b = (int)(row[2] * 0xffff);
+                       HISTOGRAM_TAIL(4)
+                       break;
+               case BC_YUVA8888:
+                       HISTOGRAM_HEAD(unsigned char)
+                       y = (row[0] << 8) | row[0];
+                       u = (row[1] << 8) | row[1];
+                       v = (row[2] << 8) | row[2];
+                       YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
+                       HISTOGRAM_TAIL(4)
+                       break;
+               case BC_RGB161616:
+                       HISTOGRAM_HEAD(uint16_t)
+                       r = row[0];
+                       g = row[1];
+                       b = row[2];
+                       HISTOGRAM_TAIL(3)
+                       break;
+               case BC_YUV161616:
+                       HISTOGRAM_HEAD(uint16_t)
+                       y = row[0];
+                       u = row[1];
+                       v = row[2];
+                       YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
+                       HISTOGRAM_TAIL(3)
+                       break;
+               case BC_RGBA16161616:
+                       HISTOGRAM_HEAD(uint16_t)
+                       r = row[0];
+                       g = row[1];
+                       b = row[2];
+                       HISTOGRAM_TAIL(3)
+                       break;
+               case BC_YUVA16161616:
+                       HISTOGRAM_HEAD(uint16_t)
+                       y = row[0];
+                       u = row[1];
+                       v = row[2];
+                       YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v);
+                       HISTOGRAM_TAIL(4)
+                       break;
                }
-       }
-       else
-       if(server->operation == HistogramEngine::APPLY)
-       {
-
-
-
-#define PROCESS(type, components) \
-{ \
-       for(int i = pkg->start; i < pkg->end; i++) \
-       { \
-               type *row = (type*)input->get_rows()[i]; \
-               for(int j = 0; j < w; j++) \
-               { \
-                       if ( plugin->config.split && ((j + i * w / h) < w) ) \
-                       continue; \
+               break; }
+       case HistogramEngine::APPLY: {
+
+#define PROCESS(type, components) { \
+       type **rows = (type**)input->get_rows(); \
+       for( int iy=pkg->start; iy<pkg->end; ++iy ) { \
+               type *row = rows[iy]; \
+               for( int ix=0; ix<w; ++ix ) { \
+                       if( plugin->config.split && ((ix + (iy*w)/h) < w) ) \
+                               continue; \
                        row[0] = lookup_r[row[0]]; \
                        row[1] = lookup_g[row[1]]; \
                        row[2] = lookup_b[row[2]]; \
@@ -1189,47 +1027,36 @@ void HistogramUnit::process_package(LoadPackage *package)
        } \
 }
 
-#define PROCESS_YUV(type, components, max) \
-{ \
-       for(int i = pkg->start; i < pkg->end; i++) \
-       { \
-               type *row = (type*)input->get_rows()[i]; \
-               for(int j = 0; j < w; j++) \
-               { \
-                       if ( plugin->config.split && ((j + i * w / h) < w) ) \
-                       continue; \
-/* Convert to 16 bit RGB */ \
-                       if(max == 0xff) \
-                       { \
+#define PROCESS_YUV(type, components, max) { \
+       type **rows = (type**)input->get_rows(); \
+       for( int iy=pkg->start; iy<pkg->end; ++iy ) { \
+               type *row = rows[iy]; \
+               for( int ix=0; ix<w; ++ix ) { \
+                       if( plugin->config.split && ((ix + (iy*w)/h) < w) ) \
+                               continue; \
+                       if( max == 0xff ) { /* Convert to 16 bit RGB */ \
                                y = (row[0] << 8) | row[0]; \
                                u = (row[1] << 8) | row[1]; \
                                v = (row[2] << 8) | row[2]; \
                        } \
-                       else \
-                       { \
+                       else { \
                                y = row[0]; \
                                u = row[1]; \
                                v = row[2]; \
                        } \
- \
                        YUV::yuv.yuv_to_rgb_16(r, g, b, y, u, v); \
- \
 /* Look up in RGB domain */ \
                        r = lookup_r[r]; \
                        g = lookup_g[g]; \
                        b = lookup_b[b]; \
- \
 /* Convert to 16 bit YUV */ \
                        YUV::yuv.rgb_to_yuv_16(r, g, b, y, u, v); \
- \
-                       if(max == 0xff) \
-                       { \
+                       if( max == 0xff ) { \
                                row[0] = y >> 8; \
                                row[1] = u >> 8; \
                                row[2] = v >> 8; \
                        } \
-                       else \
-                       { \
+                       else { \
                                row[0] = y; \
                                row[1] = u; \
                                row[2] = v; \
@@ -1239,33 +1066,24 @@ void HistogramUnit::process_package(LoadPackage *package)
        } \
 }
 
-#define PROCESS_FLOAT(components) \
-{ \
-       for(int i = pkg->start; i < pkg->end; i++) \
-       { \
-               float *row = (float*)input->get_rows()[i]; \
-               for(int j = 0; j < w; j++) \
-               { \
-                       if ( plugin->config.split && ((j + i * w / h) < w) ) \
-                       continue; \
-                       float r = row[0]; \
-                       float g = row[1]; \
-                       float b = row[2]; \
- \
-                       r = plugin->calculate_level(r, HISTOGRAM_RED, 1); \
-                       g = plugin->calculate_level(g, HISTOGRAM_GREEN, 1); \
-                       b = plugin->calculate_level(b, HISTOGRAM_BLUE, 1); \
- \
-                       row[0] = r; \
-                       row[1] = g; \
-                       row[2] = b; \
- \
+#define PROCESS_FLOAT(components) { \
+       float **rows = (float**)input->get_rows(); \
+       for( int iy=pkg->start; iy<pkg->end; ++iy ) { \
+               float *row = rows[iy]; \
+               for( int ix=0; ix<w; ++ix ) { \
+                       if( plugin->config.split && ((ix + (iy*w)/h) < w) ) \
+                               continue; \
+                       float fr = row[0]; \
+                       float fg = row[1]; \
+                       float fb = row[2]; \
+                       row[0]  = plugin->calculate_level(fr, HISTOGRAM_RED, 1); \
+                       row[1]  = plugin->calculate_level(fg, HISTOGRAM_GREEN, 1); \
+                       row[2]  = plugin->calculate_level(fb, HISTOGRAM_BLUE, 1); \
                        row += components; \
                } \
        } \
 }
 
-
                VFrame *input = plugin->input;
                //VFrame *output = plugin->output;
                int w = input->get_w();
@@ -1274,50 +1092,45 @@ void HistogramUnit::process_package(LoadPackage *package)
                int *lookup_g = plugin->lookup[1];
                int *lookup_b = plugin->lookup[2];
                int r, g, b, y, u, v;
-               switch(input->get_color_model())
-               {
-                       case BC_RGB888:
-                               PROCESS(unsigned char, 3)
-                               break;
-                       case BC_RGB_FLOAT:
-                               PROCESS_FLOAT(3);
-                               break;
-                       case BC_RGBA8888:
-                               PROCESS(unsigned char, 4)
-                               break;
-                       case BC_RGBA_FLOAT:
-                               PROCESS_FLOAT(4);
-                               break;
-                       case BC_RGB161616:
-                               PROCESS(uint16_t, 3)
-                               break;
-                       case BC_RGBA16161616:
-                               PROCESS(uint16_t, 4)
-                               break;
-                       case BC_YUV888:
-                               PROCESS_YUV(unsigned char, 3, 0xff)
-                               break;
-                       case BC_YUVA8888:
-                               PROCESS_YUV(unsigned char, 4, 0xff)
-                               break;
-                       case BC_YUV161616:
-                               PROCESS_YUV(uint16_t, 3, 0xffff)
-                               break;
-                       case BC_YUVA16161616:
-                               PROCESS_YUV(uint16_t, 4, 0xffff)
-                               break;
+               switch( input->get_color_model() ) {
+               case BC_RGB888:
+                       PROCESS(unsigned char, 3)
+                       break;
+               case BC_RGB_FLOAT:
+                       PROCESS_FLOAT(3);
+                       break;
+               case BC_RGBA8888:
+                       PROCESS(unsigned char, 4)
+                       break;
+               case BC_RGBA_FLOAT:
+                       PROCESS_FLOAT(4);
+                       break;
+               case BC_RGB161616:
+                       PROCESS(uint16_t, 3)
+                       break;
+               case BC_RGBA16161616:
+                       PROCESS(uint16_t, 4)
+                       break;
+               case BC_YUV888:
+                       PROCESS_YUV(unsigned char, 3, 0xff)
+                       break;
+               case BC_YUVA8888:
+                       PROCESS_YUV(unsigned char, 4, 0xff)
+                       break;
+               case BC_YUV161616:
+                       PROCESS_YUV(uint16_t, 3, 0xffff)
+                       break;
+               case BC_YUVA16161616:
+                       PROCESS_YUV(uint16_t, 4, 0xffff)
+                       break;
                }
+               break; }
        }
 }
 
 
-
-
-
-
 HistogramEngine::HistogramEngine(HistogramMain *plugin,
-       int total_clients,
-       int total_packages)
+       int total_clients, int total_packages)
  : LoadServer(total_clients, total_packages)
 {
        this->plugin = plugin;
@@ -1325,35 +1138,29 @@ HistogramEngine::HistogramEngine(HistogramMain *plugin,
 
 void HistogramEngine::init_packages()
 {
-       switch(operation)
-       {
-               case HISTOGRAM:
-                       total_size = data->get_h();
-                       break;
-               case APPLY:
-                       total_size = data->get_h();
-                       break;
+       switch(operation) {
+       case HISTOGRAM:
+               total_size = data->get_h();
+               break;
+       case APPLY:
+               total_size = data->get_h();
+               break;
        }
 
-
-       //int package_size = (int)((float)total_size / get_total_packages() + 1);
-       //int start = 0;
-
-       for(int i = 0; i < get_total_packages(); i++)
-       {
+       int start = 0;
+       for( int i=0,n=get_total_packages(); i<n; ++i ) {
                HistogramPackage *package = (HistogramPackage*)get_package(i);
-               package->start = total_size * i / get_total_packages();
-               package->end = total_size * (i + 1) / get_total_packages();
+               package->start = start;
+               package->end = total_size * (i+1)/n;
+               start = package->end;
        }
 
 // Initialize clients here in case some don't get run.
-       for(int i = 0; i < get_total_clients(); i++)
-       {
+       for( int i=0,n=get_total_clients(); i<n; ++i ) {
                HistogramUnit *unit = (HistogramUnit*)get_client(i);
-               for(int i = 0; i < HISTOGRAM_MODES; i++)
-                       bzero(unit->accum[i], sizeof(int) * HISTOGRAM_SLOTS);
+               for( int j=0; j<HISTOGRAM_MODES; ++j )
+                       bzero(unit->accum[j], sizeof(int) * HISTOGRAM_SLOTS);
        }
-
 }
 
 LoadClient* HistogramEngine::new_client()
index 9aa4747acc2c556f164acac9bb5c05bb32d9a4cf..0051243855f9f8413fcf569d10edde6fb184b26e 100644 (file)
@@ -60,9 +60,8 @@ public:
 // Value is only calculated for preview.
        void calculate_histogram(VFrame *data, int do_value);
 // Calculate the linear, smoothed, lookup curves
-       void tabulate_curve(int subscript, int use_value);
-
-
+       void tabulate_curve(int **table, int idx, int len, int use_value);
+       void tabulate_curve(int idx, int use_value);
 
 
        VFrame *input, *output;
index 8acb53fc3e3186e1cf21694e35e19512581168dd..3261fbc906fd2c5840df8f9963e655e102103af7 100644 (file)
@@ -60,63 +60,34 @@ void HistogramWindow::create_objects()
        int margin = plugin->get_theme()->widget_border;
        int x = margin, y = margin, x1 = margin;
 
-       add_subwindow(mode_v = new HistogramMode(plugin,
-               x,
-               y,
-               HISTOGRAM_VALUE,
-               _("Value")));
+       add_subwindow(mode_v = new HistogramMode(plugin, x, y,
+               HISTOGRAM_VALUE, _("Value")));
        x += mode_v->get_w() + margin;
-       add_subwindow(mode_r = new HistogramMode(plugin,
-               x,
-               y,
-               HISTOGRAM_RED,
-               _("Red")));
+       add_subwindow(mode_r = new HistogramMode(plugin, x, y,
+               HISTOGRAM_RED, _("Red")));
        x += mode_r->get_w() + margin;
-       add_subwindow(mode_g = new HistogramMode(plugin,
-               x,
-               y,
-               HISTOGRAM_GREEN,
-               _("Green")));
+       add_subwindow(mode_g = new HistogramMode(plugin, x, y,
+               HISTOGRAM_GREEN, _("Green")));
        x += mode_g->get_w() + margin;
-       add_subwindow(mode_b = new HistogramMode(plugin,
-               x,
-               y,
-               HISTOGRAM_BLUE,
-               _("Blue")));
-
-
+       add_subwindow(mode_b = new HistogramMode(plugin, x, y,
+               HISTOGRAM_BLUE, _("Blue")));
        x = get_w() - margin - plugin->get_theme()->get_image_set("histogram_rgb_toggle")[0]->get_w();
-       add_subwindow(parade_on = new HistogramParade(plugin,
-               this,
-               x,
-               y,
-               1));
+       add_subwindow(parade_on = new HistogramParade(plugin, this,
+               x, y, 1));
        x -= parade_on->get_w() + margin;
-       add_subwindow(parade_off = new HistogramParade(plugin,
-               this,
-               x,
-               y,
-               0));
-
+       add_subwindow(parade_off = new HistogramParade(plugin, this, x, y, 0));
 
        x = x1;
        y += parade_on->get_h() + margin;
-       add_subwindow(canvas_title1 = new BC_Title(margin,
-               y,
-               "-10%"));
-       add_subwindow(canvas_title2 = new BC_Title(get_w() - get_text_width(MEDIUMFONT, "110%") - margin,
-               y,
-               "110%"));
+       add_subwindow(canvas_title1 = new BC_Title(margin, y, "-10%"));
+       x = get_w() - get_text_width(MEDIUMFONT, "110%") - margin;
+       add_subwindow(canvas_title2 = new BC_Title(x, y, "110%"));
 
        y += canvas_title2->get_h() + margin;
        x = x1;
        canvas_h = get_h() - y - yS(210);
 
-
-       add_subwindow(low_input_carrot = new HistogramCarrot(plugin,
-               this,
-               x,
-               y + canvas_h));
+       add_subwindow(low_input_carrot = new HistogramCarrot(plugin, this, x, y + canvas_h));
 
        x = low_input_carrot->get_w() / 2 + x;
        canvas_w = get_w() - x - x;
@@ -126,48 +97,27 @@ void HistogramWindow::create_objects()
        title3_x = x + (int)(canvas_w * (1.0 - HIST_MIN_INPUT) / FLOAT_RANGE);
        title4_x = x + (int)(canvas_w);
 
-
-
-
-
-       add_subwindow(canvas = new HistogramCanvas(plugin,
-               this,
-               x,
-               y,
-               canvas_w,
-               canvas_h));
+       add_subwindow(canvas = new HistogramCanvas(plugin, this,
+                       x, y, canvas_w, canvas_h));
 
 // Canvas border
-       draw_3d_border(x - 2,
-               y - 2,
-               canvas_w + 4,
-               canvas_h + 4,
-               get_bg_color(),
-               BLACK,
-               MDGREY,
-               get_bg_color());
+       draw_3d_border(x - 2, y - 2, canvas_w + 4, canvas_h + 4,
+               get_bg_color(), BLACK, MDGREY, get_bg_color());
 
 // Calculate output curve with no value function
-       plugin->tabulate_curve(plugin->mode, 0);
+       plugin->tabulate_curve(plugin->preview_lookup, plugin->mode, 0x10000, 0);
 
        y += canvas->get_h();
        x = margin;
 
-       add_subwindow(gamma_carrot = new HistogramCarrot(plugin,
-               this,
-               canvas->get_x() +
-                       canvas->get_w() / 2 -
-                       low_input_carrot->get_w() / 2 ,
-               y));
-
-       add_subwindow(high_input_carrot = new HistogramCarrot(plugin,
-               this,
-               canvas->get_x() +
-                       canvas->get_w() -
-                       low_input_carrot->get_w() / 2,
-               y));
-       y += low_input_carrot->get_h() + margin;
+       add_subwindow(gamma_carrot = new HistogramCarrot(plugin, this,
+               canvas->get_x() + canvas->get_w() / 2 -
+                       low_input_carrot->get_w() / 2 , y));
 
+       add_subwindow(high_input_carrot = new HistogramCarrot(plugin, this,
+               canvas->get_x() + canvas->get_w() -
+                       low_input_carrot->get_w() / 2, y));
+       y += low_input_carrot->get_h() + margin;
 
 //     add_subwindow(title = new BC_Title(x, y, _("Input:")));
 //     x += title->get_w() + margin;
@@ -271,20 +221,13 @@ int HistogramWindow::resize_event(int w, int h)
 // Canvas follows window size
        canvas_w = canvas_w + xdiff;
        canvas_h = canvas_h + ydiff;
-       canvas->reposition_window(canvas->get_x(),
-               canvas->get_y(),
-               canvas_w,
-               canvas_h);
+       canvas->reposition_window(canvas->get_x(), canvas->get_y(),
+               canvas_w, canvas_h);
 
 // Canvas border
-       draw_3d_border(canvas->get_x() - 2,
-               canvas->get_y() - 2,
-               canvas_w + 4,
-               canvas_h + 4,
-               get_bg_color(),
-               BLACK,
-               MDGREY,
-               get_bg_color());
+       draw_3d_border(canvas->get_x() - 2, canvas->get_y() - 2,
+               canvas_w + 4, canvas_h + 4,
+               get_bg_color(), BLACK, MDGREY, get_bg_color());
 
        low_input_carrot->reposition_window(low_input_carrot->get_x(),
                low_input_carrot->get_y() + ydiff);
@@ -307,14 +250,9 @@ int HistogramWindow::resize_event(int w, int h)
        output->update();
 
 // Output border
-       draw_3d_border(output->get_x() - 2,
-               output->get_y() - 2,
-               output->get_w() + 4,
-               output->get_h() + 4,
-               get_bg_color(),
-               BLACK,
-               MDGREY,
-               get_bg_color());
+       draw_3d_border(output->get_x() - 2, output->get_y() - 2,
+               output->get_w() + 4, output->get_h() + 4,
+               get_bg_color(), BLACK, MDGREY, get_bg_color());
 
        low_output_carrot->reposition_window(low_output_carrot->get_x(),
                low_output_carrot->get_y() + ydiff);
@@ -458,9 +396,11 @@ void HistogramWindow::draw_canvas_mode(int mode, int color, int y, int h)
 // Draw histogram
        int max = 0, *accum = plugin->accum[mode];
        if( accum ) {
-               for( int i=0; i<HISTOGRAM_SLOTS; ++i ) {
-                       int v = accum[i];
-                       if( max < v ) max = v;
+               for( int i=0,x=0; x<canvas_w; ++x ) {
+                       int m = 0;
+                       int i1 = (HISTOGRAM_SLOTS * (x+1)) / canvas_w;
+                       while( i < i1 ) m += accum[i++];
+                       if( max < m ) max = m;
                }
        }
 
@@ -470,13 +410,11 @@ void HistogramWindow::draw_canvas_mode(int mode, int color, int y, int h)
                double lin_scale = (lin_slider * h) / max;
                double log_scale = (log_slider * h) / log(max);
                for( int i=0,x=0; x<canvas_w; ++x ) {
-                       int m = 0;
+                       int m = 0, i0 = i;
                        int i1 = (HISTOGRAM_SLOTS * (x+1)) / canvas_w;
-                       while( i < i1 ) {
-                               int v = accum[i++];
-                               if( m < v ) m = v;
-                       }
-                       m = m*lin_scale + log(m)*log_scale;
+                       while( i < i1 ) m += accum[i++];
+                       double v = m > 0 && i1 > i0 ? (double)m : 0;
+                       m = v > 0 ? v*lin_scale + log(v)*log_scale : 0;
 
                        canvas->set_color(BLACK);
                        canvas->draw_line(x, y, x, y+h - m);
index b83cb92d7116cda0a6057b7ad35d95b2802ffbe1..effbc91bfaaaf29838850af1f6fea6195e3bd2c9 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/expandpatch_checked.png and b/cinelerra-5.1/plugins/theme_suv/data/expandpatch_checked.png differ
index ed3d3d74327ad26fd543bcd2bdf806718f49b8fe..f122f7479bded5946610ca7cbb5cd459e9fd1d0c 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/expandpatch_checkedhi.png and b/cinelerra-5.1/plugins/theme_suv/data/expandpatch_checkedhi.png differ
index 197834421709cdb2044f9843c769694b9a777afc..fb30a7e2fe4ebeef7531d740137a9fd59e0e1bf1 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/expandpatch_dn.png and b/cinelerra-5.1/plugins/theme_suv/data/expandpatch_dn.png differ
index 37da94c11c847d959d001592166f075de7ffa81d..0296144b2ec90383327897a2dd6c3894373ad38e 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/expandpatch_hi.png and b/cinelerra-5.1/plugins/theme_suv/data/expandpatch_hi.png differ
index 0d9ec4ffa9c253e5d5a98b29307b0dc60468215a..6d51f65de4f15e0d05e53e6028f07ae348c17427 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/expandpatch_up.png and b/cinelerra-5.1/plugins/theme_suv/data/expandpatch_up.png differ
index 63a830b34e20a358a06f5666d03b18ea6277f609..fed092eda6455c7b3bad2c246ef018c2ee624a23 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/new_bg.png and b/cinelerra-5.1/plugins/theme_suv/data/new_bg.png differ
index ce02a72be05dbc2c6cb7da0fb2f0a4f99d08e977..8b0df0a1022467d8846b896dd9fc39b24ff646c6 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_dn.png and b/cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_dn.png differ
index a0fa6805f743d607695740442c97c33ee2cae157..c985fef6f4c553d2a61bd07d4e4d3606ec6ad5b3 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_hi.png and b/cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_hi.png differ
index 886ac2371294117624ebf6b357cd65f508da31fb..97011927fbf5f1c56b4446558b87f0c6a210e59b 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_up.png and b/cinelerra-5.1/plugins/theme_suv/data/new_bigbutton_up.png differ
index 3d79ddf05cad409f7739476815f70f4e2af59408..fd0a5f4561a91964ae45dfaae843acd5251ddc91 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_bottom.png and b/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_bottom.png differ
index fbb6de48d79fadbe22e6c54ec5522f82c3f73d6d..a5eb675820571ed652d33d8fed6c3305bc2d43c5 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_hi.png and b/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_hi.png differ
index b1378d7a3ecd4296abf68c2716b5fa23cb6e3bcb..6cb50e2e4203cfcf8bbf64db8fb54e0bb343703a 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_top.png and b/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_top.png differ
index b4412e22f1d9abd4be53fff076c1220b6d46dbc9..c4dcc7718bb30d03d49dbf5aa0f901254599b571 100644 (file)
Binary files a/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_up.png and b/cinelerra-5.1/plugins/theme_suv/data/tumblepatch_up.png differ