Credit Andrea - add detailed explanation of Dissolve plugin unwanted black flash...
authorGood Guy <good1.2guy@gmail.com>
Sat, 27 Jul 2024 22:36:49 +0000 (16:36 -0600)
committerGood Guy <good1.2guy@gmail.com>
Sat, 27 Jul 2024 22:36:49 +0000 (16:36 -0600)
parts/Developer.tex
parts/Faq.tex

index bca56dc6280d711ea255e7d3e4f2f490468db5bb..0b1096781c86938abe7009a8db53b06d8de2f8ba 100644 (file)
@@ -368,67 +368,65 @@ developer's feedback and experimentation.
 
 \textbf{dav1d} 
 \begin{description}[noitemsep]
-     \item Status - currently \CGG{} is staying at 0.5.  This is disappointing because there
-may be speed gains in version 0.6 that would be beneficial. However, it is usable for decoding
+     \item Status - currently \CGG{} 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.
-     \item Problem - 0.6 dav1d requires NASM 2.14 and uses instructions like vgf2p8affineqb,
+     \item 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 only distros that are built for \CGG{} that are at 2.14 are the latest version
-of Arch, Debian(10), Gentoo, Tumbleweed, and Fedora(31). The rest are at 2.12 and 2.13 including
-the most widely used Ubuntu. The NASM requirement apparently provides for using AVX-512 
+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).
      \item Workaround already in use by \CGG{} - a Makefile was generated to replace Meson usage
-but has to be continuously updated for new releases. Dav1d 0.5 requires NASM 2.13 so at this level
-the newer distros mostly work.  The availability of meson and nasm are a significant problem on
+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.
      \item 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.  Of course, install meson also.
+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 \CGG{}.
 \end{description}
 
 \textbf{OpenExr} 
 \begin{description}[noitemsep]
-     \item Status - currently at latest version 
-     \item Problem - the OpenExr tarball is not a single package but is 2 packages instead
+     \item Status - stable at 2.4.1 from February 2020.
+     \item Problem - the OpenExr tarball is not a single package but is 2 packages instead.
      \item Workaround already in use by \CGG{} - reworked the packages so that it looks like
-one package with 2 stubs
-     \item Your workaround - perhaps use the same workaround
+one package with 2 stubs.
+     \item Your workaround - perhaps use the same workaround.
 \end{description}
 
 \textbf{OpenCV}
 \begin{description}[noitemsep]
-     \item Status - 2 different versions specific for O/S but none for Ubuntu 14, 32 or 64 bit
+     \item Status - 2 different versions specific for O/S but none for Ubuntu 14, 32 or 64 bit.
      \item 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.
-     \item Workaround already in use by \CGG{} - using 3.4.1 for older distros and 4.2 for newer
+     \item Workaround already in use by \CGG{} - using 3.4.1 for older distros and 4.2 for newer.
      \item 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
+Look into opencv4/opencv2/core/types.hpp:711;27.
 \end{description}
 
 \textbf{libaom}
 \begin{description}[noitemsep]
-     \item Status - currently at version 3.0.0 for older O/S and 3.1.1 for newer O/S
-     \item Problem - requires cmake 3.5 at 3.0.0 and 3.6 for 3.1.1
-     \item Workaround already in use by \CGG{} - leaving out of Ubuntu14, Ubuntu, Centos7
-     \item Your workaround - upgrade on those systems to cmake 3.6
+     \item Status - currently at version 3.6.0 for older O/S and 3.8.0 for newer O/S.
+     \item Problem - requires cmake 3.5 at v3.6.0 and 3.7.2 for v3.8.0.
+     \item Workaround already in use by \CGG{} - modify configure.ac to switch from 3.8.0 to 3.6.0 for Ubuntu 16 and delete thirdparty/src/libaom-v3.8.0*.*.
+     \item 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.
 \end{description}
 
 \textbf{x10tv}
 \begin{description}[noitemsep]
-     \item Status - this is the x10 TV remote control
-     \item Problem - INPUT\_PROP\_POINTING\_STICK not defined error on older distros
-     \item Workaround already in use by \CGG{} - leaving out of Ubuntu14, Ubuntu, Centos7
-     \item Your workaround - look into /usr/include/linux/input-event-codes.h
+     \item Status - this is the x10 TV remote control.
+     \item Problem - INPUT\_PROP\_POINTING\_STICK not defined error on older distros.
+     \item Workaround already in use by \CGG{} - leaving out of Ubuntu14, Ubuntu, Centos7.
+     \item Your workaround - look into /usr/include/linux/input-event-codes.h.
 \end{description}
 
-\textbf{libvpx}
+\textbf{lv2 plugins, consisting of 6 routines}
 \begin{description}[noitemsep]
-     \item Status - currently at version 1.8.1
-     \item Problem - when decoding a test file, it failed to correctly load to the timeline
-     \item Workaround already in use by \CGG{} - not upgrading to 1.8.2
-     \item Your workaround - no analysis for a solution has been performed yet
+     \item Status - currently at version 1.18.0 for lv2 and different for other 5.
+     \item Problem - the current versions use cmake but the updated versions now all use meson and \CGG{} is not set up to handle that.
+     \item Workaround already in use by \CGG{} - not upgrading at this time.
+     \item Your workaround - if you are familiar with meson, you can independently upgrade the 6 routines.
 \end{description}
 
 \section{Find Lock Problems with Booby Trap}
index d29b42d90aa107db74babf49fc153cfcff037310..8bc0b6f20d921602fabb82a6df1e8d3e73b43464 100644 (file)
@@ -52,6 +52,22 @@ the plugin in the same track without an alpha channel but not if there is no cli
 And the Transition effect works fine when there is a transition between two clips/images without
 an alpha channel.
 
+\textit{Detailed explanation:}\protect\footnote{Thanks to sge}
+
+If we apply the \texttt{Dissolve} transition, what should actually happen mathematically? For channels r, g, b the contribution of the 1-st clip should gradually fall from 100\% to 0\%, and the contribution of the 2-nd rise from 0\% to 100\%. If we have no alpha channel, this is quite simple. If we have, perhaps the alpha channel should gradually change from the a-value of the 1-st clip $\alpha_{1}$ to the $\alpha$-value of the second ($\alpha_{2}$). For example, if the 1-st clip is a PNG image with opaque letter over some considered pixel, and the 2-nd clip is a PNG with a completely transparent background, the $\alpha$-value should gradually fall from 100\% to 0\% for that pixel.
+
+We can easily look with our eyes which color has an area with complete opacity ($\alpha=100\%$). r=g=b=100\% is white, 0\% is black, 100/0/0\% is red, etc. But what color is hindered under complete transparency? When $\alpha=0\%$, we will always see black. But actually it could be red, or even bright white, but completely masked out by 0\% alpha.
+
+Now let's apply our mathematics with channels. Somewhere in the middle of the Dissolve transition we should get about 50\% of alpha, if $\alpha_{1}=100\%$ and $\alpha_{2}=0\%$. But what for rgb?
+
+If $rgb_{1}$ was 100/100/100\% (white), and $rgb_{2}$ was also 100/100/100\% (fully transparent white), then we will have rgb=100/100/100\%, $\alpha=50\%$. This will look as medium grey, 50\% of white.
+
+If $rgb_{1}$ was 100/100/100\% (white), but $rgb_{2}$ was 0/0/0\% (fully transparent black), then we will have rgb=50/50/50\%, $\alpha=50\%$. This will look as rather dark grey, only 25\% of white.
+
+If $rgb_{1}$ was 100/100/100\% (white), but $rgb_{2}$ was 100/0/0\% (fully transparent red, but visually still looking as black on black background), then we will have rgb=100/50/50\%, $\alpha=50\%$. This will look not as grey anymore, but a bit reddish.
+
+So, the 0\% alpha channel can hinder any actual color of the masked picture, which can become visible if alpha rises above 0\% due to applying some transition of effect.
+
 \paragraph{Do not change Color Model Format in session just before loading backup.}
 Under certain circumstance if you change the Color Model in Settings->Format, quit the session,
 and then "Load backup" when you start again, it will crash.  Workaround is to avoid this scenario.