Using the very latest Libraries
Using the most current libraries can be a challenge for some of the Operating System distros that use
stable compilers, assemblers, and their own libraries. Because they are stable, they frequently do
not keep up with the very latest of thirdparty libraries. Consequently, some program constructs may
not yet be implemented. CINELERRA-GG tries to maintain stability since it is better to have less features
and no crashes. The goal is to make CINELERRA-GG widely available on many platforms rather than
dependent on advanced tools that are not supported on some distros.
CINELERRA-GG attempts to upgrade to the latest releases of many thirdparty libraries about every 3-4
months. But it is often difficult to keep some of these thirdparty libraries up to date as their
developers switch from tried and true standard tools to newer, less standard tools. As a result
in order to build CINELERRA-GG on 2-3 versions of any distro rather than only the most current version,
some thirdparty libraries can not be kept up to date and may even be to the point of no further
updates. In a lot of cases, the updated releases provide little new capabilities but rather
are bug fixes that may not even be relevant to CINELERRA-GG's use.
So as a computer savvy user or a developer, if you would like to build CINELERRA-GG with the latest
thirdparty releases for some of the packages here are a few suggestions based on other
developer's feedback and experimentation.
dav1d
- Status - currently CINELERRA-GG is staying at 0.5.1. This is disappointing because there
may be speed gains in later versions that would be beneficial. However, it is usable for decoding
whereas libaom is a lot slower. Unfortunately, it has no effective encoder.
- Problem - 0.6 dav1d requires NASM 2.14 (and later versions of dav1d use even later versions of NASM) and uses instructions like vgf2p8affineqb,
not exactly an "add" instruction. It also uses meson which is not widely available on all
distros. The more recent NASM requirement apparently provides for using AVX-512
instructions (like vgf2p8affineqb, which is more like a whole routine than a simple instruction).
- Workaround already in use by CINELERRA-GG - a Makefile was generated to replace Meson usage
but has to be continuously updated for new releases. Dav1d 0.5.1 requires NASM 2.13 so at this level
the newer distros will work. The availability of meson and nasm are a significant problem on
many systems which are still in wide use.
- Your workaround - Because a request to dav1d developers to consider changes to
ensure their library is more widely usable does not appear to be in their future, since it works
for them, you can upgrade NASM to 2.14 to stay up to date. Even then, you will have to build using meson and incorporate it into CINELERRA-GG.
OpenExr
- Status - stable at 2.4.1 from February 2020.
- Problem - the OpenExr tarball is not a single package but is 2 packages instead.
- Workaround already in use by CINELERRA-GG - reworked the packages so that it looks like
one package with 2 stubs.
- Your workaround - perhaps use the same workaround.
OpenCV
- Status - 2 different versions specific for O/S but none for Ubuntu 14, 32 or 64 bit.
- Problem - There are really 2 problems here. The first is OpenCV is not really
"Open" in that Surf is patented/non-free and there is no actual source available for certain
capabilities. The second is that cmake 3.5.1 is required for OpenCV 4.2.
- Workaround already in use by CINELERRA-GG - using 3.4.1 for older distros and 4.2 for newer.
- Your workaround - upgrade cmake to 3.5.1 for upgrade to 4.2; add non-free to the
compile; and use binaries that you do not know what they contain since no source code to compile.
Look into opencv4/opencv2/core/types.hpp:711;27.
libaom
- Status - currently at version 3.6.0 for older O/S and 3.8.0 for newer O/S.
- Problem - requires cmake 3.5 at v3.6.0 and 3.7.2 for v3.8.0.
- Workaround already in use by CINELERRA-GG - modify configure.ac to switch from 3.8.0 to 3.6.0 for Ubuntu 16 and delete thirdparty/src/libaom-v3.8.0*.*.
- Your workaround - upgrade on some systems to cmake 3.7.2, switch to using 3.6.0 as in last sentence, or add –libaom-enable=no to configure line when building.
x10tv
- Status - this is the x10 TV remote control.
- Problem - INPUT_PROP_POINTING_STICK not defined error on older distros.
- Workaround already in use by CINELERRA-GG - leaving out of Ubuntu14, Ubuntu, Centos7.
- Your workaround - look into /usr/include/linux/input-event-codes.h.
lv2 plugins, consisting of 6 routines
- Status - currently at version 1.18.0 for lv2 and different for other 5.
- Problem - the current versions use cmake but the updated versions now all use meson and CINELERRA-GG is not set up to handle that.
- Workaround already in use by CINELERRA-GG - not upgrading at this time.
- Your workaround - if you are familiar with meson, you can independently upgrade the 6 routines.
The CINELERRA-GG Community, 2021
https://www.cinelerra-gg.org