--- /dev/null
+diff --git a/cinelerra-5.1/Makefile.devel b/cinelerra-5.1/Makefile.devel
+index 55313308..ad671f57 100644
+--- a/cinelerra-5.1/Makefile.devel
++++ b/cinelerra-5.1/Makefile.devel
+@@ -4,7 +4,7 @@ TOPDIR := $(CURDIR)
+ CFLAGS ?= -ggdb
+ export CFLAGS_ := $(CFLAGS)
+
+-cpus:=$(shell grep -c "^proc" /proc/cpuinfo)
++cpus:=$(shell sysctl -n hw.ncpu)
+ jobs:=-j$(shell echo $$(($(cpus) + $(cpus)/2 +2)))
+ MAKEJ := $(MAKE) $(jobs)
+
+diff --git a/cinelerra-5.1/blds/bsd.bld b/cinelerra-5.1/blds/bsd.bld
+index 165cc00b..b6c5f96b 100755
+--- a/cinelerra-5.1/blds/bsd.bld
++++ b/cinelerra-5.1/blds/bsd.bld
+@@ -2,18 +2,21 @@
+ #use: patch -p2 < bsd.patch
+ export CONFIG_SHELL=/bin/bash
+ export MAKE=gmake
+-export C_INCLUDE_PATH=/usr/local/include
++export C_INCLUDE_PATH=/usr/local/include:/usr/X11R7/include:/usr/pkg/include:/usr/pkg/include/ffmpeg4
+ export CPLUS_INCLUDE_PATH=/usr/local/include
+ export LIBRARY_PATH=/usr/local/lib
++export LDFLAGS="-L/usr/X11R7/lib -L/usr/pkg/lib"
++export CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/ffmpeg4 -pthread -I/usr/pkg/include -I/usr/pkg/include/OpenEXR -I/usr/pkg/include -I/usr/pkg/include/Imath"
++
+ alias make=gmake
+ ( ./autogen.sh
+- BSD=1 CC=clang CXX=clang++ CFLAGS="-g -O2 -DFFMPEG3" \
++ BSD=1 CC=gcc CXX=g++ CFLAGS="-g -fpermissive -O2 -DFFMPEG3" \
+ ./configure --with-single-user \
+ --disable-static-build --without-lv2 --disable-lame --disable-twolame \
+ --with-oss --without-alsa --without-firewire --without-dv --without-dvb \
+ --without-video4linux2 --without-xxf86vm --without-ladspa-build \
+ --without-libzmpeg --without-commercial --without-thirdparty \
+- --without-vaapi --without-vdpau --without-shuttle --without-shuttle-usb \
++ --without-vaapi --without-openexr --with-jobs=4 --without-vdpau --without-shuttle --without-shuttle-usb \
+ --without-x10tv --without-wintv
+ gmake
+ gmake install ) 2>&1 | tee log
+diff --git a/cinelerra-5.1/cinelerra/Makefile b/cinelerra-5.1/cinelerra/Makefile
+index 1c10fc03..8bfbc754 100644
+--- a/cinelerra-5.1/cinelerra/Makefile
++++ b/cinelerra-5.1/cinelerra/Makefile
+@@ -435,7 +435,7 @@ LIBS := $(LIBRARIES)
+ ifeq ($(WANT_CIN_3RDPARTY),no)
+ LIBS += -lavcodec -lavdevice -lavfilter -lavformat -lavutil
+ LIBS += -lswresample -lswscale
+-LIBS += -lintl -liconv
++LIBS += -lintl -lpng16
+ LIBS += -lexecinfo
+
+ LIBS += $(shared_libs)
+@@ -500,14 +500,15 @@ CFLAGS += -DUSE_ALPHA
+ else
+
+ LDFLAGS1 = -Wl,-export-dynamic -g
+-LDFLAGS2 = $(LDFLAGS)
++LDFLAGS2 = $(LDFLAGS)
++LDFLAGS3 = -L/usr/X11R7/lib -L/usr/pkg/lib/ffmpeg4 -L/usr/pkg/lib
+ LINKER = $(CXX) -o $(OUTPUT)
+
+ endif
+
+ $(shell mkdir -p $(OBJDIR))
+ $(shell echo $(CFLAGS) > $(OBJDIR)/c_flags)
+-$(shell echo $(LDFLAGS1) $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBS) $(LDFLAGS2) > $(OBJDIR)/objs)
++$(shell echo $(LDFLAGS3) $(LDFLAGS1) $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBS) $(LDFLAGS2) > $(OBJDIR)/objs)
+
+ all: $(OUTPUT) $(CUTADS) $(BDWRITE) $(LV2UI)
+
+@@ -517,7 +518,7 @@ all: $(OUTPUT) $(CUTADS) $(BDWRITE) $(LV2UI)
+ $(OUTPUT): $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBRARIES)
+ $(LINKER) `cat $(OBJDIR)/objs`
+ $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(OUTPUT) $(OUTPUT_G))
+- $(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
++ #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
+ ln -f -s ../bin/$(WANT_CIN) ci
+
+ ifneq ($(WANT_COMMERCIAL),no)
+@@ -535,7 +536,7 @@ endif
+
+ $(BDWRITE): $(BDWOBJS) $(LIBRARIES)
+ @echo $(CXX) -o $@ $(BDWOBJS)
+- @$(CXX) $(CFLAGS) -pthread -o $@ $(BDWOBJS) $(LIBS)
++ @$(CXX) $(CFLAGS) -pthread -o $@ $(BDWOBJS) $(LIBS) $(LDFLAGS3)
+ $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(BDWRITE) $(BDWRITE).debuginfo)
+ $(if $(findstring -ggdb,$(CFLAGS)),,strip $(BDWRITE))
+
+diff --git a/cinelerra-5.1/cinelerra/bdcreate.C b/cinelerra-5.1/cinelerra/bdcreate.C
+index 150f835d..fc313c72 100644
+--- a/cinelerra-5.1/cinelerra/bdcreate.C
++++ b/cinelerra-5.1/cinelerra/bdcreate.C
+@@ -24,8 +24,12 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/stat.h>
+-#include <sys/statfs.h>
++#include <sys/param.h>
++#include <sys/mount.h>
++
++#ifndef statfs
++#define statfs statvfs
++#endif
+
+ // BD Creation
+
+diff --git a/cinelerra-5.1/cinelerra/bdwrite.C b/cinelerra-5.1/cinelerra/bdwrite.C
+index 6a2b4ca3..78cf9bef 100644
+--- a/cinelerra-5.1/cinelerra/bdwrite.C
++++ b/cinelerra-5.1/cinelerra/bdwrite.C
+@@ -38,7 +38,7 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <endian.h>
++#include <sys/endian.h>
+ #include <limits.h>
+ #include <sys/stat.h>
+ // work arounds (centos)
+diff --git a/cinelerra-5.1/cinelerra/ci b/cinelerra-5.1/cinelerra/ci
+index bc987833..22858982 120000
+--- a/cinelerra-5.1/cinelerra/ci
++++ b/cinelerra-5.1/cinelerra/ci
+@@ -1 +1 @@
+-../bin/cinelerra
+\ No newline at end of file
++../bin/cin
+\ No newline at end of file
+diff --git a/cinelerra-5.1/cinelerra/cutads.C b/cinelerra-5.1/cinelerra/cutads.C
+index ac58d56a..f6690cf2 100644
+--- a/cinelerra-5.1/cinelerra/cutads.C
++++ b/cinelerra-5.1/cinelerra/cutads.C
+@@ -23,14 +23,6 @@
+ using namespace std;
+ #define fail(s) do { printf("fail %s%s:%d\n",__func__,#s,__LINE__); return 1; } while(0)
+
+-/* missing from system headers, no /usr/include <linux/ioprio.h>
+- * IOPRIO_WHO_PROCESS, IOPRIO_CLASS_SHIFT, IOPRIO_CLASS_IDLE */
+-enum { IOPRIO_CLASS_NONE, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE, };
+-#define IO_CLASS(n) (((int)(n)) << 13)
+-#define IO_WHO_PROCESS 1
+-#include <sys/syscall.h>
+-#include <asm/unistd.h>
+-
+ // commercial edge detection:
+ // must have audio < min_audio
+ // and within +- check_margin seconds of low audio
+@@ -55,11 +47,6 @@ class Video;
+ class Audio;
+ class Scan;
+
+-static int ioprio_set(int which, int who, int ioprio)
+-{
+- return syscall(SYS_ioprio_set, which, who, ioprio);
+-}
+-
+ static inline int clip(int v, int mn, int mx)
+ {
+ return v<mn ? mn : v>mx ? mx : v;
+@@ -617,7 +604,6 @@ class Scan
+ const char *asset_path;
+ static void set_priority(int pr, int io) {
+ setpriority(PRIO_PROCESS, 0, pr); // lowest cpu priority
+- ioprio_set(IO_WHO_PROCESS, 0, IO_CLASS(io));
+ }
+ class low_priority { public:
+ low_priority() { set_priority(19, IOPRIO_CLASS_IDLE); }
+diff --git a/cinelerra-5.1/cinelerra/dvdcreate.C b/cinelerra-5.1/cinelerra/dvdcreate.C
+index 6ecb270b..822f0665 100644
+--- a/cinelerra-5.1/cinelerra/dvdcreate.C
++++ b/cinelerra-5.1/cinelerra/dvdcreate.C
+@@ -24,9 +24,12 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/stat.h>
+-#include <sys/statfs.h>
++#include <sys/param.h>
++#include <sys/mount.h>
+
++#ifndef statfs
++#define statfs statvfs
++#endif
+
+ #define DVD_PAL_4x3 0
+ #define DVD_PAL_16x9 1
+diff --git a/cinelerra-5.1/cinelerra/exportedl.C b/cinelerra-5.1/cinelerra/exportedl.C
+index cac86bcf..0af68abd 100644
+--- a/cinelerra-5.1/cinelerra/exportedl.C
++++ b/cinelerra-5.1/cinelerra/exportedl.C
+@@ -42,6 +42,7 @@
+
+ #include <ctype.h>
+ #include <string.h>
++#include <libgen.h>
+
+ ExportEDLAsset::ExportEDLAsset(MWindow *mwindow, EDL *edl)
+ {
+diff --git a/cinelerra-5.1/cinelerra/file.C b/cinelerra-5.1/cinelerra/file.C
+index 03941d9a..694c36bb 100644
+--- a/cinelerra-5.1/cinelerra/file.C
++++ b/cinelerra-5.1/cinelerra/file.C
+@@ -1620,7 +1620,14 @@ int File::record_fd()
+ void File::get_exe_path(char *result, char *bnp)
+ {
+ // Get executable path, basename
++#ifdef __FreeBSD__
++ char exe_path[BCTEXTLEN];
++ sprintf(exe_path,"/proc/%d/file",getpid());
++ int len = readlink(exe_path, result, BCTEXTLEN-1);
++#endif
++#if defined __NetBSD__ || defined __linux__ || defined __TERMUX__
+ int len = readlink("/proc/self/exe", result, BCTEXTLEN-1);
++#endif
+ if( len >= 0 ) {
+ result[len] = 0;
+ char *ptr = strrchr(result, '/');
+diff --git a/cinelerra-5.1/cinelerra/indexfile.C b/cinelerra-5.1/cinelerra/indexfile.C
+index 977ad1cb..29a93ad0 100644
+--- a/cinelerra-5.1/cinelerra/indexfile.C
++++ b/cinelerra-5.1/cinelerra/indexfile.C
+@@ -70,9 +70,7 @@
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#ifdef HAVE_ISOFS
+-#include <linux/iso_fs.h>
+-#endif
++#include <isofs/cd9660/iso.h>
+
+ // check for isofs volume_id for dvd/cdrom
+
+diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac
+index c7394b7b..4f965048 100644
+--- a/cinelerra-5.1/configure.ac
++++ b/cinelerra-5.1/configure.ac
+@@ -22,14 +22,25 @@ CFG_CFLAGS+=" -Wno-unused-result"
+ CFG_CFLAGS+=" -Wno-stringop-overflow"
+ CFG_CFLAGS+=" -Wno-format-truncation"
+ CFG_CFLAGS+=" -Wno-format-overflow"
++CFG_CFLAGS+=" -Wno-unknown-warning-option"
+ CFG_CFLAGS+=" -Wno-parentheses"
+ CFG_CFLAGS+=" -Wno-stringop-truncation"
++CFG_CFLAGS+=" -Wno-gnu-designator"
++CFG_CFLAGS+=" -Wno-missing-braces"
++CFG_CFLAGS+=" -Wno-overloaded-virtual"
++CFG_CFLAGS+=" -Wno-self-assign-field"
++CFG_CFLAGS+=" -Wno-sometimes-uninitialized"
++CFG_CFLAGS+=" -Wno-tautological-pointer-compare"
++CFG_CFLAGS+=" -Wno-unused-function"
++CFG_CFLAGS+=" -Wno-unused-private-field"
++CFG_CFLAGS+=" -Wno-infinite-recursion"
+ CFG_CFLAGS+=" -D__STDC_CONSTANT_MACROS"
+ CFG_CFLAGS+=" -D__STDC_LIMIT_MACROS"
+ CFG_CFLAGS+=" -DPNG_SKIP_SETJMP_CHECK=1"
+ CFG_CFLAGS+=" -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
+-CFG_CFLAGS+=" -I/usr/include -I/usr/local/include"
+-CFG_CFLAGS+=" -I/usr/include/freetype2 -I/usr/local/include/freetype2"
++CFG_CFLAGS+=" -I/usr/pkg/include/ffmpeg4 -I/usr/pkg/include/uuid"
++CFG_CFLAGS+=" -I/usr/include -I/usr/local/include -I/usr/pkg/include/ -I/usr/X11R7/include"
++CFG_CFLAGS+=" -I/usr/X11R7/include/freetype2/ -I/usr/include/freetype2 -I/usr/local/include/freetype2"
+ CFG_CFLAGS+=" -I/data/data/com.termux/files/usr/include/freetype2"
+ CFG_CFLAGS+=" -I/usr/include/uuid -I/usr/local/include/uuid"
+ CFG_CFLAGS+=" -I/data/data/com.termux/files/usr/include/uuid -I/usr/local/include/uuid"
+@@ -1178,6 +1189,13 @@ if test "x$CFG_LDFLAGS" != "x" ; then
+ echo ""
+ fi
+
++if test "x$BSD" != "x" ; then
++ echo "CFLAGS += -DNO_PRCTL"
++ echo "CFLAGS += -DNO_TID"
++ echo "CFLAGS += -DNO_GDB"
++ echo "CFLAGS += -DNO_BTRACE"
++ echo "CFLAGS += -DNO_CTX"
++fi
+ if test "x$CYGWIN" != "x" ; then
+ echo 'FF_PATH ?= /usr/local'
+ echo 'LDFLAGS += -L$(FF_PATH)/lib'
+@@ -1191,12 +1209,7 @@ if test "x$CYGWIN" != "x" ; then
+ echo "CFLAGS += -DNO_XSELECT"
+ echo ""
+ else
+- LDFLAGS+=" -z noexecstack"
+-fi
+-if test "x$BSD" != "x" ; then
+- echo "CFLAGS += -DNO_PRCTL"
+- echo "CFLAGS += -DNO_TID"
+- echo "CFLAGS += -DNO_GDB"
++ LDFLAGS+=" -L/usr/X11R7/lib, -L/usr/pkg/lib, -z noexecstack"
+ fi
+
+ if test "x$WANT_X264_HIDEPTH" = "xyes" ; then
+diff --git a/cinelerra-5.1/db/tdb.h b/cinelerra-5.1/db/tdb.h
+index 24c8617c..74881ff0 100644
+--- a/cinelerra-5.1/db/tdb.h
++++ b/cinelerra-5.1/db/tdb.h
+@@ -33,7 +33,7 @@ inline void operator delete[](void *t,size_t n) { free(t); }
+ #endif
+
+ #define ZMEDIA
+-#define ZFUTEX
++//#define ZFUTEX
+ #ifdef ZFUTEX
+ #include <unistd.h>
+ #include <endian.h>
+diff --git a/cinelerra-5.1/guicast/Makefile b/cinelerra-5.1/guicast/Makefile
+index 57cfb21f..e16d13a6 100644
+--- a/cinelerra-5.1/guicast/Makefile
++++ b/cinelerra-5.1/guicast/Makefile
+@@ -5,6 +5,10 @@ ifeq ($(OBJDIR), i686)
+ BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B i386 -I binary -O elf32-i386\""
+ endif
+
++ifeq ($(OBJDIR), i386)
++BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B i386 -I binary -O elf32-i386\""
++endif
++
+ ifeq ($(OBJDIR), x86_64)
+ BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B i386 -I binary -O elf64-x86-64\""
+ endif
+@@ -118,7 +122,7 @@ $(OBJDIR)/pngtoh: pngtoh.c
+ $(CC) -O2 pngtoh.c -o $(OBJDIR)/pngtoh
+
+ $(OBJDIR)/pngtoraw: pngtoraw.c
+- $(CC) -O2 pngtoraw.c -o $(OBJDIR)/pngtoraw -lpng -lz
++ $(CC) -O2 pngtoraw.c -o $(OBJDIR)/pngtoraw `pkg-config --libs libpng` -lz
+
+ clean:
+ rm -rf $(OBJDIR)
+diff --git a/cinelerra-5.1/guicast/bclistbox.h b/cinelerra-5.1/guicast/bclistbox.h
+index ce34ffc4..0e38913d 100644
+--- a/cinelerra-5.1/guicast/bclistbox.h
++++ b/cinelerra-5.1/guicast/bclistbox.h
+@@ -187,7 +187,9 @@ public:
+
+ // take_focus - used by the suggestion box to keep it from taking focus from the
+ // textbox
+- int activate(int take_focus = 1);
++ int activate() { return activate(1); }
++ int activate(int take_focus);
++
+ int activate(int x, int y, int w=-1, int h=-1);
+ int deactivate();
+ int is_active();
+diff --git a/cinelerra-5.1/guicast/bcpan.h b/cinelerra-5.1/guicast/bcpan.h
+index 40f5971f..73d47586 100644
+--- a/cinelerra-5.1/guicast/bcpan.h
++++ b/cinelerra-5.1/guicast/bcpan.h
+@@ -93,7 +93,8 @@ public:
+ int &stick_x,
+ int &stick_y);
+ static int rdtoxy(int &x, int &y, int a, int virtual_r);
+- int activate(int popup_x = -1, int popup_y = -1);
++ int activate(int popup_x, int popup_y);
++ int activate() { return activate(-1,-1); }
+ int deactivate();
+ float* get_values();
+
+diff --git a/cinelerra-5.1/guicast/bcresources.C b/cinelerra-5.1/guicast/bcresources.C
+index cdac6305..de912dd1 100644
+--- a/cinelerra-5.1/guicast/bcresources.C
++++ b/cinelerra-5.1/guicast/bcresources.C
+@@ -39,6 +39,7 @@
+ #include <iconv.h>
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
++#include <sys/sysctl.h>
+ #include <X11/extensions/XShm.h>
+ #include <fontconfig/fontconfig.h>
+ #include <fontconfig/fcfreetype.h>
+@@ -298,23 +299,12 @@ int BC_Resources::machine_cpus = 1;
+
+ int BC_Resources::get_machine_cpus()
+ {
+- int cpus = 1;
+- FILE *proc = fopen("/proc/cpuinfo", "r");
+- if( proc ) {
+- char string[BCTEXTLEN], *cp;
+- while(!feof(proc) && fgets(string, sizeof(string), proc) ) {
+- if( !strncasecmp(string, "processor", 9) &&
+- (cp = strchr(string, ':')) != 0 ) {
+- int n = atol(cp+1) + 1;
+- if( n > cpus ) cpus = n;
+- }
+- else if( !strncasecmp(string, "cpus detected", 13) &&
+- (cp = strchr(string, ':')) != 0 )
+- cpus = atol(cp+1);
+- }
+- fclose(proc);
+- }
+- return cpus;
++ int mib[2], ncpu;
++ size_t len = sizeof(ncpu);
++ mib[0] = CTL_HW;
++ mib[1] = HW_NCPU;
++ if( sysctl(mib, 2, &ncpu, &len, 0, 0) ) ncpu = 1;
++ return ncpu;
+ }
+
+ void BC_Resources::new_vframes(int n, VFrame *vframes[], ...)
+@@ -367,8 +357,8 @@ BC_Resources::BC_Resources(float x_scale, float y_scale)
+ BC_WindowBase::resources = this;
+ synchronous = 0;
+ vframe_shm = 0;
+- use_shm = -1;
+- shm_reply = 1;
++ use_shm = 0;
++ shm_reply = 0;
+
+ if( x_scale <= 0 ) x_scale = 1;
+ if( y_scale <= 0 ) y_scale = x_scale;
+diff --git a/cinelerra-5.1/guicast/bcsignals.C b/cinelerra-5.1/guicast/bcsignals.C
+index 858ba409..f43a64b9 100644
+--- a/cinelerra-5.1/guicast/bcsignals.C
++++ b/cinelerra-5.1/guicast/bcsignals.C
+@@ -403,70 +403,74 @@ const char* BC_Signals::sig_to_str(int number)
+ #include <sys/wait.h>
+ #include "thread.h"
+
++#define SC_(r)mc_##r
++
++#if 0
+ #if __i386__
+-#define IP eip
+-#define sigregs_t sigcontext
++#define IP SC_(eip)
++#define sigregs_t mcontext_t
+
+ static void reg_dump(FILE *fp,sigregs_t *rp)
+ {
+ fprintf(fp,"REGS:\n");
+- fprintf(fp," gs: %04x:%04x\n", rp->gs,rp->__gsh);
+- fprintf(fp," fs: %04x:%04x\n", rp->fs,rp->__fsh);
+- fprintf(fp," es: %04x:%04x\n", rp->es,rp->__esh);
+- fprintf(fp," ds: %04x:%04x\n", rp->ds,rp->__dsh);
+- fprintf(fp," edi: %14p %d\n", (void*)rp->edi,rp->edi);
+- fprintf(fp," esi: %14p %d\n", (void*)rp->esi,rp->esi);
+- fprintf(fp," ebp: %14p %d\n", (void*)rp->ebp,rp->ebp);
+- fprintf(fp," esp: %14p %d\n", (void*)rp->esp,rp->esp);
+- fprintf(fp," ebx: %14p %d\n", (void*)rp->ebx,rp->ebx);
+- fprintf(fp," edx: %14p %d\n", (void*)rp->edx,rp->edx);
+- fprintf(fp," ecx: %14p %d\n", (void*)rp->ecx,rp->ecx);
+- fprintf(fp," eax: %14p %d\n", (void*)rp->eax,rp->eax);
+- fprintf(fp," trapno: %14p %d\n", (void*)rp->trapno,rp->trapno);
+- fprintf(fp," err: %14p %d\n", (void*)rp->err,rp->err);
+- fprintf(fp," eip: %14p %d\n", (void*)rp->eip,rp->eip);
+- fprintf(fp," cs: %04xd : %04x\n", rp->cs,rp->__csh);
+- fprintf(fp," eflags: %14p %d\n", (void*)rp->eflags,rp->eflags);
+- fprintf(fp," esp_at_signal: %p %d\n", (void*)rp->esp_at_signal,rp->esp_at_signal);
+- fprintf(fp," ss: %04xd : %04x\n", rp->ss,rp->__ssh);
+- fprintf(fp," oldmask: %14p %d\n", (void*)rp->oldmask,rp->oldmask);
+- fprintf(fp," cr2: %14p %d\n", (void*)rp->cr2,rp->cr2);
++ fprintf(fp," gs: %04x:%04x\n", rp->mc_gs,rp->mc_gs);
++ fprintf(fp," fs: %04x:%04x\n", rp->mc_fs,rp->mc_fs);
++ fprintf(fp," es: %04x:%04x\n", rp->mc_es,rp->mc_es);
++ fprintf(fp," ds: %04x:%04x\n", rp->mc_ds,rp->mc_ds);
++ fprintf(fp," edi: %14p %d\n", (void*)rp->mc_edi,rp->mc_edi);
++ fprintf(fp," esi: %14p %d\n", (void*)rp->mc_esi,rp->mc_esi);
++ fprintf(fp," ebp: %14p %d\n", (void*)rp->mc_ebp,rp->mc_ebp);
++ fprintf(fp," esp: %14p %d\n", (void*)rp->mc_esp,rp->mc_esp);
++ fprintf(fp," ebx: %14p %d\n", (void*)rp->mc_ebx,rp->mc_ebx);
++ fprintf(fp," edx: %14p %d\n", (void*)rp->mc_edx,rp->mc_edx);
++ fprintf(fp," ecx: %14p %d\n", (void*)rp->mc_ecx,rp->mc_ecx);
++ fprintf(fp," eax: %14p %d\n", (void*)rp->mc_eax,rp->mc_eax);
++ fprintf(fp," trapno: %14p %d\n", (void*)rp->mc_trapno,rp->mc_trapno);
++ fprintf(fp," err: %14p %d\n", (void*)rp->mc_err,rp->mc_err);
++ fprintf(fp," eip: %14p %d\n", (void*)rp->mc_eip,rp->mc_eip);
++ fprintf(fp," cs: %04x\n", (unsigned)rp->mc_cs);
++ fprintf(fp," eflags: %14p %d\n", (void*)rp->mc_eflags,rp->mc_eflags);
++ fprintf(fp," esp_at_signal: %p %d\n", (void*)rp->mc_esp_at_signal,rp->mc_esp_at_signal);
++ fprintf(fp," ss: %04xd : %04x\n", rp->mc_ss,rp->mc_ss);
++// fprintf(fp," oldmask: %14p %d\n", (void*)rp->mc_oldmask,rp->mc_oldmask);
++// fprintf(fp," cr2: %14p %d\n", (void*)rp->mc_cr2,rp->mc_cr2);
+ fprintf(fp,"\n");
+ }
+ #endif
++#endif
+
+ #if __x86_64__
+-#define IP rip
+-#define sigregs_t sigcontext
++#define IP SC_(rip)
++#define sigregs_t mcontext_t
+
+ static void reg_dump(FILE *fp,sigregs_t *rp)
+ {
+ fprintf(fp,"REGS:\n");
+- fprintf(fp," r8: %20p %jd\n", (void*)rp->r8,rp->r8);
+- fprintf(fp," r9: %20p %jd\n", (void*)rp->r9,rp->r9);
+- fprintf(fp," r10: %20p %jd\n", (void*)rp->r10,rp->r10);
+- fprintf(fp," r11: %20p %jd\n", (void*)rp->r11,rp->r11);
+- fprintf(fp," r12: %20p %jd\n", (void*)rp->r12,rp->r12);
+- fprintf(fp," r13: %20p %jd\n", (void*)rp->r13,rp->r13);
+- fprintf(fp," r14: %20p %jd\n", (void*)rp->r14,rp->r14);
+- fprintf(fp," r15: %20p %jd\n", (void*)rp->r15,rp->r15);
+- fprintf(fp," rdi: %20p %jd\n", (void*)rp->rdi,rp->rdi);
+- fprintf(fp," rsi: %20p %jd\n", (void*)rp->rsi,rp->rsi);
+- fprintf(fp," rbp: %20p %jd\n", (void*)rp->rbp,rp->rbp);
+- fprintf(fp," rbx: %20p %jd\n", (void*)rp->rbx,rp->rbx);
+- fprintf(fp," rdx: %20p %jd\n", (void*)rp->rdx,rp->rdx);
+- fprintf(fp," rax: %20p %jd\n", (void*)rp->rax,rp->rax);
+- fprintf(fp," rcx: %20p %jd\n", (void*)rp->rcx,rp->rcx);
+- fprintf(fp," rsp: %20p %jd\n", (void*)rp->rsp,rp->rsp);
+- fprintf(fp," rip: %20p %jd\n", (void*)rp->rip,rp->rip);
+- fprintf(fp," eflags: %14p %jd\n", (void*)rp->eflags,rp->eflags);
+- fprintf(fp," cs: %04x\n", rp->cs);
+- fprintf(fp," gs: %04x\n", rp->gs);
+- fprintf(fp," fs: %04x\n", rp->fs);
+- fprintf(fp," err: %20p %jd\n", (void*)rp->err,rp->err);
+- fprintf(fp," trapno: %20p %jd\n", (void*)rp->trapno,rp->trapno);
+- fprintf(fp," oldmask: %20p %jd\n", (void*)rp->oldmask,rp->oldmask);
+- fprintf(fp," cr2: %20p %jd\n", (void*)rp->cr2,rp->cr2);
++ fprintf(fp," r8: %20p %jd\n", (void*)rp->mc_r8,rp->mc_r8);
++ fprintf(fp," r9: %20p %jd\n", (void*)rp->mc_r9,rp->mc_r9);
++ fprintf(fp," r10: %20p %jd\n", (void*)rp->mc_r10,rp->mc_r10);
++ fprintf(fp," r11: %20p %jd\n", (void*)rp->mc_r11,rp->mc_r11);
++ fprintf(fp," r12: %20p %jd\n", (void*)rp->mc_r12,rp->mc_r12);
++ fprintf(fp," r13: %20p %jd\n", (void*)rp->mc_r13,rp->mc_r13);
++ fprintf(fp," r14: %20p %jd\n", (void*)rp->mc_r14,rp->mc_r14);
++ fprintf(fp," r15: %20p %jd\n", (void*)rp->mc_r15,rp->mc_r15);
++ fprintf(fp," rdi: %20p %jd\n", (void*)rp->mc_rdi,rp->mc_rdi);
++ fprintf(fp," rsi: %20p %jd\n", (void*)rp->mc_rsi,rp->mc_rsi);
++ fprintf(fp," rbp: %20p %jd\n", (void*)rp->mc_rbp,rp->mc_rbp);
++ fprintf(fp," rbx: %20p %jd\n", (void*)rp->mc_rbx,rp->mc_rbx);
++ fprintf(fp," rdx: %20p %jd\n", (void*)rp->mc_rdx,rp->mc_rdx);
++ fprintf(fp," rax: %20p %jd\n", (void*)rp->mc_rax,rp->mc_rax);
++ fprintf(fp," rcx: %20p %jd\n", (void*)rp->mc_rcx,rp->mc_rcx);
++ fprintf(fp," rsp: %20p %jd\n", (void*)rp->mc_rsp,rp->mc_rsp);
++ fprintf(fp," rip: %20p %jd\n", (void*)rp->mc_rip,rp->mc_rip);
++ fprintf(fp," eflags: %14p %u\n", (void*)((unsigned long)rp->mc_flags),rp->mc_flags);
++ fprintf(fp," cs: %04x\n", (unsigned)rp->mc_cs);
++ fprintf(fp," gs: %04x\n", (unsigned)rp->mc_gs);
++ fprintf(fp," fs: %04x\n", (unsigned)rp->mc_fs);
++ fprintf(fp," err: %20p %jd\n", (void*)rp->mc_err,rp->mc_err);
++ fprintf(fp," trapno: %20p %d\n", (void*)((unsigned long)rp->mc_trapno),rp->mc_trapno);
++// fprintf(fp," oldmask: %20p %jd\n", (void*)rp->mc_oldmask,rp->mc_oldmask);
++// fprintf(fp," cr2: %20p %jd\n", (void*)rp->mc_cr2,rp->mc_cr2);
+ fprintf(fp,"\n");
+ }
+
+@@ -500,7 +504,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
+ void *ip = 0;
+ #ifndef NO_CTX
+ ucontext_t *uc = (ucontext_t *)sc;
+- struct sigregs_t *c = (struct sigregs_t *)&uc->uc_mcontext;
++ sigregs_t *c = (sigregs_t *)&uc->uc_mcontext;
+ ip = (void *)c->IP;
+ #endif
+ fprintf(stderr,"** %s at %p in pid %d, tid %d\n",
+diff --git a/cinelerra-5.1/guicast/bctrace.C b/cinelerra-5.1/guicast/bctrace.C
+index 7e453925..2d08b46b 100644
+--- a/cinelerra-5.1/guicast/bctrace.C
++++ b/cinelerra-5.1/guicast/bctrace.C
+@@ -309,7 +309,7 @@ void BC_Trace::dump_traces(FILE *fp)
+ }
+ }
+
+-void trace_info::set_owner() { owner = pthread_self(); }
++void trace_info::set_owner() { owner = (unsigned long)pthread_self(); }
+ void trace_info::unset_owner() { owner = 0; }
+
+ void BC_Trace::dump_locks(FILE *fp)
+@@ -322,7 +322,7 @@ void BC_Trace::dump_locks(FILE *fp)
+ fprintf(fp," %p %s, %s %p%s",
+ p->info, p->title, p->loc,
+ (void*)p->tid, p->is_owner ? " *" : "");
+- if( p->info->owner && p->info->owner != p->tid )
++ if( p->info->owner && p->info->owner != (unsigned long)p->tid )
+ fprintf(fp," %p", (void*)p->info->owner);
+ fprintf(fp,"\n");
+ }
+diff --git a/cinelerra-5.1/guicast/filesystem.h b/cinelerra-5.1/guicast/filesystem.h
+index c976135b..56137025 100644
+--- a/cinelerra-5.1/guicast/filesystem.h
++++ b/cinelerra-5.1/guicast/filesystem.h
+@@ -26,6 +26,9 @@
+ #include "bcwindowbase.inc"
+ #include "sizes.h"
+
++#define dirent64 dirent
++#define readdir64 readdir
++
+ class FileItem
+ {
+ public:
+diff --git a/cinelerra-5.1/guicast/thread.C b/cinelerra-5.1/guicast/thread.C
+index 9908a628..768ca61d 100644
+--- a/cinelerra-5.1/guicast/thread.C
++++ b/cinelerra-5.1/guicast/thread.C
+@@ -58,13 +58,6 @@ void* Thread::entrypoint(void *parameters)
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ thread->cancel_enabled = false;
+
+-// Set realtime here since it doesn't work in start
+- if( thread->realtime && getuid() == 0 ) {
+- struct sched_param param = { sched_priority : 1 };
+- if(pthread_setschedparam(thread->tid, SCHED_RR, ¶m) < 0)
+- perror("Thread::entrypoint pthread_attr_setschedpolicy");
+- }
+-
+ thread->run();
+ thread->finished = true;
+ if( !thread->synchronous ) {
+diff --git a/cinelerra-5.1/plugins/Makefile b/cinelerra-5.1/plugins/Makefile
+index c4a5fd43..9713b59e 100644
+--- a/cinelerra-5.1/plugins/Makefile
++++ b/cinelerra-5.1/plugins/Makefile
+@@ -37,7 +37,6 @@ DIRS = $(OPENCV_OBJS) \
+ brightness \
+ burn \
+ C41 \
+- cdripper \
+ chorus \
+ chromakey \
+ chromakeyhsv \
+@@ -183,6 +182,8 @@ DIRS = $(OPENCV_OBJS) \
+ # denoisemjpeg \
+ # duplicate
+ # vocoder \
++# not in bsd
++# cdripper \
+
+ PLUGIN_DIR = $(BINDIR)/plugins
+ DATA = $(PLUGIN_DIR)/fonts $(PLUGIN_DIR)/shapes $(PLUGIN_DIR)/scopes
+diff --git a/cinelerra-5.1/plugins/shapewipe/Makefile b/cinelerra-5.1/plugins/shapewipe/Makefile
+index b5e19639..b494009b 100644
+--- a/cinelerra-5.1/plugins/shapewipe/Makefile
++++ b/cinelerra-5.1/plugins/shapewipe/Makefile
+@@ -1,7 +1,7 @@
+ include ../../plugin_defs
+
+ OBJS = $(OBJDIR)/shapewipe.o
+-LFLAGS += -lpng
++LFLAGS += `pkg-config --libs libpng`
+
+ PLUGIN = shapewipe
+
+diff --git a/cinelerra-5.1/plugins/titler/Makefile b/cinelerra-5.1/plugins/titler/Makefile
+index 3e520ac7..44b43a33 100644
+--- a/cinelerra-5.1/plugins/titler/Makefile
++++ b/cinelerra-5.1/plugins/titler/Makefile
+@@ -7,7 +7,7 @@ PLUGIN = titler
+ CFLAGS += -Wall
+
+ ifneq ($(STATIC_LIBRARIES), y)
+-LFLAGS += -lfreetype
++LFLAGS += `pkg-config --libs freetype`
+ endif
+
+ include ../../plugin_config
+diff --git a/cinelerra-5.1/plugins/titler/titler.C b/cinelerra-5.1/plugins/titler/titler.C
+index 06fb7938..1a2e35fe 100644
+--- a/cinelerra-5.1/plugins/titler/titler.C
++++ b/cinelerra-5.1/plugins/titler/titler.C
+@@ -57,8 +57,7 @@
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <string.h>
+-#include <endian.h>
+-#include <byteswap.h>
++#include <sys/endian.h>
+ #include <iconv.h>
+ #include <sys/stat.h>
+ #include <fontconfig/fontconfig.h>