X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Findexfile.C;h=7bbd295586bedb4c85f0f2b897df5f9054e89c35;hb=8cad02a7b02e4a8543bc5514892b51aed877a193;hp=c063b44c46b8653d5da6b1c81906d26c926f38ad;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/indexfile.C b/cinelerra-5.1/cinelerra/indexfile.C index c063b44c..7bbd2955 100644 --- a/cinelerra-5.1/cinelerra/indexfile.C +++ b/cinelerra-5.1/cinelerra/indexfile.C @@ -689,7 +689,10 @@ SET_TRACE // Start and length of fragment to read from file in bytes. float *buffer = 0; int buffer_shared = 0; - int center_pixel = mwindow->edl->local_session->zoom_track / 2; + int rect_audio = mwindow->preferences->rectify_audio;; + int center_pixel = !rect_audio ? + mwindow->edl->local_session->zoom_track / 2 : + mwindow->edl->local_session->zoom_track; if( edit->track->show_titles() ) center_pixel += mwindow->theme->get_image("title_bg_data")->get_h(); @@ -726,8 +729,10 @@ SET_TRACE int prev_y1 = center_pixel; int prev_y2 = center_pixel; int first_frame = 1; - int zoom_y = mwindow->edl->local_session->zoom_y, zoom_y2 = zoom_y / 2; - int max_y = center_pixel + zoom_y2 - 1; + int zoom_y = !rect_audio ? + mwindow->edl->local_session->zoom_y / 2 : + mwindow->edl->local_session->zoom_y; + int max_y = center_pixel + zoom_y - 1; edit_position = (x + pixmap->pixmap_x - virtual_edit_x) * project_zoom; int64_t speed_position = edit->startsource; speed_position += !speed_autos ? edit_position : @@ -739,8 +744,8 @@ SET_TRACE SET_TRACE for( int64_t x1=0; x1pixmap_x - virtual_edit_x) * project_zoom; int64_t speed_position = edit->startsource; @@ -751,12 +756,14 @@ SET_TRACE int64_t k = 2 * index_position - start_index; CLAMP(k, 0, length_index); while( i < k ) { - highsample = MAX(highsample, buffer[i]); ++i; - lowsample = MIN(lowsample, buffer[i]); ++i; + float high = !rect_audio ? buffer[i] : fabsf(buffer[i]); + highsample = MAX(highsample, high); ++i; + float low = !rect_audio ? buffer[i] : fabsf(buffer[i]); + lowsample = MIN(lowsample, low); ++i; } - int y1 = (int)(center_pixel - highsample * zoom_y2); - int y2 = (int)(center_pixel - lowsample * zoom_y2); + int y1 = (int)(center_pixel - highsample * zoom_y); + int y2 = (int)(center_pixel - lowsample * zoom_y); CLAMP(y1, 0, max_y); int next_y1 = y1; CLAMP(y2, 0, max_y); int next_y2 = y2; //printf("draw_line (%f,%f) = %d,%d, %d,%d\n", lowsample, highsample, x2, y1, x2, y2);