salsaman / LiVES

LiVES is a feature rich application which combines elements of VJ and video editing software. The current version runs on Linux / BSD. Check_out_the_new_discussion_area https://github.com/salsaman/LiVES/discussions
http://lives-video.com
GNU General Public License v3.0
89 stars 11 forks source link

Several patches from FreeBSD ports #11

Closed VVD closed 3 years ago

VVD commented 4 years ago

Fixed bug with HAVE_OPENCV => $HAVE_OPENCV, added "--libs-only-other" for "pkg-config opencv" and added possibility to ignore pulseaudio and alsa.

--- configure.ac.orig
+++ configure.ac
@@ -544,12 +544,14 @@

 PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.1, HAVE_OPENCV=true, HAVE_OPENCV=false)

-if test "HAVE_OPENCV" = "true" ; then
-OPENCV_LIBS_ONLY_L = `pkg-config opencv --libs-only-L`
+if test "$HAVE_OPENCV" = "true" ; then
+OPENCV_LIBS_ONLY_L=`pkg-config opencv --libs-only-L`
+OPENCV_LIBS_ONLY_OTHER=`pkg-config opencv --libs-only-other`
 fi

 AC_SUBST(OPENCV_CFLAGS)
 AC_SUBST(OPENCV_LIBS_ONLY_L)
+AC_SUBST(OPENCV_LIBS_ONLY_OTHER)

 AM_CONDITIONAL(HAVE_OPENCV,$HAVE_OPENCV)

@@ -742,15 +744,22 @@
 AM_CONDITIONAL(HAVE_DIRAC,$HAVE_DIRAC)

 HAVE_ALSA=false
+AC_ARG_ENABLE(alsa, [  --disable-alsa     Disable alsa support.] , disable_alsa=yes)
+if test "x$disable_alsa" != "xyes" ; then
 dnl check for libasound
 PKG_CHECK_MODULES(ALSA,alsa,HAVE_ALSA=true,HAVE_ALSA=false)
 AC_SUBST(ALSA_CFLAGS)
 AC_SUBST(ALSA_LIBS)
+else
+echo not checking for alsa
+fi

 AM_CONDITIONAL(HAVE_ALSA,$HAVE_ALSA)

 HAVE_PULSE_AUDIO=false
 HAVE_PA_STREAM_BEGIN_WRITE=false
+AC_ARG_ENABLE(pulse, [  --disable-pulse    Disable pulseaudio support.] , disable_pulse=yes)
+if test "x$disable_pulse" != "xyes" ; then
 dnl check for pulse-audio
 PKG_CHECK_MODULES(PULSE,libpulse >= 0.9.14,HAVE_PULSE_AUDIO=true,HAVE_PULSE_AUDIO=false)
 if test "$HAVE_PULSE_AUDIO" = "true" ; then
@@ -759,6 +768,9 @@

 AC_SUBST(PULSE_CFLAGS)
 AC_SUBST(PULSE_LIBS)
+else
+echo not checking for pulse
+fi

 AM_CONDITIONAL(HAVE_PULSE_AUDIO,$HAVE_PULSE_AUDIO)
 AM_CONDITIONAL(HAVE_PA_STREAM_BEGIN_WRITE,$HAVE_PA_STREAM_BEGIN_WRITE)
@@ -865,7 +877,9 @@
 HAVE_SYSTEM_WEED_COMPAT=false
 HAVE_SYSTEM_WEED_PLUGIN=false

-if test "$IS_MINGW" = "false"; then
+AC_ARG_ENABLE(weed, [  --disable-system-weed Disable check system weed.] , disable_system_weed=yes)
+
+if test "$IS_MINGW" = "false" && "x$disable_system_weed" != "xyes"; then

 PKG_CHECK_MODULES(WEED, libweed >= 0.11.0, HAVE_SYSTEM_WEED=true, HAVE_SYSTEM_WEED=false)

--- lives-plugins/weed-plugins/Makefile.am.orig
+++ lives-plugins/weed-plugins/Makefile.am
@@ -81,7 +81,8 @@

 if HAVE_OPENCV
 farneback_analyser_libs = farneback_analyser.la
-farneback_analyser_la_LDFLAGS = $(AM_LDFLAGS) $(OPENCV_LIBS_ONLY_L) -lopencv_core -lopencv_video -lopencv_imgproc
+farneback_analyser_la_LDFLAGS = $(AM_LDFLAGS) $(OPENCV_LIBS_ONLY_L) $(OPENCV_LIBS_ONLY_OTHER) -lopencv_core -lopencv_video -lopencv_imgproc
+farneback_analyser_la_CXXFLAGS = $(OPENCV_CFLAGS)
 farneback_analyser_la_CPPFLAGS = $(AM_CPPFLAGS)
 farneback_analyser_la_SOURCES = farneback_analyser.cpp

FreeBSD's cp work different: If we have "dir1" with files "file1", "file2" and empty "dir2", then "cp -rf dir1/ dir2" copy files "file1" and "file2" to "dir2". Result: "dir2/file1", "dir2/file2". Linux's cp in same environment copy "dir1" with all files in "dir2". Result: "dir2/dir1/file1", "dir2/dir1/file2". This patch fixes this issue:

--- lives-plugins/weed-plugins/gdk/Makefile.am.orig
+++ lives-plugins/weed-plugins/gdk/Makefile.am
@@ -59,8 +59,8 @@ EXTRA_DIST=data icons

 install-data-local:
        mkdir -p "$(DESTDIR)$(fxpluginslibdir)"
-       cp -rf data/ "$(DESTDIR)$(fxpluginslibdir)" && chmod -R a+r "$(DESTDIR)$(fxpluginslibdir)/data/"
-       cp -rf icons/ "$(DESTDIR)$(fxpluginslibdir)" && chmod -R a+r "$(DESTDIR)$(fxpluginslibdir)/icons/"
+       cp -rf data "$(DESTDIR)$(fxpluginslibdir)" && chmod -R a+r "$(DESTDIR)$(fxpluginslibdir)/data"
+       cp -rf icons "$(DESTDIR)$(fxpluginslibdir)" && chmod -R a+r "$(DESTDIR)$(fxpluginslibdir)/icons"
        $(MAKE) -i install-data-local-remove-vcs-files

 install-data-local-remove-vcs-files:

Last one (you can ignore it):

--- Makefile.am.orig
+++ Makefile.am
@@ -35,7 +35,7 @@ endif
 SUBDIRS = $(OSC_SUBDIRS) intl $(WEED_SUBDIRS) src m4 lives-plugins po resources
 PACKAGE_CAPITALISED = LiVES

-docdir = "$(prefix)/share/doc/$(PACKAGE)-$(VERSION)"
+docdir = "$(prefix)/share/doc/$(PACKAGE)"
 sharedir = "$(prefix)/share"

 if HAVE_DOXYGEN

All patched for version 3.0.2.

salsaman commented 3 years ago

Thanks for the fantastic feedback !!!

The last one just needs #ifdef HAVE_PULSE_AUDIO / #endif

As a temporary fix, you can just move the #endif down.

VVD commented 3 years ago

About O_DSYNC. Even in HEAD (current development branch):

/*
* XXX missing O_DSYNC, O_RSYNC.
*/

© https://svnweb.freebsd.org/base/head/sys/sys/fcntl.h?revision=357412&view=markup FreeBSD doesn't support O_DSYNC yet, but you can use O_SYNC instead if you need sync:

/*
Not all OSes support O_DSYNC yet.
For example FreeBSD doesn't support O_DSYNC even in HEAD on 2020-08-28.
*/
#ifndef O_DSYNC
#define O_DSYNC O_SYNC
#endif
VVD commented 3 years ago

Thanks for the fantastic feedback !!!

The last one just needs #ifdef HAVE_PULSE_AUDIO / #endif

As a temporary fix, you can just move the #endif down.

But for real work is this part for audio/video sync?

VVD commented 3 years ago
ld: error: undefined symbol: readahead
>>> referenced by utils.c
>>>               utils.o:(file_buffer_fill)
cc: error: linker command failed with exit code 1 (use -v to see invocation)

readahead is linuxism. Patch can be something like this:

--- src/utils.c.orig
+++ src/utils.c
@@ -782,13 +782,13 @@
   if (res < bufsize) fbuff->eof = TRUE;
   else fbuff->eof = FALSE;

-#if defined HAVE_POSIX_FADVISE || defined _GNU_SOURCE
+#if defined HAVE_POSIX_FADVISE || (defined _GNU_SOURCE && defined __linux__)
   if (fbuff->reversed) {
 #if defined HAVE_POSIX_FADVISE
     posix_fadvise(fbuff->fd, 0, fbuff->offset - (bufsize >> 2) * 3, POSIX_FADV_RANDOM);
     posix_fadvise(fbuff->fd, fbuff->offset - (bufsize >> 2) * 3, bufsize, POSIX_FADV_WILLNEED);
 #endif
-#ifdef _GNU_SOURCE
+#if defined _GNU_SOURCE && defined __linux__
     readahead(fbuff->fd, fbuff->offset - (bufsize >> 2) * 3, bufsize);
 #endif
   } else {
@@ -796,7 +796,7 @@
     posix_fadvise(fbuff->fd, fbuff->offset, 0, POSIX_FADV_SEQUENTIAL);
     posix_fadvise(fbuff->fd, fbuff->offset, bufsize, POSIX_FADV_WILLNEED);
 #endif
-#ifdef _GNU_SOURCE
+#if defined _GNU_SOURCE && defined __linux__
     readahead(fbuff->fd, fbuff->offset, bufsize);
 #endif
   }

I don't know exactly, but possible here is incorrect using of _GNU_SOURCE. For example src/lsd.h look weird for me:

#if defined _GNU_SOURCE
#define ALLOW_UNUSED __attribute__((unused))
#else
#define ALLOW_UNUSED
#endif
VVD commented 3 years ago
beat_detector.c:23:10: fatal error: '../../../libweed/weed-utils.h' file not found
#include "../../../libweed/weed-utils.h" // optional
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- audio_fft_la-audio_fft.lo ---
audio_fft.c:23:10: fatal error: '../../../libweed/weed-utils.h' file not found
#include "../../../libweed/weed-utils.h" // optional
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- lives-plugins/weed-plugins/beat_detector.c.orig
+++ lives-plugins/weed-plugins/beat_detector.c
@@ -20,7 +20,7 @@
 #include <weed/weed-plugin-utils.h> // optional
 #else
 #include "../../libweed/weed-plugin.h"
-#include "../../../libweed/weed-utils.h" // optional
+#include "../../libweed/weed-utils.h" // optional
 #include "../../libweed/weed-plugin-utils.h" // optional
 #endif

Same in: lives-plugins/weed-plugins/audio_fft.c lives-plugins/weed-plugins/RGBdelay.c lives-plugins/weed-plugins/alpha_means.c and in a lot of other files - 20-30 in lives-plugins/weed-plugins.

salsaman commented 3 years ago

Hi, I am doing a large patch which will result in config file changes, as I mentioned: ~/.lives will become ~/.local/config/lives/settings and in addition, ~/.lives-dir will instead be ~/.local/share/lives. Also included in the patch, it will create ~/.local/share/lives/stock-icons as well as fixing some other minor startup issues. As well as this, some of the file names will be changed to make clearer hat their purpose is.

Plus there will be a migration option to rename / move files for existing users.

I am including fixes for all of the issues you are reporting within this larger patch.

The migration / startup update is something I was already planning to do for the new release, so it is perfect timing to also include fixes for the things you are reporting.

I am hoping to have the complete patch done either tonight or tomorrow.

salsaman commented 3 years ago

Thanks for the fantastic feedback !!! The last one just needs #ifdef HAVE_PULSE_AUDIO / #endif As a temporary fix, you can just move the #endif down.

But for real work is this part for audio/video sync?

Currently this is only used for debugging purposes, to show the A/V sync status (i.e audio playback position relative to video). In case the audio player is not jack or pulse, LiVES has no way to determine this, so the statistic is not calculated.

salsaman commented 3 years ago
ld: error: undefined symbol: readahead
>>> referenced by utils.c
>>>               utils.o:(file_buffer_fill)
cc: error: linker command failed with exit code 1 (use -v to see invocation)

readahead is linuxism. Patch can be something like this:

--- src/utils.c.orig
+++ src/utils.c
@@ -782,13 +782,13 @@
   if (res < bufsize) fbuff->eof = TRUE;
   else fbuff->eof = FALSE;

-#if defined HAVE_POSIX_FADVISE || defined _GNU_SOURCE
+#if defined HAVE_POSIX_FADVISE || (defined _GNU_SOURCE && defined __linux__)
   if (fbuff->reversed) {
 #if defined HAVE_POSIX_FADVISE
     posix_fadvise(fbuff->fd, 0, fbuff->offset - (bufsize >> 2) * 3, POSIX_FADV_RANDOM);
     posix_fadvise(fbuff->fd, fbuff->offset - (bufsize >> 2) * 3, bufsize, POSIX_FADV_WILLNEED);
 #endif
-#ifdef _GNU_SOURCE
+#if defined _GNU_SOURCE && defined __linux__
     readahead(fbuff->fd, fbuff->offset - (bufsize >> 2) * 3, bufsize);
 #endif
   } else {
@@ -796,7 +796,7 @@
     posix_fadvise(fbuff->fd, fbuff->offset, 0, POSIX_FADV_SEQUENTIAL);
     posix_fadvise(fbuff->fd, fbuff->offset, bufsize, POSIX_FADV_WILLNEED);
 #endif
-#ifdef _GNU_SOURCE
+#if defined _GNU_SOURCE && defined __linux__
     readahead(fbuff->fd, fbuff->offset, bufsize);
 #endif
   }

I don't know exactly, but possible here is incorrect using of _GNU_SOURCE. For example src/lsd.h look weird for me:

#if defined _GNU_SOURCE
#define ALLOW_UNUSED __attribute__((unused))
#else
#define ALLOW_UNUSED
#endif

_GNU_SOURCE should be set (I think) if the compiler is gcc.

in machinestate.h, there is also:

if defined _GNU_SOURCE

define LIVES_GNU

define lives_malloc_auto(size) __builtin_alloc(size)

define lives_malloc_auto_aligned(size, align) __builtin_alloc_with_align(size, align)

endif

these functions are currently not used, but I included them since they maybe useful in future development.

salsaman commented 3 years ago

About O_DSYNC. Even in HEAD (current development branch):

/*
* XXX missing O_DSYNC, O_RSYNC.
*/

© https://svnweb.freebsd.org/base/head/sys/sys/fcntl.h?revision=357412&view=markup FreeBSD doesn't support O_DSYNC yet, but you can use O_SYNC instead if you need sync:

/*
Not all OSes support O_DSYNC yet.
For example FreeBSD doesn't support O_DSYNC even in HEAD on 2020-08-28.
*/
#ifndef O_DSYNC
#define O_DSYNC O_SYNC
#endif

Yes, I already added something like that.

salsaman commented 3 years ago
ld: error: undefined symbol: readahead
>>> referenced by utils.c
>>>               utils.o:(file_buffer_fill)
cc: error: linker command failed with exit code 1 (use -v to see invocation)

readahead is linuxism. Patch can be something like this:

--- src/utils.c.orig
+++ src/utils.c
@@ -782,13 +782,13 @@
   if (res < bufsize) fbuff->eof = TRUE;
   else fbuff->eof = FALSE;

-#if defined HAVE_POSIX_FADVISE || defined _GNU_SOURCE
+#if defined HAVE_POSIX_FADVISE || (defined _GNU_SOURCE && defined __linux__)
   if (fbuff->reversed) {
 #if defined HAVE_POSIX_FADVISE
     posix_fadvise(fbuff->fd, 0, fbuff->offset - (bufsize >> 2) * 3, POSIX_FADV_RANDOM);
     posix_fadvise(fbuff->fd, fbuff->offset - (bufsize >> 2) * 3, bufsize, POSIX_FADV_WILLNEED);
 #endif
-#ifdef _GNU_SOURCE
+#if defined _GNU_SOURCE && defined __linux__
     readahead(fbuff->fd, fbuff->offset - (bufsize >> 2) * 3, bufsize);
 #endif
   } else {
@@ -796,7 +796,7 @@
     posix_fadvise(fbuff->fd, fbuff->offset, 0, POSIX_FADV_SEQUENTIAL);
     posix_fadvise(fbuff->fd, fbuff->offset, bufsize, POSIX_FADV_WILLNEED);
 #endif
-#ifdef _GNU_SOURCE
+#if defined _GNU_SOURCE && defined __linux__
     readahead(fbuff->fd, fbuff->offset, bufsize);
 #endif
   }

I don't know exactly, but possible here is incorrect using of _GNU_SOURCE. For example src/lsd.h look weird for me:

#if defined _GNU_SOURCE
#define ALLOW_UNUSED __attribute__((unused))
#else
#define ALLOW_UNUSED
#endif

_GNU_SOURCE should be set (I think) if the compiler is gcc.

in machinestate.h, there is also:

if defined _GNU_SOURCE

define LIVES_GNU

define lives_malloc_auto(size) __builtin_alloc(size)

define lives_malloc_auto_aligned(size, align) __builtin_alloc_with_align(size, align)

endif

these functions are currently not used, but I included them since they maybe useful in future development.

Ah yes, I see my error now. I got confused when reading about feature_test_macros.

_GNU_SOURCE needs to be defined in the program to expose the functions readahead, etc., (actually this is defined by default for me). and then the test is for _GNU_SOURCE and __linux__ as you correctly pointed out.

and the test for gcc is actually __GNUC__, I got the macros a bit mixed up.

salsaman commented 3 years ago

Thanks for the fantastic feedback !!! The last one just needs #ifdef HAVE_PULSE_AUDIO / #endif As a temporary fix, you can just move the #endif down.

But for real work is this part for audio/video sync?

Currently this is only used for debugging purposes, to show the A/V sync status (i.e audio playback position relative to video). In case the audio player is not jack or pulse, LiVES has no way to determine this, so the statistic is not calculated.

You can see an example of it in use here: https://www.youtube.com/watch?v=ahJJyq2cpis

VVD commented 3 years ago

Still can't build master…

salsaman commented 3 years ago

Yes, sorry I have had to take a break to sort out some life issues. I will do a check in now.

salsaman commented 3 years ago

OK, the git version is now feature complete, all known issues have been fixed. If you want to re-test to make sure everything works, now would be the ideal time.

VVD commented 3 years ago
audio.c:1959:1: error: extraneous closing brace ('}')
}
^
1 error generated.
*** [audio.o] Error code 1
--- src/audio.c.orig
+++ src/audio.c
@@ -1954,8 +1954,8 @@
         pulse_driver_cork(mainw->pulsed);
       }
     }
-#endif
   }
+#endif
 }
VVD commented 3 years ago
RGBdelay.c:20:10: fatal error: '../../../libweed/weed-utils.h' file not found
#include "../../../libweed/weed-utils.h" // optional
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
*** [RGBdelay.lo] Error code 1

lives-plugins/weed-plugins/RGBdelay.c

-#include "../../../libweed/weed-utils.h" // optional
+#include "../../libweed/weed-utils.h" // optional

Same in:

alpha_means.c:28:10: fatal error: '../../../libweed/weed-utils.h' file not found
alpha_visualizer.c:22:10: fatal error: '../../../libweed/weed-utils.h' file not found
alien_overlay.c:22:10: fatal error: '../../../libweed/weed-utils.h' file not found

./lives-plugins/weed-plugins/alpha_to_grey.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/audio_transition.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/audio_volume.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/blank_frame_detector.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/blurzoom.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/bump2d.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/cairo/vector_visualiser.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/ccorrect.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/colorkey.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/comic.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/data_processor.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/data_unpacker.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/deinterlace.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/edge.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/farneback_analyser.cpp:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/fg_bg_removal.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/fireTV.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/fourKlives.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/freenect.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/haip.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/kaleidoscope.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/ladspa.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/layout_blends.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/libvis.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/lifeTV.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/livetext.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/log_sig.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/mirrors.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/multi_blends.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/multi_transitions.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/negate.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/nn_programmer.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/noise.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/onedTV.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/palette_test.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/plasma.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/posterise.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/projectM.cpp:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/randomiser.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/revTV.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/rippleTV.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/rotozoom.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/shift.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/simple_blend.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/slide_over.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/softlight.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/targeted_zoom.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/textfun.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/tone_gen.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/toonz.cpp:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/tvpic.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/vertigo.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/warpTV.c:#include "../../../libweed/weed-utils.h" // optional
./lives-plugins/weed-plugins/xeffect.c:#include "../../../libweed/weed-utils.h" // optional
salsaman commented 3 years ago

ok, thanks ! Should be fixed in git now.

VVD commented 3 years ago
mkv_decoder.c:2978:14: error: no member named 'URIy' in 'struct _lives_clip_data'; did you mean 'URI'?
  if (cdata->URIy) {
             ^~~~
             URI
./decplugin.h:138:9: note: 'URI' declared here
  char *URI; ///< the URI of this cdata
        ^
1 error generated.
*** [mkv_decoder_la-mkv_decoder.lo] Error code 1
VVD commented 3 years ago
--- libvis_la-libvis.lo ---
libvis.c:254:17: error: use of undeclared identifier 'PATH_MAX'
  char fullname[PATH_MAX];
                ^
libvis.c:310:24: error: use of undeclared identifier 'PATH_MAX'
    snprintf(fullname, PATH_MAX, "%s", name);
                       ^
2 warnings and 2 errors generated.
*** [libvis_la-libvis.lo] Error code 1
VVD commented 3 years ago

After install and run: изображение Bur there are no /home/vvd/livesprojects directory! I create it manually: mkdir /home/vvd/livesprojects and run again:

$ lives

LiVES 3.2.0-pre
Copyright 2002 - 2020 Gabriel Finch (salsaman+lives@gmail.com) and others.
LiVES comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details.

grep: /proc/cpuinfo: No such file or directory
grep: /proc/cpuinfo: No such file or directory
cat: /etc/lsb-release: No such file or directory
LiVES info: Cannot use filter Crossfade from package LADSPA 
as it requires at least 4 input audio channels

LiVES info: Cannot use filter Crossfade (4 outs) from package LADSPA 
as it requires at least 4 input audio channels

LiVES info: Cannot use filter SC3 from package LADSPA 
as it requires at least 3 input audio channels

LiVES info: Cannot use filter Step Demuxer from package LADSPA 
as it requires at least 9 input audio channels

LiVES info: Cannot use filter Surround matrix encoder from package LADSPA 
as it requires at least 4 input audio channels

LADSPA: skipping blacklisted filter Mag's Notch Filter
LiVES info: Cannot use filter RGB from package Frei0r 
as it requires at least 3 input video channels

Frei0r: skipping blacklisted filter Timeout indicator
LiVES info: No usable filters found in plugin:
/usr/local/lib/lives/plugins/effects/realtime/weed/libvisual/libvis.so

grep: /proc/stat: No such file or directory
^C

It isn't fit in 1280 horizontal pixels: изображение And I can't quit: Alt+F4, cross in right top corner, File->Quit - doesn't work, Ctrl+C in console work only (and kill ofc too).

Information window after start:

Starting...
*** Using openGL plugin for fs playback, agreed to use palette type 3 ( RGBA32 ). ***

Machine details:
OS is FreeBSD 12.1-RELEASE-p10, running on amd64
CPU type is  (1 core, 64 bits, little endian)
Machine name is 'vvd.home'
Number of monitors detected: 1: GUI screen size is 1280 X 960 (usable: 1280 X 960); 96 dpi.
Widget scaling has been set to 0.700.
Window manager reports as "KWin" (KDE), running on x11; compositing is not supported.
Distro is ????? ????? ()
Тип графической оболочки: GTK+ версии 3.24.23 (сборка 3.24.23), with cairo support
GUI theme set to Default-lives-hybrid-dynamic, icon theme set to oxygen-lives-hybrid
WARNING - this version of LiVES was compiled without either
jack or pulseaudio support.
Many audio features will be unavailable.

Config file is /home/vvd/.config/lives/settings (default value)

Working directory is /home/vvd/livesprojects/, contained in volume ??????
(Set by user during setup phase)
Initial startup phase was -1: (fresh install. Welcome !)

Checking RECOMMENDED dependencies: mplayer...detected... identify...detected... sox...detected... convert...detected... composite...detected... ffprobe...detected... gzip...detected... md5sum...NOT DETECTED... youtube-dl...detected... 

Checking OPTIONAL dependencies: jackd...detected... python...detected... xwininfo...detected... cdda2wav/icedax...detected... dvgrab...NOT DETECTED... gdb...detected... gconftool-2...detected... xdg-screensaver...detected... 

Successfully loaded 307 Weed filters
Successfully loaded 3 compound filters
Loading default keymap from /home/vvd/.local/share/lives/fxdefs.perkey...
Updating keymap file /home/vvd/.local/share/lives/fxdefs.perkey...готово.
готово.

Welcome to LiVES version 3.2.0-pre, vvd !

But it's Core 2 Duo E6550 with 2 cores:

$ sysctl -n kern.smp.cpus
2
$ sysctl -n hw.model
Intel(R) Core(TM)2 Duo CPU     E6550  @ 2.33GHz

Sometimes it write in console:

du: invalid option -- b
usage: du [-Aclnx] [-H | -L | -P] [-g | -h | -k | -m] [-a | -s | -d depth] [-B blocksize] [-I mask] [-t threshold] [file ...]
grep: /proc/cpuinfo: No such file or directory
cat: /etc/lsb-release: No such file or directory
grep: /proc/stat: No such file or directory
VVD commented 3 years ago

Almost all File menu items are inactive.

VVD commented 3 years ago

cat /proc/cpuinfo|grep processor = grep processor /proc/cpuinfo

VVD commented 3 years ago
  lives_snprintf(command, PATH_MAX, "%s /proc/cpuinfo 2>/dev/null | %s processor 2>/dev/null | %s -l 2>/dev/null",
                 capable->cat_cmd, capable->grep_cmd, capable->wc_cmd);
  lives_popen(command, TRUE, buffer, 1024);
  capable->ncpus = atoi(buffer);

I can write equivalent for FreeBSD.

VVD commented 3 years ago
char *com = lives_strdup_printf("%s %s", capable->cat_cmd, LSB_OS_FILE), *ret;

capable->distro_name = uname -s capable->distro_ver = uname -r capable->distro_codename = none

VVD commented 3 years ago
int64_t get_cpu_load(int cpun) {
  /// return reported load for CPU cpun (% * 1 million)
  /// as a bonus, if cpun == -1, returns boot time

It's possible to get load average:

$ sysctl -n vm.loadavg
{ 0,43 0,36 0,36 }

But full cpu load - don't know how.

VVD commented 3 years ago
char *com = lives_strdup_printf("%s -sb0 \"%s\"", EXEC_DU, dirname);

FreeBSD's du doesn't support -b0 and can't show size in bytes. Just run du -s -B 1024 and use it as KB.

salsaman commented 3 years ago

Thanks for the feedback.

The 3 build / startup issues you mentioned are now corrected in git.

I'll look at the other ones mentioned now.

salsaman commented 3 years ago

Just run du -s -B 1024 and use it as KB.

Why not du -sB 1 ?

salsaman commented 3 years ago

Also, if you have jackd installed, you should compile with jack-dev installed.

salsaman commented 3 years ago

cpu load is not used yet : LiVES does its own load measurements during playback. In future it might be used as an optional extra check, since the built in measurement is reactive and not pro-active.

VVD commented 3 years ago

Just run du -s -B 1024 and use it as KB.

Why not du -sB 1 ?

du -B in FreeBSD have different behavior: https://www.freebsd.org/cgi/man.cgi?query=du&apropos=0&sektion=0&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html Output of du in FreeBSD always in KB, MB and etc, but not in bytes. -B mean something like round to this size.

$ du -s -B 1 .
132     .
$ du -s -B 1024 .
132     .
$ du -s -B 1048576 .
16384   .
salsaman commented 3 years ago

I have just pushed some changes which should fix all of the issues + patches you mentioned, as well as adapting better to smaller screen widths (I was testing mainly with 1600 x 900).

You will need to run autoconf after updating from git in order for the changes to take effect.

Most of the bugs were due to recently added code, which hasn't been well tested yet.

Note: at this stage you can also click on Help / Check for Optional Features to see if there is anything else to install to get the best experience.

salsaman commented 3 years ago

OK, it says that -B argument is rounded up to the next multiple of 512. So I guess setting it to 512 and then dividing by 512 is the best option.

I noticed also that it was failing to get the mountpoint for the working directory, so I have changed the method used for this, now it calls 'df' rather than partsing /proc/mounts.

Checked the changes into git.

VVD commented 3 years ago

-B argument is rounded up to the next multiple of 512, but overall size rounded up to this blocksize, not in 512 blocks.

$ du -B 1 file
17421   file
$ du -B 512 file
17421   file
$ du -B 1024 file
17421   file
# du -B 4096 file 
17424   file
$ ls -l file
-rw-r--r--  1 root  wheel  17813884 Oct  1 17:34 file

Size always in KB.

VVD commented 3 years ago
$ BLOCKSIZE=512 du -B 512 file
34841   file
$ BLOCKSIZE=512 du -B 1024 file
34842   file
VVD commented 3 years ago
$ ls -ld ~/livesprojects/._Trash
d-wxr----x  2 vvd  wheel  512  2 окт.  01:16 /home/vvd/livesprojects/._Trash

Why permissions of the "._Trash" are so weird 341? :-D

make install will fix that, you might need to delete that directory first manually though.

VVD commented 3 years ago

Version from master just exit on yearly start:

$ lives

LiVES 3.2.0-pre
Copyright 2002 - 2020 Gabriel Finch (salsaman+lives@gmail.com) and others.
LiVES comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details.

df: unrecognized option `--output=source,target'
usage: df [-b | -g | -H | -h | -k | -m | -P] [-acilnT] [-t type] [-,]
          [file | filesystem ...]
salsaman commented 3 years ago

OK, should all work now !

Also I pushed a fix for a regression (not deleting old clip sets correctly + some related issues + some fixes for the player window size). You should update anyway because of this.

VVD commented 3 years ago

Names of the menu items are too long on russian: изображение English is shorter: изображение

File=Файл Edit=Правка Play=Просмотр Effects=Эффекты Tracks=Дорожки Selection=Выбор Tools=Инструменты Render=Рендер View=Вид Help=Справка

Translate all messages is too big work… This file po/ru.po?

salsaman commented 3 years ago

Yes.

You can change it more easily on launchpad though: https://translations.launchpad.net/lives/trunk/+pots/lives/ru/+translate

salsaman commented 3 years ago

If you change it on launchpad then your changes will become part of the package release.

VVD commented 3 years ago

Do I need register? :-(

VVD commented 3 years ago

https://translations.launchpad.net/lives/trunk/+pots/lives/ru/1121/+translate ???

salsaman commented 3 years ago

https://launchpad.net/~lp-l10n-ru

salsaman commented 3 years ago

OK, the release is pretty much done now. I am creating a pre-release build for public testing. Do you think you will have a chance to update the translation in the next few days ? It would be great to include it in the release.

VVD commented 3 years ago

The procedure is very strange and hard… Is there any other way? An easier way. I can attach a diff or just fixed file, as I did for lives.

salsaman commented 3 years ago

Yes a patch would be fine also, then I can just upload the .po file to launchpad after.

VVD commented 3 years ago

Ok. Testing my patch to ru.po.

BTW, build without checking system weed doesn't work. :-(

VVD commented 3 years ago

md5sum...NOT DETECTED...

FreeBSD use name for this utility "md5", without "sum".

VVD commented 3 years ago

I need 30 pixels more: изображение There are a lot of space around Gravity, Mouse Mode and Insert Mode - how to decrease this space?