From: Good Guy Date: Tue, 26 Feb 2019 01:22:38 +0000 (-0700) Subject: camera zoom fix, upgrade giflib, configure.ac ix86 probe tweaks, any python X-Git-Tag: 2019-08~95 X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=commitdiff_plain;h=61298e645e43da02c939e9512949f0b183542d58 camera zoom fix, upgrade giflib, configure.ac ix86 probe tweaks, any python --- diff --git a/cinelerra-5.1/cinelerra/Makefile b/cinelerra-5.1/cinelerra/Makefile index c1f97f1e..dfdfd230 100644 --- a/cinelerra-5.1/cinelerra/Makefile +++ b/cinelerra-5.1/cinelerra/Makefile @@ -564,7 +564,7 @@ clean: tags: - ctags -R -h default --langmap=c:+.inc . ../guicast/ ../libzmpeg3 ../plugins ../thirdparty/ffmpeg-* + ctags -R -h default --langmap=c:+.inc . ../guicast/ ../libzmpeg3 ../plugins ../thirdparty/ffmpeg-* ../thirdparty/giflib-* $(OBJDIR)/%.o: %.C diff --git a/cinelerra-5.1/cinelerra/cwindowgui.C b/cinelerra-5.1/cinelerra/cwindowgui.C index 02ed52d3..0d8b755a 100644 --- a/cinelerra-5.1/cinelerra/cwindowgui.C +++ b/cinelerra-5.1/cinelerra/cwindowgui.C @@ -2906,7 +2906,7 @@ void CWindowCanvas::draw_bezier(int do_camera) track->automation->get_camera(¢er_x, ¢er_y, ¢er_z, position, PLAY_FORWARD); // follow image, not camera - center_x = -center_x; center_y = -center_y; + center_x = -center_x * center_z; center_y = -center_y * center_z; } else track->automation->get_projector(¢er_x, @@ -2964,114 +2964,71 @@ int CWindowCanvas::test_bezier(int button_press, // Processing drag operation. // Create keyframe during first cursor motion. - if(!button_press) - { + if( !button_press ) { float cursor_x = get_cursor_x(); float cursor_y = get_cursor_y(); canvas_to_output(mwindow->edl, 0, cursor_x, cursor_y); - if(gui->current_operation == CWINDOW_CAMERA || - gui->current_operation == CWINDOW_PROJECTOR) - { - if(!gui->ctrl_down() && gui->shift_down() && !gui->translating_zoom) - { + if( gui->current_operation == CWINDOW_CAMERA || + gui->current_operation == CWINDOW_PROJECTOR ) { + if( !gui->ctrl_down() && gui->shift_down() && !gui->translating_zoom ) { gui->translating_zoom = 1; gui->reset_affected(); } - else - if(!gui->ctrl_down() && !gui->shift_down() && gui->translating_zoom) - { + else if( !gui->ctrl_down() && !gui->shift_down() && gui->translating_zoom ) { gui->translating_zoom = 0; gui->reset_affected(); } // Get target keyframe - float last_center_x; - float last_center_y; - float last_center_z; - int created; - - if(!gui->affected_x && !gui->affected_y && !gui->affected_z) - { - FloatAutos *affected_x_autos; - FloatAutos *affected_y_autos; - FloatAutos *affected_z_autos; + if( !gui->affected_x && !gui->affected_y && !gui->affected_z ) { if(!gui->affected_track) return 0; + FloatAutos *affected_x_autos, *affected_y_autos, *affected_z_autos; + FloatAutos** autos = (FloatAutos**) gui->affected_track->automation->autos; + if( mwindow->edl->session->cwindow_operation == CWINDOW_CAMERA ) { + affected_x_autos = autos[AUTOMATION_CAMERA_X]; + affected_y_autos = autos[AUTOMATION_CAMERA_Y]; + affected_z_autos = autos[AUTOMATION_CAMERA_Z]; + } + else { + affected_x_autos = autos[AUTOMATION_PROJECTOR_X]; + affected_y_autos = autos[AUTOMATION_PROJECTOR_Y]; + affected_z_autos = autos[AUTOMATION_PROJECTOR_Z]; + } double position = mwindow->edl->local_session->get_selectionstart(1); int64_t track_position = gui->affected_track->to_units(position, 0); - - if(mwindow->edl->session->cwindow_operation == CWINDOW_CAMERA) - { - affected_x_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_CAMERA_X]; - affected_y_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_CAMERA_Y]; - affected_z_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_CAMERA_Z]; - } - else - { - affected_x_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_PROJECTOR_X]; - affected_y_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_PROJECTOR_Y]; - affected_z_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_PROJECTOR_Z]; + FloatAuto *prev_x = 0, *next_x = 0; + float new_x = affected_x_autos->get_value(track_position, PLAY_FORWARD, prev_x, next_x); + FloatAuto *prev_y = 0, *next_y = 0; + float new_y = affected_y_autos->get_value(track_position, PLAY_FORWARD, prev_y, next_y); + FloatAuto *prev_z = 0, *next_z = 0; + float new_z = affected_z_autos->get_value(track_position, PLAY_FORWARD, prev_z, next_z); + int zooming = gui->translating_zoom, created; + gui->affected_x = (FloatAuto*)gui->cwindow->calculate_affected_auto( + affected_x_autos, !zooming, &created, 0); + if( created ) { + gui->affected_x->set_value(new_x); + redraw_canvas = 1; } - - - if(gui->translating_zoom) - { - FloatAuto *previous = 0; - FloatAuto *next = 0; - float new_z = affected_z_autos->get_value( - track_position, - PLAY_FORWARD, - previous, - next); - gui->affected_z = - (FloatAuto*)gui->cwindow->calculate_affected_auto( - affected_z_autos, 1, &created, 0); - if(created) { - gui->affected_z->set_value(new_z); - redraw_canvas = 1; - } + gui->affected_y = (FloatAuto*)gui->cwindow->calculate_affected_auto( + affected_y_autos, !zooming, &created, 0); + if( created ) { + gui->affected_y->set_value(new_y); + redraw_canvas = 1; } - else - { - FloatAuto *previous = 0; - FloatAuto *next = 0; - float new_x = affected_x_autos->get_value( - track_position, - PLAY_FORWARD, - previous, - next); - previous = 0; - next = 0; - float new_y = affected_y_autos->get_value( - track_position, - PLAY_FORWARD, - previous, - next); - gui->affected_x = - (FloatAuto*)gui->cwindow->calculate_affected_auto( - affected_x_autos, 1, &created, 0); - if(created) { - gui->affected_x->set_value(new_x); - redraw_canvas = 1; - } - gui->affected_y = - (FloatAuto*)gui->cwindow->calculate_affected_auto( - affected_y_autos, 1, &created, 0); - if(created) { - gui->affected_y->set_value(new_y); - redraw_canvas = 1; - } + gui->affected_z = (FloatAuto*)gui->cwindow->calculate_affected_auto( + affected_z_autos, zooming, &created, 0); + if( created ) { + gui->affected_z->set_value(new_z); + redraw_canvas = 1; } - calculate_origin(); - if(gui->translating_zoom) - { + if( gui->translating_zoom ) { gui->center_z = gui->affected_z->get_value(); } - else - { + else { gui->center_x = gui->affected_x->get_value(); gui->center_y = gui->affected_y->get_value(); } @@ -3080,41 +3037,36 @@ int CWindowCanvas::test_bezier(int button_press, redraw = 1; } - if(gui->translating_zoom) - { - last_center_z = gui->affected_z->get_value(); + float x_val = gui->affected_x->get_value(); + float y_val = gui->affected_y->get_value(); + float z_val = gui->affected_z->get_value(); + + if( gui->translating_zoom ) { float z = gui->center_z + (cursor_y - gui->y_origin) / 128; if( z < 0 ) z = 0; - if(!EQUIV(last_center_z, z)) - { + if( !EQUIV(z_val, z) ) { rerender = 1; redraw = 1; redraw_canvas = 1; } gui->affected_z->set_value(z); } - else - { - last_center_x = gui->affected_x->get_value(); - last_center_y = gui->affected_y->get_value(); + else { float dx = cursor_x - gui->x_origin; float dy = cursor_y - gui->y_origin; // follow image, not camera - if(gui->current_operation == CWINDOW_CAMERA ) { - dx = -dx; dy = -dy; + if( gui->current_operation == CWINDOW_CAMERA ) { + dx = -dx / z_val; dy = -dy / z_val; } float x = gui->center_x + dx; float y = gui->center_y + dy; gui->affected_x->set_value(x); gui->affected_y->set_value(y); - if( !EQUIV(last_center_x, x) || !EQUIV(last_center_y, y) ) - { + if( !EQUIV(x_val, x) || !EQUIV(y_val, y) ) { rerender = 1; redraw = 1; redraw_canvas = 1; } - gui->affected_x->set_value(x); - gui->affected_y->set_value(y); } } diff --git a/cinelerra-5.1/cinelerra/filegif.C b/cinelerra-5.1/cinelerra/filegif.C index d694ff87..e2f14c3d 100644 --- a/cinelerra-5.1/cinelerra/filegif.C +++ b/cinelerra-5.1/cinelerra/filegif.C @@ -31,16 +31,6 @@ static int gif_err = 0; -#define GIF_ERR ,&gif_err -#define GifErrorString(s) Gif##ErrorString(gif_err) -#define GifLastError(s) gif_err - -const char *gifErrorString() -{ - static char msg[32]; - snprintf(msg, sizeof(msg), "Gif Error %d", GifLastError()); - return msg; -} FileGIF::FileGIF(Asset *asset, File *file) : FileList(asset, file, "GIFLIST", ".gif", FILE_GIF, FILE_GIF_LIST) @@ -113,9 +103,9 @@ int FileGIF::read_frame_header(char *path) static int input_func(GifFileType *gif_file, GifByteType *buffer, int bytes) { FileGIF *file = (FileGIF*)gif_file->UserData; - if(file->offset + bytes > file->size) bytes = file->size - file->offset; - if(bytes > 0) - { + if( file->offset + bytes > file->size ) + bytes = file->size - file->offset; + if( bytes > 0 ) { memcpy(buffer, file->data + file->offset, bytes); file->offset += bytes; } @@ -128,156 +118,108 @@ int FileGIF::read_frame(VFrame *output, VFrame *input) offset = 0; size = input->get_compressed_size(); - GifFileType *gif_file; - GifRowType *gif_buffer; - gif_file = DGifOpen(this, input_func GIF_ERR); - - - if(gif_file == 0) - { - eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString()); + GifFileType *gif_file = DGifOpen(this, input_func, &gif_err); + if( !gif_file ) { + eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString(gif_err)); return 1; } - gif_buffer = (GifRowType*)malloc(sizeof(GifRowType) * gif_file->SHeight); + + GifRowType *gif_buffer = (GifRowType*)malloc(sizeof(GifRowType) * gif_file->SHeight); int row_size = gif_file->SWidth * sizeof(GifPixelType); gif_buffer[0] = (GifRowType)malloc(row_size); - for(int i = 0; i < gif_file->SWidth; i++) - { + for( int i=0; iSWidth; ++i ) gif_buffer[0][i] = gif_file->SBackGroundColor; - } - - for(int i = 0; i < gif_file->SHeight; i++) - { + for( int i=0; iSHeight; ++i ) { gif_buffer[i] = (GifRowType)malloc(row_size); memcpy(gif_buffer[i], gif_buffer[0], row_size); } + int ret = 0, done = 0; GifRecordType record_type; - do - { - if(DGifGetRecordType(gif_file, &record_type) == GIF_ERROR) - { - eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString()); + while( !ret && !done ) { + if( DGifGetRecordType(gif_file, &record_type) == GIF_ERROR ) { + eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString(gif_err)); + ret = 1; break; } - switch(record_type) - { - case IMAGE_DESC_RECORD_TYPE: - { - if(DGifGetImageDesc(gif_file) == GIF_ERROR) - { - eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString()); - break; - } - - int row = gif_file->Image.Top; - int col = gif_file->Image.Left; - int width = gif_file->Image.Width; - int height = gif_file->Image.Height; - if(gif_file->Image.Left + gif_file->Image.Width > gif_file->SWidth || - gif_file->Image.Top + gif_file->Image.Height > gif_file->SHeight) - { - DGifCloseFile(gif_file GIF_ERR); - for(int k = 0; k < gif_file->SHeight; k++) - { - free(gif_buffer[k]); - } - free(gif_buffer); - return 1; - } - - if (gif_file->Image.Interlace) - { - static int InterlacedOffset[] = { 0, 4, 2, 1 }; - static int InterlacedJumps[] = { 8, 8, 4, 2 }; + switch( record_type ) { + case IMAGE_DESC_RECORD_TYPE: { + if( DGifGetImageDesc(gif_file) == GIF_ERROR ) { + eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString(gif_err)); + break; + } + int row = gif_file->Image.Top; + int col = gif_file->Image.Left; + int width = gif_file->Image.Width; + int height = gif_file->Image.Height; + int ret = 0; + if( gif_file->Image.Left + gif_file->Image.Width > gif_file->SWidth || + gif_file->Image.Top + gif_file->Image.Height > gif_file->SHeight ) + ret = 1; + if( !ret && gif_file->Image.Interlace ) { + static int InterlacedOffset[] = { 0, 4, 2, 1 }; + static int InterlacedJumps[] = { 8, 8, 4, 2 }; /* Need to perform 4 passes on the images: */ - for (int i = 0; i < 4; i++) - { - for (int j = row + InterlacedOffset[i]; - j < row + height; - j += InterlacedJumps[i]) - { - if (DGifGetLine(gif_file, - &gif_buffer[j][col], - width) == GIF_ERROR) - { - DGifCloseFile(gif_file GIF_ERR); - for(int k = 0; k < gif_file->SHeight; k++) - { - free(gif_buffer[k]); - } - free(gif_buffer); - return 1; - } - } + for( int i=0; i<4; ++i ) { + int j = row + InterlacedOffset[i]; + for( ; !ret && jSHeight; k++) - { - free(gif_buffer[k]); - } - free(gif_buffer); - return 1; - } - } + } + else { + for( int i=0; !ret && iSBackGroundColor; - ColorMapObject *color_map = (gif_file->Image.ColorMap - ? gif_file->Image.ColorMap - : gif_file->SColorMap); - if(!color_map) - { - DGifCloseFile(gif_file GIF_ERR); - for(int k = 0; k < gif_file->SHeight; k++) - { - free(gif_buffer[k]); + break; } + case EXTENSION_RECORD_TYPE: { + int ExtFunction = 0; + GifByteType *ExtData = 0; + if( DGifGetExtension(gif_file, &ExtFunction, &ExtData) == GIF_ERROR ) + ret = 1; + while( !ret && ExtData ) { + if( DGifGetExtensionNext(gif_file, &ExtData) == GIF_ERROR ) + ret = 1; + } + break; } + case TERMINATE_RECORD_TYPE: + done = 1; + break; + default: + break; } - free(gif_buffer); - return 1; } - int screen_width = gif_file->SWidth; - int screen_height = gif_file->SHeight; - for(int i = 0; i < screen_height; i++) - { - GifRowType gif_row = gif_buffer[i]; - unsigned char *out_ptr = output->get_rows()[i]; - for(int j = 0; j < screen_width; j++) - { - GifColorType *color_map_entry = &color_map->Colors[gif_row[j]]; - *out_ptr++ = color_map_entry->Red; - *out_ptr++ = color_map_entry->Green; - *out_ptr++ = color_map_entry->Blue; + ColorMapObject *color_map = 0; + if( !ret ) { + //int background = gif_file->SBackGroundColor; + color_map = gif_file->Image.ColorMap; + if( !color_map ) color_map = gif_file->SColorMap; + if( !color_map ) ret = 1; + } + if( !ret ) { + int screen_width = gif_file->SWidth; + int screen_height = gif_file->SHeight; + for( int i=0; iget_rows()[i]; + for( int j=0; jColors[gif_row[j]]; + *out_ptr++ = color_map_entry->Red; + *out_ptr++ = color_map_entry->Green; + *out_ptr++ = color_map_entry->Blue; + } } } - - - for(int k = 0; k < gif_file->SHeight; k++) - { + for( int k=0; kSHeight; ++k ) free(gif_buffer[k]); - } free(gif_buffer); - DGifCloseFile(gif_file GIF_ERR); - return 0; + DGifCloseFile(gif_file, &gif_err); + return ret; } diff --git a/cinelerra-5.1/cinelerra/mwindowgui.C b/cinelerra-5.1/cinelerra/mwindowgui.C index 53677b42..7cdd58f7 100644 --- a/cinelerra-5.1/cinelerra/mwindowgui.C +++ b/cinelerra-5.1/cinelerra/mwindowgui.C @@ -932,9 +932,9 @@ int MWindowGUI::visible(int64_t x1, int64_t x2, int64_t view_x1, int64_t view_x2 } -void MWindowGUI::show_message(const char *message, int color) +void MWindowGUI::show_message(const char *message, int msg_color, int bar_color) { - statusbar->show_message(message, color); + statusbar->show_message(message, msg_color, bar_color); } void MWindowGUI::update_default_message() diff --git a/cinelerra-5.1/cinelerra/mwindowgui.h b/cinelerra-5.1/cinelerra/mwindowgui.h index 592e3876..68e0a4f7 100644 --- a/cinelerra-5.1/cinelerra/mwindowgui.h +++ b/cinelerra-5.1/cinelerra/mwindowgui.h @@ -164,7 +164,7 @@ public: int menu_w(); int menu_h(); // Draw on the status bar only. - void show_message(const char *message, int color=-1); + void show_message(const char *message, int msg_color=-1, int box_color=-1); void update_default_message(); void reset_default_message(); void default_message(); diff --git a/cinelerra-5.1/cinelerra/statusbar.C b/cinelerra-5.1/cinelerra/statusbar.C index 6a0d6221..13169c87 100644 --- a/cinelerra-5.1/cinelerra/statusbar.C +++ b/cinelerra-5.1/cinelerra/statusbar.C @@ -103,13 +103,13 @@ void StatusBar::resize_event() flash(0); } -void StatusBar::show_message(const char *text, int color) +void StatusBar::show_message(const char *text, int msg_color, int box_color) { int mx = mwindow->theme->mstatus_message_x; int my = mwindow->theme->mstatus_message_y; int tx = status_text->get_x(), th = status_text->get_h(); - if( color >= 0 ) { - set_color(color); + if( box_color >= 0 ) { + set_color(box_color); int bb = th/4, bh = th - bb*2; draw_box(mx+bb,my+bb, bh,bh); flash(mx,my, th,th); mx += 5; @@ -121,10 +121,12 @@ void StatusBar::show_message(const char *text, int color) flash(mx,my, th,th); status_text->reposition_window(mx, my); } - color = mwindow->theme->message_normal; - status_text->set_color(color); + if( msg_color < 0 ) + msg_color = mwindow->theme->message_normal; + status_text->set_color(msg_color); status_text->update(text); } + void StatusBar::reset_default_message() { status_color = -1; diff --git a/cinelerra-5.1/cinelerra/statusbar.h b/cinelerra-5.1/cinelerra/statusbar.h index eac56594..c1e55317 100644 --- a/cinelerra-5.1/cinelerra/statusbar.h +++ b/cinelerra-5.1/cinelerra/statusbar.h @@ -34,7 +34,7 @@ public: StatusBar(MWindow *mwindow, MWindowGUI *gui); ~StatusBar(); - void show_message(const char *text, int color=-1); + void show_message(const char *text, int msg_color=-1, int box_color=-1); void update_default_message(); void reset_default_message(); void default_message(); diff --git a/cinelerra-5.1/cinelerra/trackcanvas.C b/cinelerra-5.1/cinelerra/trackcanvas.C index 6e6eb3b2..27eede52 100644 --- a/cinelerra-5.1/cinelerra/trackcanvas.C +++ b/cinelerra-5.1/cinelerra/trackcanvas.C @@ -5471,11 +5471,11 @@ double TrackCanvas::time_visible() } -void TrackCanvas::show_message(Auto *current, int color, const char *fmt, ...) +void TrackCanvas::show_message(Auto *current, int box_color, const char *fmt, ...) { char string[BCTEXTLEN]; char *cp = string, *ep = cp + sizeof(string)-1; - if( color >= 0 ) { + if( box_color >= 0 ) { cp += snprintf(string, ep-cp, "%-8s ", FloatAuto::curve_name(((FloatAuto*)current)->curve_mode)); } @@ -5491,7 +5491,7 @@ void TrackCanvas::show_message(Auto *current, int color, const char *fmt, ...) va_start(ap, fmt); vsnprintf(cp, ep-cp, fmt, ap); va_end(ap); - gui->show_message(string, color); + gui->show_message(string, -1, box_color); } // Patchbay* TrackCanvas::get_patchbay() diff --git a/cinelerra-5.1/cinelerra/trackcanvas.h b/cinelerra-5.1/cinelerra/trackcanvas.h index 578ebf26..4b9c4eba 100644 --- a/cinelerra-5.1/cinelerra/trackcanvas.h +++ b/cinelerra-5.1/cinelerra/trackcanvas.h @@ -360,7 +360,7 @@ public: int update_drag_toggleauto(int cursor_x, int cursor_y); int update_drag_auto(int cursor_x, int cursor_y); int update_drag_pluginauto(int cursor_x, int cursor_y); - void show_message(Auto *current, int color, const char *fmt, ...); + void show_message(Auto *current, int box_color, const char *fmt, ...); // Update status bar to reflect drag operation void update_drag_caption(); diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index f3314df1..cc4f0fb4 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -225,10 +225,9 @@ PKG_3RD([flac],[auto], [ include ]) PKG_3RD([giflib],[yes], - [giflib-5.1.4], - [ lib/.libs/libgif.a \ - util/libgetarg.a ], - [ lib ]) + [giflib-5.1.6], + [ libgif.a ], + [ . ]) PKG_3RD([ilmbase],[auto], [ilmbase-2.2.1], @@ -436,10 +435,30 @@ AC_DEFUN([REQUIRE_PROG], [ fi ]) -# Checks for programs. +## arch dep tests +ARCH=`uname -m` +I86=`expr "x$ARCH" : 'xi[346]86.*'` +X86=`expr "x$ARCH" : 'x..._64*'` + +if test "x$I86$X86" != "x00" ; then + # Checks for ix86 programs. + REQUIRE_PROG(NASM, [nasm]) + # libx264 nasm fix + AC_MSG_CHECKING([nasm x264 compatible]) + echo "vmovdqa32 [[eax]]{k1}{z}, zmm0" > conftest.asm + nasm conftest.asm -o conftest.o > /dev/null 2>&1 + if test $? != 0 ; then + AC_MSG_RESULT([no]) + AC_MSG_WARN([libx264 built without assembly code]) + X264_CFG_PARAMS="$X264_CFG_PARAMS --disable-asm" + else + AC_MSG_RESULT([yes]) + fi + rm -f conftest.asm conftest.o + REQUIRE_PROG(YASM, [yasm]) +fi +## end arch dep tests -REQUIRE_PROG(NASM, [nasm]) -REQUIRE_PROG(YASM, [yasm]) REQUIRE_PROG(OBJCOPY, [objcopy]) if test "x$FATAL_ERROR" != "x"; then AC_MSG_ERROR("fatal eror.") @@ -447,19 +466,6 @@ fi CHECK_PROG(PACTL, [pactl]) WANT_PACTL=$PROG_PACTL -# libx264 nasm fix -AC_MSG_CHECKING([nasm x264 compatible]) -echo "vmovdqa32 [[eax]]{k1}{z}, zmm0" > conftest.asm -nasm conftest.asm -o conftest.o > /dev/null 2>&1 -if test $? != 0 ; then - AC_MSG_RESULT([no]) - AC_MSG_WARN([libx264 built without assembly code]) - X264_CFG_PARAMS="$X264_CFG_PARAMS --disable-asm" -else - AC_MSG_RESULT([yes]) -fi -rm -f conftest.asm conftest.o - AC_CHECK_DECL([X_HAVE_UTF8_STRING],,[no_utf=yes],[#include ]) if test "$no_utf" = "yes"; then AC_MSG_ERROR([Cinelerra requires utf8 support in X Windows.]) diff --git a/cinelerra-5.1/doc/shortcuts.html b/cinelerra-5.1/doc/shortcuts.html index b6367342..f55a469d 100644 --- a/cinelerra-5.1/doc/shortcuts.html +++ b/cinelerra-5.1/doc/shortcuts.html @@ -1884,6 +1884,18 @@
Reset projector + +
+ Left mouse + Shift + Camera enabled - zooms in/out + + +
+ Left mouse + Shift + Projector enabled - zooms in/out +
F1 diff --git a/cinelerra-5.1/guicast/Makefile b/cinelerra-5.1/guicast/Makefile index 15442cfb..201c5a40 100644 --- a/cinelerra-5.1/guicast/Makefile +++ b/cinelerra-5.1/guicast/Makefile @@ -95,7 +95,7 @@ $(shell echo $(OBJS) > $(OBJDIR)/objs) all: $(OUTPUT) $(UTILS) $(BCXFER): bccmdl.py bcxfer.C bcxfer.h - python3 < ./bccmdl.py + python < ./bccmdl.py +$(MAKE) -C xfer $(OUTPUT): $(OBJS) $(BCXFER) diff --git a/cinelerra-5.1/thirdparty/Makefile b/cinelerra-5.1/thirdparty/Makefile index 2296e4c2..47d6314f 100644 --- a/cinelerra-5.1/thirdparty/Makefile +++ b/cinelerra-5.1/thirdparty/Makefile @@ -167,7 +167,7 @@ audiofile.cfg_params?=--enable-shared=no audiofile.mak_params?=LIBS="-lm -lstdc++" flac.cfg_params?= --enable-shared=no flac.cflags?="$(call inc_path,libogg,include) $(call ld_path,libogg,src/.libs)" -giflib.cfg_params?=--enable-shared=no +giflib.cfg_params=echo "exec true" > ./configure; chmod +x ./configure; ilmbase.cfg_vars= CFLAGS+=" -Wno-narrowing" CXXFLAGS+=" -Wno-narrowing" ilmbase.cfg_params?=--prefix=$(call bld_path,ilmbase,usr) ilmbase.mak_params?=; $(MAKE) -C ilmbase* install; cd $(call bld_path,ilmbase); ln -sf lib64 usr/lib diff --git a/cinelerra-5.1/thirdparty/src/giflib-5.1.4.tar.xz b/cinelerra-5.1/thirdparty/src/giflib-5.1.4.tar.xz deleted file mode 100644 index 86cae55b..00000000 Binary files a/cinelerra-5.1/thirdparty/src/giflib-5.1.4.tar.xz and /dev/null differ diff --git a/cinelerra-5.1/thirdparty/src/giflib-5.1.6.patch1 b/cinelerra-5.1/thirdparty/src/giflib-5.1.6.patch1 new file mode 100644 index 00000000..ba7225d7 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/giflib-5.1.6.patch1 @@ -0,0 +1,13 @@ +--- a/Makefile 2019-02-12 07:26:13.000000000 -0700 ++++ b/Makefile 2019-02-24 17:51:20.557618626 -0700 +@@ -7,8 +7,8 @@ + + # + CC = gcc +-OFLAGS = -O0 -g +-#OFLAGS = -O2 -fwhole-program ++#OFLAGS = -O0 -g ++OFLAGS = -O2 -g + CFLAGS = -std=gnu99 -fPIC -Wall -Wno-format-truncation $(OFLAGS) + LDFLAGS = -g + diff --git a/cinelerra-5.1/thirdparty/src/giflib-5.1.6.tar.xz b/cinelerra-5.1/thirdparty/src/giflib-5.1.6.tar.xz new file mode 100644 index 00000000..7699889c Binary files /dev/null and b/cinelerra-5.1/thirdparty/src/giflib-5.1.6.tar.xz differ