additional improvements for freebsd mostly
authorGood Guy <[email protected]>
Wed, 4 May 2022 22:58:33 +0000 (16:58 -0600)
committerGood Guy <[email protected]>
Wed, 4 May 2022 22:58:33 +0000 (16:58 -0600)
cinelerra-5.1/cinelerra/dvdcreate.C
cinelerra-5.1/cinelerra/file.C
cinelerra-5.1/cinelerra/fileexr.C
cinelerra-5.1/ffmpeg/plugin.opts
cinelerra-5.1/guicast/bcresources.C

index 6ecb270b381be0102a77e08381b2f0d03b660774..175ef5477ceb24c39c5a5b680af513d163e3cc4f 100644 (file)
 #include <unistd.h>
 #include <fcntl.h>
 #include <errno.h>
+#if !defined(__FreeBSD__)
 #include <sys/stat.h>
 #include <sys/statfs.h>
-
+#else
+#include <sys/param.h>
+#include <sys/mount.h>
+#endif
 
 #define DVD_PAL_4x3    0
 #define DVD_PAL_16x9   1
index 3202057403e7c2540e8f8db3174963da546283aa..2a1330059cd468069f5e248f6343846445776e8f 100644 (file)
@@ -1666,7 +1666,14 @@ int File::record_fd()
 void File::get_exe_path(char *result, char *bnp)
 {
 // Get executable path, basename
+#if !defined(__FreeBSD__)
        int len = readlink("/proc/self/exe", result, BCTEXTLEN-1);
+#else
+       char exe_path[BCTEXTLEN];
+       sprintf(exe_path,"/proc/%d/file",getpid());
+       int len = readlink(exe_path, result, BCTEXTLEN-1);
+#endif
+
        if( len >= 0 ) {
                result[len] = 0;
                char *ptr = strrchr(result, '/');
index 9c782a112f8340e8f62023c4398ead416be07c35..fbc3986221a3658700feebe4fd8c61c1000718e2 100644 (file)
@@ -50,8 +50,8 @@ public:
        ~EXRIStream();
 
        bool read (char c[], int n);
-       Imf::Int64 tellg ();
-       void seekg (Imf::Int64 pos);
+       uint64_t tellg ();
+       void seekg (uint64_t pos);
        void clear ();
 
 private:
@@ -67,8 +67,8 @@ public:
        ~EXROStream();
 
     virtual void write(const char c[], int n);
-    virtual Imf::Int64 tellp();
-    virtual void seekp(Imf::Int64 pos);
+    virtual uint64_t tellp();
+    virtual void seekp(uint64_t pos);
 
 private:
        VFrame *data;
@@ -106,12 +106,12 @@ bool EXRIStream::read(char c[], int n)
        return position >= size;
 }
 
-Imf::Int64 EXRIStream::tellg ()
+uint64_t EXRIStream::tellg ()
 {
        return position;
 }
 
-void EXRIStream::seekg(Imf::Int64 pos)
+void EXRIStream::seekg(uint64_t pos)
 {
        position = pos;
 }
@@ -141,12 +141,12 @@ void EXROStream::write(const char c[], int n)
        data->set_compressed_size(MAX(position, data->get_compressed_size()));
 }
 
-Imf::Int64 EXROStream::tellp()
+uint64_t EXROStream::tellp()
 {
        return position;
 }
 
-void EXROStream::seekp(Imf::Int64 pos)
+void EXROStream::seekp(uint64_t pos)
 {
        position = pos;
 }
index 11cb26e218edf6efa489cef86d459c3e2043c7e7..9b60b2c4c4657ba980349c8ae2ba99dcc4fefdea 100644 (file)
@@ -425,3 +425,6 @@ monochrome
 #msad ###Input/output error
 #setts
 #vif ###Input/output error
+#frei0r
+#frei0r_src
+#libvmaf
index cdac6305f8b4d62de4dd807808e5b73c43dff018..3fa8bed1f53ba30d891a90a65d13ded8a7107dac 100644 (file)
@@ -39,6 +39,9 @@
 #include <iconv.h>
 #include <sys/ipc.h>
 #include <sys/shm.h>
+#if defined(__FreeBSD__)
+#include <sys/sysctl.h>
+#endif
 #include <X11/extensions/XShm.h>
 #include <fontconfig/fontconfig.h>
 #include <fontconfig/fcfreetype.h>
@@ -298,6 +301,7 @@ int BC_Resources::machine_cpus = 1;
 
 int BC_Resources::get_machine_cpus()
 {
+#if !defined(__FreeBSD__)
        int cpus = 1;
        FILE *proc = fopen("/proc/cpuinfo", "r");
        if( proc ) {
@@ -315,6 +319,14 @@ int BC_Resources::get_machine_cpus()
                fclose(proc);
        }
        return cpus;
+#else
+       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;
+#endif
 }
 
 void BC_Resources::new_vframes(int n, VFrame *vframes[], ...)
@@ -367,9 +379,13 @@ BC_Resources::BC_Resources(float x_scale, float y_scale)
        BC_WindowBase::resources = this;
        synchronous = 0;
        vframe_shm = 0;
+#if !defined(__FreeBSD__)
        use_shm = -1;
        shm_reply = 1;
-
+#else
+       use_shm = 0;
+       shm_reply = 0;
+#endif
        if( x_scale <= 0 ) x_scale = 1;
        if( y_scale <= 0 ) y_scale = x_scale;
        this->x_scale = x_scale;