add MatN appendixes, Andrea Quickstart, Phyllis Editing mods
authorGood Guy <good1.2guy@gmail.com>
Mon, 13 Jan 2020 15:06:15 +0000 (08:06 -0700)
committerGood Guy <good1.2guy@gmail.com>
Mon, 13 Jan 2020 15:06:15 +0000 (08:06 -0700)
17 files changed:
4windows.png [new file with mode: 0644]
CinelerraGG_Manual.tex
common/packages.tex
editing-img001.png [new file with mode: 0644]
format_setting.png [new file with mode: 0644]
load_files.png [new file with mode: 0644]
magnifier.png [new file with mode: 0644]
packages.png [new file with mode: 0644]
parts/AuxilaryPrograms.tex [new file with mode: 0644]
parts/Developer.tex [new file with mode: 0644]
parts/Editing.tex
parts/Quickstart.tex [new file with mode: 0644]
pulldown_button.png [new file with mode: 0644]
some_editing.png [new file with mode: 0644]
title_color.png [new file with mode: 0644]
ydiff_change.png [new file with mode: 0644]
ydiff_same.png [new file with mode: 0644]

diff --git a/4windows.png b/4windows.png
new file mode 100644 (file)
index 0000000..77ed5bd
Binary files /dev/null and b/4windows.png differ
index f8792eed2c1cfb15a5547a8a6c71e0f9d1cd3fd8..fe5905236ce0c1c58750552ff2d6fdc4aae4e12b 100644 (file)
@@ -49,6 +49,12 @@ svgnames
 \include{parts/Translations}
 \include{parts/Licenses}
 
+\begin{appendices}
+\addappheadtotoc
+\include{parts/Quickstart}
+\include{parts/Developer}
+\include{parts/AuxilaryPrograms}
+\end{appendices}
 
 \include{parts/Glossary}
 \printnomenclature      % print glossary
index 866b786c69b8cd40270410e21c3872023b09ca1f..e85860dbd3227b4104436a6cfa9272f0029b8273 100644 (file)
 \usepackage[colorinlistoftodos,textsize=tiny]{todonotes}    % todo package
 \setlength{\marginparwidth}{1.6cm}                          % fix left margin for todo
 
+\usepackage{scrextend}
+\usepackage{enumitem}
+
 \usepackage[intoc]{nomencl}                         % glossary package
 \makenomenclature                                           % make glossary
 
diff --git a/editing-img001.png b/editing-img001.png
new file mode 100644 (file)
index 0000000..0659fde
Binary files /dev/null and b/editing-img001.png differ
diff --git a/format_setting.png b/format_setting.png
new file mode 100644 (file)
index 0000000..3321f2b
Binary files /dev/null and b/format_setting.png differ
diff --git a/load_files.png b/load_files.png
new file mode 100644 (file)
index 0000000..493dfef
Binary files /dev/null and b/load_files.png differ
diff --git a/magnifier.png b/magnifier.png
new file mode 100644 (file)
index 0000000..489b614
Binary files /dev/null and b/magnifier.png differ
diff --git a/packages.png b/packages.png
new file mode 100644 (file)
index 0000000..1731000
Binary files /dev/null and b/packages.png differ
diff --git a/parts/AuxilaryPrograms.tex b/parts/AuxilaryPrograms.tex
new file mode 100644 (file)
index 0000000..fdecaa8
--- /dev/null
@@ -0,0 +1,182 @@
+\chapter{Auxiliary Programs}%
+\label{cha:Auxiliary_Programs}
+\section{Using Ydiff to check results}
+\label{sec:Ydiff to check results}
+
+Delivered with Infinity Cinelerra and in the Cinelerra path, there is a file \ {}``ydiff.C''. \ This program compares the output from 2 files to see the differences . \ Do: cd cin\_path and key in ``make ydiff''. 
+\medskip
+
+You can now use this to check the quality differences of various outputs. \ For example, in this same directory key in:
+\hspace{2em}./ydiff /tmp/yourfile.mp4 /tmp/yourfile.mp4 
+\medskip
+
+Since you are comparing a file to itself, you will see a clean looking white window in the left-hand corner and columns 2,3,4 will be all zeros. \ Run this same command with a 3rd spacing parameter of {}-1 as shown below, and you will see artifacts of comparing 2 files starting in a different position.
+\medskip
+
+\hspace{2em}./ydiff /tmp/yourfile.mp4 /tmp/yourfile.mp4 -1
+\medskip
+
+Now render yourfile using different quality levels and run ydiff to compare the 2 results. \ You will see only noise difference which accounts for the quality level. \ Columns 2,3,4 might no longer be exactly zero but will represent only noise differences. \ The ydiff output is debug data with lines that show frame size in bytes, sum of error, and sum of absolute value of error. \ The frames size is sort of useless, the sum of error shows frame gray point drift and the abs error is the total linear color error between the images. \ At the very end is the total gray point drift and total absolute error on the last line.
+
+{                                      % uses braces to localize caption alignment changes.
+\begin{figure}
+       \captionsetup{justification=raggedright,singlelinecheck=false}
+       \includegraphics[width=0.4\linewidth]{ydiff_same.png}
+       \caption{Exact match}
+       \vspace{-9cm}
+       \hspace{0.4\linewidth}
+       \captionsetup{justification=raggedleft,singlelinecheck=false}
+       \includegraphics[width=0.4\linewidth]{ydiff_change.png}
+       \caption{{\textquotedbl}giraffe{\textquotedbl} artifacts on 2 files spaced differently}
+\end{figure}
+}
+\clearpage
+
+\section{Image Sequence Creation}
+\label{sec:Image Sequence Creation}
+Example script to create a jpeglist sequence file is next:
+\medskip
+
+\begin{lstlisting}[numbers=none]
+#!/bin/bash
+out="$1"
+dir=`dirname "$out"`
+shift
+geom=`jpegtopnm "$1" | head -2 | tail -1`
+w=`(set - $geom; echo $1)`
+h=`(set - $geom; echo $2)`
+exec > $out
+echo "JPEGLIST"
+echo "# First line is always JPEGLIST"
+echo "# Frame rate:"
+echo "29.970030"
+echo "# Width:"
+echo "$w"
+echo "# Height:"
+echo "$h"
+echo "# List of image files follows"
+while [ $# -gt 0 ]; do
+if [ x`dirname "$1"` = x"$dir" ]; then f=./`basename "$1"`; else f="$1"; fi
+echo "$f"
+shift
+done
+\end{lstlisting}
+\medskip
+
+Example usage of this script follows:
+\medskip
+
+\ \ \ \ \ jpeglist.sh outfile infiles*.jpg
+\medskip
+
+\section{Webm / Vp9 Usage and Example File (credit Frederic Roenitz)}
+\label{sec:Webm / Vp9 Usage and Example File}
+
+There are some common VP9 rendering options files that support creation of video for YouTube, Dailymotion, and other online video services. \ Webm / VP9 \ is a media file format which is free to use under the BSD license and is open-source; thus there are no licensing issues to be concerned about. \ The Webm container is based on Matroska for video and Opus for audio.
+\medskip
+
+Youtube easy startup steps are documented in the previous section, A.2. \ These same steps have been verified to work for creating Dailymotion videos -- however, the created files must be renamed before uploading to change the youtube extension to webm instead for Dailymotion.
+
+{}- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+\medskip
+
+Below is one of the VP9 rendering options file with documentation for specifics:
+\medskip
+
+webm libvpx-vp9
+\medskip
+
+\# 20171114-2203
+\# from https://developers.google.com/media/vp9/settings/vod/
+\# 1280x720 (24, 25 or 30 frames per second)
+\#
+\#
+\# Bitrate (bit rate)
+\#
+
+\# VP9 supports several different bitrate modes:
+\# mode 
+\# Constant Quantizer (Q) \ \ Allows you to specify a fixed quantizer value; bitrate will vary
+\# Constrained Quality (CQ) Allows you to set a maximum quality level. Quality may vary within bitrate parameters
+\# Variable Bitrate (VBR) \ \ Balances quality and bitrate over time within constraints on bitrate
+\# Constant Bitrate (CBR) \ \ Attempts to keep the bitrate fairly constant while quality varies
+
+\#
+\# CQ mode is recommended for file-based video (as opposed to live
+\# streaming). The following FFMpeg command-line parameters are used
+\# for CQ mode:
+\#
+\# FFMpeg 
+\# -b:v {\textless}arg{\textgreater} \ \ \ \ \ Sets target bitrate (e.g. 500k)
+\# -minrate {\textless}arg{\textgreater} Sets minimum bitrate.
+\# -maxrate {\textless}arg{\textgreater} Sets maximum bitrate.
+\# -crf {\textless}arg{\textgreater} Sets maximum quality level. Valid values are 0-63, lower numbers are higher quality.
+\#
+\# Note: Bitrate is specified in kbps, or kilobits per second. In video
+\# compression a kilobit is generally assumed to be 1000 bits (not
+\# 1024).
+\#
+\# Note: Other codecs in FFMpeg accept the -crf parameter but may
+\# interpret the value differently. If you are using -crf with other
+\# codecs you will likely use different values for VP9.
+
+bitrate=1024k
+
+minrate=512k
+
+maxrate=1485k
+
+crf=32
+\medskip
+
+\# Tiling splits the video into rectangular regions, which allows
+\# multi-threading for encoding and decoding. The number of tiles is
+\# always a power of two. 0=1 tile, 1=2, 2=4, 3=8, 4=16, 5=32.
+tile-columns=2
+\medskip
+
+\# modified from https://trac.ffmpeg.org/wiki/EncodingForStreamingSites
+\# To use a 2 second GOP (Group of Pictures), simply multiply your output
+\# frame rate * 2. For example, if your input is -framerate 30, then use
+\# -g 60.
+g=240
+\medskip
+
+\# number of threads to use during encoding.
+threads=8
+\medskip
+
+\# May be set to good, best, or realtime
+quality=good
+\medskip
+
+\# This parameter has different meanings depending upon whether quality
+\# is set to good or realtime. Speed settings 0-4 apply for VoD in good
+\# and best, with 0 being the highest quality and 4 being the
+\# lowest. Realtime valid values are 5-8; lower numbers mean higher
+\# quality
+\medskip
+
+speed=4
+
+\section{Details about .bcast5 Files}
+\label{sec:Details about .bcast5 Files}
+\medskip
+
+The following extensions of files in Cinelerra's .bcast5 directory are explained below.
+
+% Labeling requires a parameter with the longest word of the labels.
+\begin{labeling}{ladspa\_plugins{\dots}}
+       \item [.dat] represent saved ``data'' for perpertual sessions and color palettes; maybe others
+       \item [.idx] original ``index'' files that were created for loaded video to speed up seeking
+       \item [.mkr] ffmpeg specific ``marker'' index file that is created for each video to aid seeks
+       \item [.rc] rc stands for ``run commands'' so basically represents a script
+       \item [.toc] toc is ``table of contents'' file for MPEG video files (a type of index)
+       \item [Cinelerra\_plugins] a list of the currently loaded plugins available in your Cinelerra session
+       \item [Cinelerra\_rc] the user's preferences and settings are saved in this file to be used on startup
+       \item [ladspa\_plugins{\dots}] ist of currently loaded ladspa plugins for each version of Cinelerra being used
+       \item [layout\#...\_rc] user-defined window layout setup with the layout name as part of the file name
+       \item [.xml] generally contain the current settings of plugins that you have used
+       \item [.png] thumbnails of files in Resources so they do not have to be created over and over
+\end{labeling}
+
diff --git a/parts/Developer.tex b/parts/Developer.tex
new file mode 100644 (file)
index 0000000..441e35b
--- /dev/null
@@ -0,0 +1,408 @@
+\chapter{Developer's Section}%
+\label{cha:Developer's_Section}
+
+\section{How Builds Really Work and Even More Options}
+\label{sec:How Builds Really Work and Even More Options}
+
+This section describes how builds really work if you want to know more about making changes or understanding the process; probably only for a developer or system administrator.
+\medskip
+
+Builds occur in 4 basic steps:
+\smallskip
+\begin{enumerate}[nosep]
+       \item unpack/patch source code
+       \item configure build
+       \item make build targets
+       \item installation
+\end{enumerate}
+
+So, an example of what happens in 4 steps for a single-user build would be as follows:
+\smallskip
+
+\begin{enumerate}[nosep]
+       \item unpack/patch source code\newline
+       git clone --depth 1 ``git:/{\dots}/target'' cinelerra5\newline
+       ./autogen.sh
+       \item configure build\newline
+       ./configure --with-single-user
+       \item make build targets\newline
+       make 2{\textgreater}\&1 {\textbar} tee log
+       \item installation\newline
+       make install
+\end{enumerate}
+\medskip
+
+A lot of things can be tweaked to change the results. \ Mostly these changes are parameters to the configure step, which can change important build related items, like the application name, or where and what the target system directories should be. \ This makes it possible to have several versions at the same time on the same computer if needed. \ To see what it is that the makefiles use to build Cinelerra, look at the resulting top-level global\_config file which is created by the ./configure step.
+\medskip
+
+Building Cinelerra requires many thirdparty libraries, and it is recommended that you use the static build version included in the git repo. \ Some of them are patched, and fix significant bugs. \ It is important to note that because system installation historically has been with as many shared objects as possible, the defaults are that any system library detected during configuration setup will be used, whe\begin{lstlisting}[numbers=none]n the package is built ``-{}-without-single-user'', which is the default build. \ To build with static thirdparty libraries for system install to the system /usr area, use:
+\smallskip
+
+\hspace{2em}.configure -{}-enable-static-build --prefix=/usr
+\medskip
+
+Sometimes, additional package parameters and variables are needed during thirdparty builds. \ These optional values occur before and after the ``configure'' and ``make'' commands during a build. \ A presentation of the format of the package qualified variable names and how they appear in the build procedure are:
+\medskip
+
+\hspace{2em}
+\begin{tabular}{@{}ll}
+       pkg.cfg\_vars & prepended to configure\\
+       pkg.cfg\_params & appended to configure\\
+       pkg.mak\_vars & prepended to make\\
+       pkg.mak\_params & appended to make\\
+    pkg.cflags & added as CFLAGS+=\$(cflags) to pkg.vars\\
+       pkg.cppflags & added as CPPFLAGS+=\$(cppflags) to pkg.vars\\
+\end{tabular}
+\bigskip
+
+These steps are done for EACH of the packages in the thirdparty build:
+\smallskip
+
+\hspace{2em}{\textless}pkg.cfg\_vars{\textgreater} ./configure {\textless}pkg.cfg\_params{\textgreater}
+
+\hspace{2em}{\textless}pkg.mak\_vars{\textgreater} make {\textless}pkg.mak\_params{\textgreater}
+\bigskip
+
+The thirdparty Makefile has a set of default vars and params used to build each of the needed thirdparty packages, but you can specify new or overriding values for these Makefile substitutions. \ These thirdparty build config changes are specified in the top-level file: cin\_config. \ By using this file, you can save the configuration changes made for the current build to use the next time you do a new build. \ For example, to add an include file path to the giflib build, add this line to cin\_config:
+\medskip
+
+\hspace{2em}giflib.cflags := -I/usr/local/include/giflib5
+\medskip
+
+To have a param/var change apply to all thirdparty builds, use:
+\medskip
+
+\hspace{2em}CFG\_VARS, CFG\_PARAMS, MAK\_VARS, MAK\_PARAMS
+\medskip
+
+CFLAGS, CXXFLAGS and LDFLAGS are forwarded to the thirdparty build environment via:
+\medskip
+
+\hspace{2em}CFLAGS=-ggdb ./configure -{}-with-single-user
+\medskip
+
+However, there is no guarantee that the thirdparty build will honor the environmental flags.
+
+Finally, there are build controls, which enable/disable and set build features.
+\bigskip
+
+A few of the more useful ./configure -{}-parameters are:
+\smallskip
+
+\hspace{2em}
+\begin{tabular}{@{}ll}
+       {}-{}-with-jobs=n & where n=number of build jobs; defaults to 1.5*cpus+2\\
+       {}-{}-enable-static-build & build all 3rd party libs; defaults to yes if single-user, else no\\
+       {}-{}-with-single-user& build installs to {\textless}build\_path{\textgreater}/bin; \ no system installation\\
+\end{tabular}
+
+\medskip
+
+The ./configure command builds ``global\_config''. \ The global\_config is read by the thirdparty/Makefile to create the recipes and definitions used by the thirdparty build.
+\medskip
+
+There are a lot of different options.  Thirdparty library build control is available in the configure step of the build.  Thirdparty libraries are built on a demand basis.  So if you use:
+\medskip
+
+\hspace{2em}
+\begin{tabular}{@{}ll}
+  --enable-libname=auto & \# the static-build enable, or the lack of a system library causes a build\\
+  --enable-libname=yes  &  \# this forces the thirdparty build\\
+  --enable-libname=no   &  \# this forces no thirdparty build\\
+\end{tabular}
+\medskip
+
+FFmpeg is a ``strongly connected component''in the build linkage and widely influences the Cinelerra library demands.  It is possible to make small additions to the ffmpeg configuration step using the environment variable FFMPEG\_EXTRA\_CFG.  For example, to eliminate the use of libvdpau (an nvidia support library) in the ffmpeg configuration step after you have determined that it is causing an error, use:
+
+\begin{itemize}[label={},nosep]
+       \item make clean
+       \item autogen.sh
+       \item export FFMPEG\_EXTRA\_CFG={\textquotedbl} -{}-disable-vdpau{\textquotedbl} 
+       \item ./configure {\dots}
+\end{itemize}
+\medskip
+
+Specific information on using the current ffmpeg GIT repository follows.  You have to supply the actual URL location of the ffmpeg git as you can see in this example ?bld.sh? script:
+\medskip
+
+\begin{lstlisting}[numbers=none]
+#!/bin/bash\newline
+() ./autogen.sh\newline
+./configure --with-single-user --with-booby --with-git-ffmpeg=https://git.ffmpeg.org/ffmpeg.git
+make && make install ) 2>1 | tee log
+mv Makefile Makefile.cfg
+cp Makefile.devel Makefile
+\end{lstlisting}
+
+Since the procedure for obtaining the latest ffmpeg version is not always kept up-to-date and the line numbers will always change, you may have to create that patch first. \ Generally those line numbers are only updated by a developer when a new stable version with worthwhile features is actually included in the Cinelerra build. FFmpeg is constantly changing and many times the git version is not as stable as desired.
+
+\section{Thirdparty Parallel Build}
+\label{sec:Thirdparty Parallel Build}
+
+The Makefile in the thirdparty build directory employs a set of macros used to create a build rule set of thirdparty library build dependencies.  The standard build sequence of [source, config, build] is used to prepare thirdparty products as static libraries.  Build package dependency can be specified in the Makefile std-build macro call.  These Makefile macro calls define the rules used for each thirdparty build.  The expanded rule definitions may be viewed by using:
+\smallskip
+
+\hspace{2em}make -C thirdparty rules
+\medskip
+
+Individual package libraries can be rebuilt, via:
+\smallskip
+\hspace{2em}make -C thirdparty <pkg>-clean;  make -C thirdparty <pkg>
+\medskip
+
+The rule targets create the set of thirdparty packages which are built from local source archive copies of thirdparty source code and patches, if needed.  The build rule set of dependencies allows for compiling multiple thirdparty programs simultaneously using maximum computer resources.  This parallel build speeds up the process considerably.  For example, these are full static build timings on the production build machine (full build includes building all thirdparty programs as well as all of Cinelerra):
+\medskip
+
+\hspace{2em}
+\begin{tabular}{@{}rcr}
+       1 cpu & = & 61 mins\\
+       12 cpus & = & 7.5 mins\\
+       24 cpus & = & 2 mins\\
+\end{tabular}
+
+\section{Find Lock Problems with Booby Trap}
+\label{sec:Find Lock Problems with Booby Trap}
+
+A Booby Trap is used in CinGG for setting a trap to catch lock problems that might have been missed. \ It will trap boobies only if compile by adding ``-{}-with-booby'' on the configuration command line. \ \ This is the default if you compile using ./bld.sh from the GIT repository. \ It should not interfere with normal execution.
+\medskip
+
+If you have the time and inclination, enable -{}-with-booby and send any trap output that you find. \ Maybe you will catch some boobies and if you do, send a snapshot of any boobies you find.
+\medskip
+
+There are 2 potential traps:
+\begin{itemize}[nosep]
+       \item If you try to unlock a lock when it is not locked
+       \item If you execute a drawing operation without holding the window lock
+\end{itemize}
+\medskip
+
+The trap prints the following in the controlling terminal window:
+\medskip
+
+\hspace{2em}BOOBY!hspace{2em}{\textless}backtrace{\textgreater}
+\medskip
+
+An example backtrace is below along with a hint below on how to analyze:
+
+\begin{lstlisting}[numbers=none]
+/home/cin5/bin/./cin(_Z5boobyv+0x3f) [0x557069fa9b2f] /home/cin5/bin/./cin(_ZN13BC_WindowBase9draw_lineEiiiiP9BC_Pixmap+0x3b)0x557069fb9a9b]
+/home/cin5/bin/./cin(\_ZN10BC_ListBox11draw_borderEi+0x73)[0x557069f7dc73]
+/home/cin5/bin/./cin(+0x9707fb) [0x557069f7e7fb]
+/home/cin5/bin/./cin(\ZN10BC\ListBox16center\selectionEv+0x4e)[0x557069f7f2ae]
+/home/cin5/bin/plugins/video/sketcher.plugin(_ZN17SketcherCurveList6updateEi+0x1a0)[0x7f1b8002a4c0]
+/home/cin5/bin/plugins/video/sketcher.plugin(_ZN18SketcherCurveColor17handle_done_eventEi+0x76)[0x7f1b8002a5f6]
+/home/cin5/bin/./cin(_ZN15BC_DialogThread3runEv+0xd8)[0x557069f6fb78]
+/home/cin5/bin/./cin(_ZN6Thread10entrypointEPv+0x45)[0x557069fc5995]
+/usr/lib/libpthread.so.0(+0x7a9d) [0x7f1b91b4ea9d]
+/usr/lib/libc.so.6(clone+0x43) [0x7f1b90accb23]
+\end{lstlisting}
+
+To see which routine is reporting the booby key in:
+\smallskip
+
+\hspace{2em}c++filt
+\smallskip
+
+And then the 2nd line in the backtrace above:
+\smallskip
+
+\hspace{2em}\_ZN13BC\_WindowBase9draw\_lineEiiiiP9BC\_Pixmap
+\smallskip
+
+It comes back with the routine as:
+\smallskip
+
+\hspace{2em}BC\_WindowBase::draw\_line(int, int, int, int, BC\_Pixmap*)
+\medskip
+
+\section{Valgrind Support Level}
+\label{sec:Valgrind Support Level}
+
+Valgrind is a memory mis-management detector.  It shows you memory leaks, deallocation errors, mismanaged threads, rogue reads/writes, etc.  Cinelerra-GG memory management is designed to work with Valgrind detection methods.  This assists in developing reliable code.  Use of Valgrind points out problems so that they can be fixed.  For example, when this version of Cinelerra shuts down, it deallocates memory instead of just stopping, thus making memory leak detection possible.
+\medskip
+
+The best way to compile and run valgrind is to run the developer static build. This takes 2 steps and you must already have gdb and valgrind installed:
+\medskip
+
+\begin{enumerate}[nosep]
+       \item The standard static build:\newline
+               cd /path/cinelerra-5.1\newline
+               make clean\newline
+               ./bld.sh
+       \item run the incremental rebuild for debug objs\newline
+               CFLAGS=-ggdb make -j8 rebuild\_all
+\end{enumerate}
+\medskip
+
+Now your Cinelerra obj has all of the debug stuff. Next run valgrind as root for the most useful results:
+\smallskip
+
+\hspace{2em}cd /path/cinelerra-5.1/cinelerra
+
+\hspace{2em}valgrind -{}-log-file=/tmp/log -{}-leak-check=full -{}-num-callers=32 ./ci
+\medskip
+
+This runs Cinelerra under the control of valgrind, and produces a log file in /tmp which will list information about any leaks, usually clearly identifiable. \ Be sure to Quit out of Cinelerra normally instead of Ctrl-C or a SEGV otherwise the program does not have a chance to cleanup and there will be some false alarms. But it runs very slowly, and is basically single threaded, which means that race conditions may be impossible to catch... like one thread deletes memory that another thread is currently using. But overall it is a big help and if you test any new features, please email the log output. \ A lot of effort when writing the code was put into trying to be sure that all of the object constructors have matching destructors so that the leaks can be identified. There are already several libraries that create predictable memory leaks and valgrind does a good job for most of these.
+\medskip
+
+It is impossible to test everything with valgrind because some things are just too big and slow for a practical test. \ Occasionally you can find a leak or an illegal memory access. There are several false alarms that are difficult to avoid {\textquotedbl}Conditional jump{\textquotedbl} messages, and {\textquotedbl}unhandled DW\_OP\_{\textquotedbl}, but anything with the word {\textquotedbl}illegal{\textquotedbl} in the message is important. Memory leaks that originate in Cinelerra are good to find and fix, but are usually not deadly.
+
+\section{CFLAGS has -Wall}
+\label{sec:CFLAGS has -Wall}
+When compiling Cinelerra-GG Infinity a CFLAGS option used is "Wall" where the "W" represents warnings and "all" means all.  This causes the compile to check for simple mistakes that can be detected automatically and issue warnings when the code is questionable.  It can also detect situations where the compiler will generate incorrect code, like type-punned pointer.  By turning on this flag, when new code is vetted for predictable mistakes, the code can be corrected before becoming manifested in the application.
+
+\section{Prof2 -- A Profiler}
+\label{sec:Prof2 -- A Profiler}
+
+Frequently there is a problem with a program running slow and you do not know why. \ You need a thumbnail analysis of where the program is spending most of its time without all of the overwhelming details. \ This is when a Profiler comes in handy.
+\medskip
+
+There are many different profilers available -- this particular one does not do anything special and is fairly ordinary in that it just characterizes frequency of execution of various regions in the program. \ However, it has some pretty good strengths as listed next.
+\medskip
+\begin{enumerate}[nosep]
+       \item It takes very little or no preconditioning, i.e. setup
+       \item The effect it has on the running program is minimal
+       \item It runs almost at full speed, which is really nice
+       \item It is not particularly thread aware
+       \item Reports where it is executing at intervals of 100 times a second
+\end{enumerate}
+\subsection{Setup}
+
+This profiler works on x86\_64 systems and you must be root to compile and run it. \ Also, you must install your operating system's ``iberty'' -- for example, which would be binutils-devel for Fedora or libiberty-dev for Ubuntu 18.
+\medskip
+
+Go to the top level Cinelerra directory.
+
+Key in: \ \ \ \ cd prof2
+
+Key in: \ \ \ \ make clean all install
+
+Later, if you wanttitle to remove this from the system, key in: \ \ \ \ make uninstall
+\subsection{How to use}
+
+The program you are profiling should be compiled debuggable with stack frame and symbols enabled.
+\medskip
+
+To see help, key in: \ \ prof -h
+\smallskip
+
+usage: -h [-o path] [-d] [-e] [-p libpath] [-012] [-u \#] cmd args...
+
+\hspace{2em}
+\begin{tabular}{@{}ll}
+       -o & profile output pathname, -=stdout, -{}-=stderr\\
+       -d & debug otitleutput enabled\\
+       -e & child debug output enabled\\
+       -p & specify path for libprofile.so\\
+       -0 & usr+sys cpu timer intervals (sigprof)\\
+       -1 & usr only cpu timer intervals (sigvtalrm)\\
+       -2 & real time timer intervals (sigalrm)\\
+       -u & profile timer interval in usecs\\
+\end{tabular}
+\medskip
+
+To execute the profiler, key in: \ \ 
+\medskip
+
+\hspace{2em}prof -o /tmp/prof\_list.txt ./cin
+\medskip
+
+where /tmp/prof\_list.txt is the output file and in this case ``cin'' is the Cinelerra binary file. \ The pid of this command will be displayed on the startup window. \ This comes in handy in the use case where there is a lot of initial load and possible configuration setup inside of Cinelerra and you want to profile plugins and not necessarily all of the setup steps. \ Then you can use the following command in another window to continue running Cinelerra and obtain the more useful information:
+\medskip
+
+\hspace{2em}kill -USR1 pid
+\medskip
+
+Running this command refreshes the memory maps used for profiling. \ When you are profiling a plugin, you want to run this AFTER the plugin loads.
+\medskip
+
+\subsection{Results}
+
+There are 3 sections in the resulting output file of this stochastic quick analysis.
+\medskip
+
+\begin{enumerate}[nosep]
+       \item The first section is a histogram of the timer intervals of that sample set. \ Each function occupies a region of addresses. \ One hundred times a second, the profiler samples the program address in the region of execution.
+       \item In the second section, there is another histogram of the cumulative frequency of all things in the call stack and this should point out who is the culprit. \ For example, a codec calls a bunch of subroutines, the cost of the subroutines is accumulated to the codec parent caller. \ This makes the actual cpu user much more apparent.
+       \item The last section is for the library spaces. \ Each library occupies a region and the profiler adds up the time spent in each of the libraries by frequency.
+\end{enumerate}
+\smallskip
+
+On the very bottom is a 1 line summary which shows you if there is a bad guy and who it is.
+\medskip
+
+\subsection{Sample output}
+
+\medskip
+
+%\begin{lstlisting}[numbers=none] %\textwidth
+
+---- profile start ----\\
+1020 ticks 43 modules 81412 syms\\
+\begin{tabular}{@{}rrp{\linewidth-6em}}
+ 0.010s & 0.1\% & Autos::copy(long, long, FileXML*, int, int) /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & BinFolders::copy\_from(BinFolders*) /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & cstrdup(char const*)     /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & XMLBuffer::encode\_data(char*, char const*, int) /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & XMLBuffer::encoded\_length(char const*, int) /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & PluginClient::send\_configure\_change() /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & UndoVersion::scan\_lines(UndoHashTable*, char*, char*) /mnt0/.../cin\\
+ 0.010s & 0.1\% & UndoStackItem::set\_data(char*) /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & UndoStack::load(\_IO\_FILE*) /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & BC\_Bitmap::cur\_bfr()     /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & YUV::init\_tables(int, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*) /mnt0/build5/cinelerra-5.1/bin/cin\\
+\end{tabular}\\
+...\\
+...\\
+---- profile calls ----\\
+\begin{tabular}{@{}rrl}
+ 0.010s & 0.1\% & AutoConf::save\_xml(FileXML*)   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & Automation::copy(long, long, FileXML*, int, int)   1.0 /mnt0/.../cin\\
+ 0.010s & 0.1\% & AWindow::run()             1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & Canvas::stop\_single()      1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & ColorPicker::new\_gui()     1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & ColorWindow::create\_objects()   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & PaletteWheel::draw(float, float)   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & PaletteHex::update()       1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & 0.1\% & CWindowGUI::draw\_status(int)   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 0.010s & \textbf{0.1\%} & CWindowCanvas::status\_event()   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+\end{tabular}\\
+...\\
+...\\
+\begin{tabular}{@{}rrl}
+ 0.990s & \textbf{9.7\%} & BC\_Xfer::xfer\_slices(int)   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 1.880s & \textbf{18.4\%} & DirectUnit::process\_package(LoadPackage*)   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 1.880s & \textbf{18.4\%} & DirectUnit::rgba8888()     1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 3.910s & \textbf{38.3\%} & \_\_init\_array\_end           1.1 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 5.450s & \textbf{53.4\%} & LoadClient::run()          1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 7.890s & \textbf{77.4\%} & Thread::entrypoint(void*)   1.0 /mnt0/build5/cinelerra-5.1/bin/cin\\
+ 7.890s & \textbf{77.4\%} & start\_thread               1.0 /lib64/libpthread-2.28.so\\
+\end{tabular}\\
+----\\
+----\\
+\begin{tabular}{@{}rrl}
+ 0.010s & 0.1\%/  0.0\% & /lib64/libm-2.28.so\\
+ 0.010s & 0.1\%/  0.0\% & /lib64/libexpat.so.1.6.8\\
+ 0.020s & 0.2\%/  0.1\% & /lib64/libXext.so.6.4.0\\
+ 0.020s & 0.2\%/  0.1\% & /lib64/libXft.so.2.3.2\\
+ 0.020s & 0.2\%/  0.1\% & /lib64/libxcb.so.1.1.0\\
+ 0.040s & 0.4\%/  0.2\% & /lib64/ld-2.28.so\\
+ 0.050s & 0.5\%/  0.2\% & /lib64/libpng16.so.16.34.0\\
+ 0.130s & 1.3\%/  0.6\% & /lib64/libX11.so.6.3.0\\
+ 0.180s & 1.8\%/  0.8\% & /lib64/libz.so.1.2.11\\
+ 0.200s & 2.0\%/  0.9\% & /lib64/libfontconfig.so.1.12.0\\
+ 0.380s & 3.7\%/  1.8\% & /lib64/libpthread-2.28.so\\
+ 1.660s & 16.3\%/ 7.7\% & /lib64/libc-2.28.so\\
+ 7.480s & 73.3\%/34.7\% & /mnt0/build5/cinelerra-5.1/bin/cin\\
+\end{tabular}\\
+
+\textbf{10.200t 0.001u+0.000s 21.566r  47.3\%}
+\\
+---- profile end ----
+%\end{lstlisting}
+\medskip
+
+The summary line above in Bold represents the User time, System time, Real time and the percentage is how much Timer time elapsed over Real time so in this case the measurement covers 47.3\% of time. 
+\medskip
+
+So why use a Profiler? \ Because it is the ``ls'' for executable functions!!
index 30d131d580f7e6d2e618d18a02dbb63fa2fd9a94..8aeb6c0606ef517a193188ebab2476239d306f61 100644 (file)
@@ -366,6 +366,47 @@ The original (older) method of dragging while in Arrow mode, lets you just left
 \end{itemize}
 This last section on Dragging, outlines the difference between \textit{column selection} and \textit{marking selection}.  Column selection is available to make it easy to still be able to do some dragging in I-beam mode whereas Marking selection makes it easy to drag clips together that are not columnated.
 
+\subsection{Selection Methods}%
+\label{sub:selection_method}
+
+Concerning \textit{Selection} methods, the following information is partially pertinent to all editing, but is most important to keep in mind when using Drag and Drop Editing.
+
+Originally, there was the column oriented timeline drag selection which can be seen
+in 1 of 3 ways: 
+
+\begin{enumerate}
+    \item  a highlighted vertical column
+    \item  the colored line region between the [ in and ] out marker labels
+    \item  a single flashing line
+\end{enumerate}
+
+The selection priority works like this. When the highlighted vertical drag column is in use (1), it has the highest precedence and is used
+as the selection.  When the column is a single line (2), then the fall back
+selection is the [in/out] marker region, if they are set.  When they
+are not set, and the cursor is flashing, then the selection start=end
+and the selection is empty, but it does have a position on the
+timeline which can be used for editing.  This is input for the
+vertical style cut/paste drag/drop editing.
+
+More recently, in addition to the column oriented timeline drag selection, there is now \textit{group} 
+capabilities which have various \textit{edit} selections.  These are
+created in the Drag and Drop editing mode by clicking edits to toggle
+select/deselection.  These groups are input to a different (more modern) set
+of cut/paste/overwrite drag/drop editing.  You can see this set of
+operations when you click on an edit with the middle mouse
+button, and are also available using the shortcuts shown. They are more like text
+editor commands to include \texttt{ctrl+x=cut}, \texttt{ctrl+c=copy}, \texttt{ctrl+v=paste}, and so on $\dots$
+The keyboard Delete key is not hooked to these operations, and is hooked to the
+original editing methods.
+
+In this "group" mode, if there are In/Out markers set, they enter the selection priority queue
+between the column selection and the cursor only. You can see the In/Out markers selected
+region colored line across the timebar (slightly underneath where the time, samples or frames show
+) on the main timeline 
+extending between the [ and ].  This means that when
+the highlighted cursor selection is empty, the In/Out selection will be used.
+
+
 \section{Inter-View Mode / Identifying Source Targets Editing}%
 \label{sec:inter-view_identifying_source_target_editing}
 
@@ -408,13 +449,15 @@ you can operate the following buttons to display what you need to see and to mov
     is updated with that start position.
 \end{itemize}
 
+\pagebreak
 Figure~\ref{fig:inter-view02} displays Inter-View window and its relation to the timeline, viewer, and compositor.
-\begin{figure}[htpb]
+\begin{figure}[h]
     \centering
     \includegraphics[width=0.9\linewidth]{images/inter-view02.png}
     \caption{Inter-View mode and the timeline}
     \label{fig:inter-view02}
 \end{figure}
+
 The Inter-View mode works for Media, Proxy, and User Bins.  When the preview window has only black bars on the top and bottom, it means that this particular media is not loaded in the timeline.  So when you are in Proxy, meaning that the Proxy files are loaded on the timeline, there will be only black bars for the corresponding Media file UNLESS there is an audio track associated with the video.  Because audio tracks are not proxied, they will show for Media but not for Proxy.
 
 \section{Some Specific Editing Tools}%
@@ -422,6 +465,74 @@ The Inter-View mode works for Media, Proxy, and User Bins.  When the preview win
 
 This section covers some more detailed editing tools and scenarios for edit management.
 
+\subsection{Editing EDLs within a Project}%
+\label{sub:edit-edls}
+
+To edit EDL that is included with your project as Clips, Nested Clips, Referenced File, or Xml you can use the option "Open EDL" 
+in the Resources window for the highlighted media.  Then with a simple button click you can return to your main 
+timeline project.  For example, if you have a nested clip that originally had several plugins added to it before
+it was nested, you can edit those plugin parameter values. Previously to make any changes to these types of EDL
+you had to remake the whole clip from scratch.
+
+Here is how this works. In the Clip or Media folder or on a timeline EDL edit, the option "Open EDL" for the highlighted clip or nested clip is available so that when you choose this option, that EDL will be brought up on the timeline superseding the current EDL that exists on the timeline.  Now, once the clip is open on the timeline, you can edit it however you want. The previous timeline EDL is "pushed onto a stack" so it can be recalled by "popping the stack" with a click of the left mouse button in the upper right hand corner of the timeline to the left of the "shell cmds" icon.  Initially this button displays a 0 to indicate your initial timeline/project.  Then this button will read 1 if you choose "Open EDL" and then back to 0 and your original timeline with the left mouse click.  You can go several levels deep so instead of 1, it could be 2, 3, ... but this requires some thought to avoid potential confusion.  
+\\
+
+An example of a typical set of steps to follow is:
+
+\begin{enumerate}
+   \item Load your media using insertion strategy of "Replace current project".  There will be \# 0 in the
+    upper right hand corner of the main menu with the tooltip of "Close EDL".
+   \item Highlight a selection on the timeline and press the "To clip" icon and click the green checkmark OK. 
+   \item In the Resources window, open the Clip folder and you will see that Clip 1 is present.
+   \item Highlight Clip1 and right mouse the item to bring up available options and select "Open EDL".
+   \item Now you will see the timeline change from the original media to just the clip content and the \# in the
+    upper right hand corner will change from 0 to 1.
+   \item Add a visible effect, like AgingTV to the timeline.
+   \item Click on the \# 1 in the main menu bar to see he timeline restored to the original media.
+   \item Drag the clip from the Resources Clip folder to the timeline and you will see the AgingTV effect.
+\end{enumerate}
+
+You can follow the same steps as above by first using the option "Nest to media" in the Clip folder which nests the clip and moves it out of the Clip folder to the Media folder.  Then use "Open EDL" on the Nested EDL in the media folder.  When you Open EDL and edit the changes, those changes will take affect on any and all occurrences of that nested clip on the current and/or original timeline. The option to unnest that clip and put that back into the Clip folder is the option "EDL to clip".  The nested clip is still in the Media folder.  It will now have a name of the next available Clip \# but the comment contains the previous name so you can tell where it came from.
+
+Instead of using the \# number on the main menu to close the current EDL, both the Media and Clip folders have "Close EDL" options with the left mouse button. Clicking on the \# number is quick and easy but for infrequent usage it is not obvious, whereas if you use "Open EDL" you see "Close EDL" right below that and so it is very obvious.  In addition in the case of where you have opened a EDL, and you no longer see that clip in the folder, the right mouse button where no media is highlighted will also display the Close EDL option.
+
+\pagebreak 
+\begin{figure}[h]
+    \centering
+    \includegraphics[width=0.8\linewidth]{images/editing-img001.png}
+    \caption{Once you have an an Open EDL, there are 2 ways to close it.}
+    \label{fig:timeline}
+\end{figure}
+\relax
+
+In addition to the "Open EDL" option in the Resources menu, this option is available on the timeline when the cursor is on an EDL-type edit.
+To get to this option, click on the middle mouse button on that edit.  If it is not EDL, the option will not be shown.  In summary:
+
+\begin{center}
+    \small
+    \begin{tabular}{l l}
+        \toprule
+
+       Media folder of Resources window & Open EDL for Nested or Referenced EDLs \\
+       Clip folder of Resources window & Open EDL for clips \\
+       Track timeline & Open EDL for Nested or Referenced EDLs \\
+        \bottomrule
+    \end{tabular}
+\end{center}
+
+An aside - when nesting and unnesting clips to take advantage of this feature, names of the media can lead to some confusion.  For example, if you nest a clip, the new name in the Media folder is the word "Nested" followed by an underscore with the date and timestamp, another underscore, and then the clip name.  Then when you unnest this Media folder clip via the "EDL to clip" option, the name will be changed in the Clip folder to the next available Clip \#.  However the comment field will reflect the nested clip name from which it was derived.  To avoid confusion you can easily change the name for these clips in either the Clip or Media folder because they are not real files at this point. To do so, highlight the clip name in Resources, click on Info and type in a new name.
+
+For additional safety, the "Open EDL" feature includes additional backup capabilities. Automatically Cinelerra saves a backup when certain changes are made or you can always use the shortcut "b" to do one yourself, although keep in mind it will be overwritten whenever Cinelerra wants to do another backup.  Now there is a shortcut for the backup shortcut "b" so you can keep your hand on the mouse instead of the keyboard.  Just click on the \# in the upper right hand corner of the main window.  If \# is at 0, it backs up to backup.xml, if at 1, it backs up to backup1.xml and so on ... up to backup9.xml.
+
+When "Open EDL" is invoked, the current EDL and current undo stack are both "pushed", and the active session EDL is replaced with the target clip/nested edl.  A new undo stack is created, and the active backup.xml file name is decorated with the stack level.  So, backup.xml is backup1.xml when your edits are at stack level 1, backup2.xml at stack level 2, and so on.  This means that if you "load backup" at stack level 1, the session will reload from history at stack level 1, not the main session.
+
+\begin{figure}[htpb]
+    \centering
+    \includegraphics[width=0.6\linewidth]{images/lenght.png}
+    \caption{Edit Length window}
+    \label{fig:lenght}
+\end{figure}
+
 \subsection{Edit Length}%
 \label{sub:edit-lenght}
 
@@ -646,7 +757,12 @@ The EDL session and the rendered output are visually equivalent.  Nested assets
 
 It is somewhat important to note that nested assets and nested clips will have index files automatically created.  These index files can start to clutter up your \texttt{\$HOME/.bcast5} directory with files named \texttt{Nested\_\#\#\#.idx} and you may want to periodically delete any index files which are no longer in use.
 
-\paragraph{Nested Clips} It is also possible to create \textit{clips} and convert them to \textit{nested edl}.  This is done by first creating a clip using the standard cut, clipboard, paste, and/or edit panel buttons.  Now, using the resources \textit{clip} folder, select a clip to be nested, and use the right mouse button to select a clip.  This activates the clip popup menu.  Select the \textit{Nest} menu item, and the clip will be converted to a \textit{Nested: Clip}. Conversely, you can select a \textit{Nested: Clip}, use the \textit{UnNest} menu item, and the clip will be reverted to a \textit{Clip}.  This works similarly to the group / un-group editing features of many graphic design editing programs, but in this case the groups are rendered compositions.  They can not be proxied (figure~\ref{fig:nesting}).
+\paragraph{Nested Clips} It is also possible to create \textit{clips} and convert them to \textit{nested edl}.  This is done by first creating a clip using the standard cut, clipboard, paste, and/or edit panel buttons.  Now, using the resources \textit{clip} folder, select a clip to be nested, and use the right mouse button to select a clip.  This activates the clip popup menu.  Select the \textit{Nest to media} menu item, and the clip will be converted to a \textit{Nested: Clip}. Conversely, you can select a \textit{Nested: Clip}, use the \textit{EDL to clip} menu item, and the clip will be reverted to a \textit{Clip}.  This works similarly to the group / un-group editing features of many graphic design editing programs, but in this case the groups are rendered compositions (figure~\ref{fig:nesting}).
+
+Nested clips can be proxied and when they are, the resulting files
+are placed in the user's \$HOME/Videos directory by default.  This can be modified by changing
+
+Settings $\rightarrow$ Preferences $\rightarrow$ Interface tab, Nested Proxy Path.
 \begin{figure}[htpb]
     \centering
     \includegraphics[width=0.9\linewidth]{images/nesting.png}
diff --git a/parts/Quickstart.tex b/parts/Quickstart.tex
new file mode 100644 (file)
index 0000000..93f04f7
--- /dev/null
@@ -0,0 +1,319 @@
+\chapter{QuickStart}%
+\label{cha:Quickstart}
+
+\section{Cinelerra-GG Quick Start Guide}%
+\label{sec:cin_quick_start_guide}
+
+Cinelerra is a software program NLE, Non-Linear Editor, that provides a way to edit, record, and play audio or video media on Linux.   It can also be used to color correction, retouch photos, motion tracking, watch TV, and create DVDs.
+
+\subsection{Install the Software}%
+\label{sub:install_software}
+
+On the internet, click on the Download page at:  \quad {\small \url{https://cinelerra-gg.org/downloads/}}
+Here you will see several Operating System distro packages that are already built for you to download.  Click on your preference and read the specific instructions for usage.
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=1.0\linewidth]{images/packages.png}              
+\end{figure}
+
+However, if you want to get going as quickly as possible, just do this so that everything is in 1 place:
+
+\begin{itemize}[noitemsep]
+       \item Download your Operating System’s tar file from {\small \url{https://cinelerra-gg.org/download/tars/}} to \texttt{/tmp}.
+       \item Key in:  cd /name-of-directory-where-you-want-the-software (for example, \texttt{cd /software})
+       \item Key in:  \texttt{mkdir cin}
+       \item Key in:  \texttt{cd cin}
+       \item Key in:  \texttt{tar -xJf /tmp/cinelerra-5.1-*.txz}   (if you put the tar in \texttt{/tmp} AND replace * with full name)
+\end{itemize}
+
+\subsection{Start Cinelerra GG}%
+\label{sub:start_cinelerra_gg}
+
+Depending on how you installed the software, you can log in as root or as a user if you used a package.
+
+\begin{itemize}[noitemsep]
+       \item Key in:  \texttt{/your-software-directory-path/bin/cin}
+       \item Or if you installed using the pkg method, click on the \textit{Cin icon}.
+\end{itemize}
+
+You will now see 4 separate windows appear.  The top 2 windows from left to right are the Viewer which is most useful for previewing clips and media and the Compositor which displays the current working frame at the timeline position.  The bottom 2 windows are the Cinelerra Program, also called the timeline, which is where the real work gets done and the Resources window showing a selection of media or effects.
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=1.0\linewidth]{images/4windows.png}
+       \caption{Clockwise: Viewer; Compositor; Resources and Main/Program/Timeline}    
+\end{figure}
+
+Any of these windows can be resized to better suit your needs.  Note that if your system’s native language is not English, some of the words you see on the screen will be correctly translated for you, others will be in english, and some will have not very good translations.
+
+It is important to know that Cinelerra does not directly change your media.  It writes all changes to what is called the EDL, Edit Decision List.  This way you original media remains completely intact.
+
+\subsection{Load Media}%
+\label{sub:load_media}
+
+On the main timeline program window are many pulldowns, the first of which is \textit{File}.
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=1.0\linewidth]{images/load_files.png}
+       \caption{Load media window -- note the icons top right for more options}        
+\end{figure}
+
+\begin{enumerate}
+       \item Click on \texttt{File} for a list of available options and note that in the right hand column are shortcuts for
+       many of the options that will come in handy if you use Cinelerra often.
+       \item Next click on the second one down -- \texttt{Load files$\dots$} -- which brings up the Load menu.
+       \item Below \texttt{Select files to load} on the top left side is a textbox and if you look all the way to the right
+       side of the textbox, there is a down arrow which you use to navigate your file system.  Highlight the
+       desired file system and you will see that directory name appear in the textbox and the files below.
+       \item Scroll to the media file you would like to work on and highlight that file.  When you do, you will
+       see that filename also appear in the textbox below the listing of files.  You could have directly
+       keyed in that file in that textbox instead.
+       \item On the bottom of the Load menu, is a box called \textit{Insertion strategy}.  For getting started the
+       default of \texttt{Replace current project} is sufficient.  But you can click on the down arrow to see what
+       is available for future use.
+       \item Now click on the green colored checkmark on the bottom left hand side to actually load the file
+       and see it appear on the timeline in Cinelerra’s main window and a single frame in the Compositor.
+       The first track will most likely be video thumbnails and the next tracks may be audio waveforms.
+       \item Press the space bar in the main Program window and your video will start playing and press the
+       space bar again to stop the play.  While playing, you should see the video in the Compositor
+       window in the upper right hand side of your screen and if you have your audio hooked up, you
+       will hear the sound.  To get back to the beginning of the video, hit the home key on your keyboard.
+\end{enumerate}
+
+\subsection{Choose Output Format}%
+\label{sub:choose_output_format}
+       
+You can skip this step if you want the format of your output to be the same as your input.  However, to create output media that is widely viewable on many platforms, to include phones and television, you should set your format accordingly.
+
+\begin{enumerate}
+       \item On the main timeline, use the \textit{Settings} pulldown (about the $7^{th}$ pulldown from the left side top) and
+       click on \texttt{Format} which is the first option in that list.
+       \item A \textit{Set Format} menu will appear that shows what the current format is for your loaded media in an
+       Audio and a Video tab.  In the United States, the Video Frame rate is usually expected to be 29.970     and usually the Color model is only changed if you have a personal preference.
+       \item The \texttt{Canvas size} is probably the only thing you will want to change here in order to get to the
+       most commonly viewable settings.  On the right hand side of the Width parameter is a down arrow. 
+       Left click the down arrow to see your options.
+\end{enumerate}
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=0.8\linewidth]{images/format_setting.png}
+       \caption{Format menu to change settings}        
+\end{figure}
+
+\begin{enumerate}[resume]
+       \item Highlight $1280\times720$ HD for a good common option.
+       \item Click \texttt{OK} to have this option take effect.  When you do, the Compositor window may change to fit
+       this option and may look wrong sized.
+       \item If the video now looks too small or too large in the Compositor, you will want to \textit{autoscale} it to
+       look correct when the new media is created.  To do this, mouse over to the Resources window in the
+       lower right hand corner and under the word Visibility, highlight \textit{Video Effects} to see some
+       plugins.
+       \item Mouse over the \textit{Auto Scale} icon, left click to highlight the words underneath the icon, and mouse
+       drag the icon to the timeline video track.  When you see a white colored outline show on that track,
+       drop the Auto Scale icon there and you will see that the video may now automatically scale to a
+       new value.  Click on the magnifying glass icon on the brown colored line beneath the main timeline
+       video which opens a new window.  In that window, again use the down arrow to choose $1280\times720$
+       HD, then dismiss this window.
+\end{enumerate}
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=0.6\linewidth]{images/magnifier.png}
+       \caption{Effect brown bar with magnifier}       
+\end{figure}
+
+\begin{enumerate}[resume]
+       \item If not needed, to remove the Auto Scale plugin, right mouse on the brown line and choose \texttt{Detach}.
+\end{enumerate}
+
+\subsection{View and Listen}%
+\label{sub:view_listen}
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=1.0\linewidth]{images/pulldown_button.png}
+       \caption{Menu pulldowns at the top with Transport buttons below.  Note the yellow tooltips too.}        
+\end{figure}
+
+\begin{enumerate}
+       \item On the second line, below the pulldowns, are transport buttons to move back and forth on the
+       timeline and play forward or reverse, fast or slow, or a single frame.  When you mouse over one of
+       these buttons, a yellow colored tooltip appears to tell you its function along with a key shortcut
+       inside of parenthesis.  When you left click the mouse on the transport button it starts the play and 
+       click again to stop it.  As you use these buttons, watch the Compositor to watch your video.
+       \item On the timeline, you only see thumbnails and not every single picture.  You may want to
+       use your keyboard’s \textit{down arrow} to expand the thumbnails and the \textit{up arrow} to unexpand them -- on
+       United States keyboard, the arrow keys are generally together on the lower right hand side of the
+       keyboard, a little to the right of the space bar.  This is a more cpu intensive operation and for very
+       large video can be time-consuming.
+\end{enumerate}
+
+\subsection{Edit/Compose}%
+\label{sub:edit_compose}
+
+There may be sections of your media that you want to delete, or audio that is hard to hear and needs to be enhanced, or there is a need for a descriptive title that you want to add.  Here are a few basics.  But first be sure that you are in \textit{cut and paste} mode (this is the default) by checking to verify that you see a gold color around the “I” i-beam mode icon as in the figure above.  If the arrow to the left is gold, you are in \textit{drag and drop} mode so switch to \textit{cut and paste} by clicking on the “I” instead.
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=1.0\linewidth]{images/some_editing.png}
+       \caption{From left to right:\textit{ Audio 1} is disarmed --  BandSlide transition in \textit{Video 1} -- A highlighted section.}       
+\end{figure}
+
+\begin{enumerate}
+       \item You should look at the \textit{Edit} pulldown - $2^{nd}$ from the upper left on the main timeline to see the
+       most common options to use.  The first option in the list is \texttt{Undo} followed by a terse comment of  
+       the last operation that you performed that can be undone.
+       \item To delete a section of video/audio is described next.  Various ways to do that are available but the
+       easiest is to move your mouse and left click at the beginning of the section you want to delete on the
+       timeline and while holding down the left mouse button, drag to the end of the section to be deleted. 
+       When you do this, a white colored highlighted section becomes visible.  Use the edit pulldown and
+       choose the \texttt{split/cut} option to cut out the highlighted area (note the shortcut of \texttt{x}).  Remember if you
+       cut the wrong thing out you can always use the Edit pulldown to Undo that.
+       \item To add a transition where there is deleted section which may make your video look disjointed, do
+       the following.   Go back to the Resources window in the bottom right hand corner.  Change to
+       \textit{Video Transitions} by highlighting that underneath the word \textit{Visibility}.  Highlight a transition like
+       \texttt{BandSlide} with the left button mouse click, hold down and drag to the video track and when you see
+       a white colored box around the area that you deleted above, drop the icon.  Right mouse click the
+       icon on the track to vary some parameters like length.
+       \item  To insert another clip from a different video, first you have to load the other video on another track.
+       Go to \textit{File} pulldown again and choose the \texttt{Load files} option.  Type in a directory at the top again and
+       erase any specific file that you may have chosen previously in the bottom 2 textboxes.  It is very
+       important to now change the Insertion strategy to \texttt{Append in new tracks} or you will write over
+       your current work.  But if you make this mistake, you can use the Edit pulldown and Undo that!
+       \begin{enumerate}
+               \item Once the new video is on the track below your current work, you want to work with only this new 
+               track, so disarm your other tracks by looking to the left of each track’s timeline and click the $2^{nd}$ 
+               button beneath the track name, for example Video 1 or Audio 1.  The track name textbox will turn
+               red to remind you that the track has been disarmed.  The boxed area is called the patchbay.
+               \item Move to the area you want to make a clip of on your newly loaded track, hold down the left mouse
+               button and drag the area to be made into a clip which will turn the color white.  Remember, you
+               disarmed the other tracks so only this track is relevant at this time.  On the second line of the main
+               window to the right of the transport buttons, are action buttons and as you mouse over them a
+               yellow colored tooltip explains its purpose.  Find the one that says \textit{To clip} which is on the right
+               hand side of the right bracket symbol.
+               \item Click on \texttt{To clip} and a small window comes up which you can comment in, but you do not have
+               to, so just click on the green checkmark and now you will have a clip.
+               \item Disarm that new track and re-arm your original tracks so you can go back to working on them
+               \item Move your cursor to the spot in your original video where you want to insert the clip.   Make a
+               \textit{Split} with the \texttt{Split | Cut} option.
+               \item Go to the Resources window and under the word Visibility, highlight \textit{Clips} so you can see your
+               recently created clip in the box to the right.  Highlight that clip and drag it to where you did the
+               blade cut and drop it in.
+       \end{enumerate}
+\end{enumerate}
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=1.0\linewidth]{images/title_color.png}
+       \caption{Compositor + Title menu for setting parameters + the Color Picker.}    
+\end{figure}
+
+\begin{enumerate}[resume]
+       \item To add a Title or any wording you will use the \textit{Title} plugin.  In the Resources window, under the
+       word \textit{Visibility}, highlight \textit{Video Effects}.  In the box to the right, many plugin icons appear.   Scroll
+       to the right using the scroll bar at the bottom of the Resources window to locate Title.  Highlight the
+       \textit{Title} icon and drag/drop to your video track.  By now your video track may be in sections as you
+       deleted, added blade cuts, and inserts so where you drop the Title icon will be surrounded with a
+       white colored box.  It will take effect in that entire area so you may want to highlight a section as
+       usual with left mouse click on the timeline and drag to the end of the desired area.
+       \begin{enumerate}
+               \item Right click on the brown colored bar that appeared below your video track to get to options and
+               then left click on \texttt{Show} to get the Title window to appear.
+               \item Now for the fun part.  First type in some words in the bottom large text box just to see what it
+               does.  There are so many variable parameters here and they are a lot of fun to play around with.
+               \item You can dismiss the Title window when finished BUT be sure to leave the brown colored Title bar
+               on the track.  And if you enabled the “drag” feature, you should disable it so you do not forget.
+               \item Right mouse click on the bottom Text box to see many more interesting parameters.
+       \end{enumerate}
+\end{enumerate}
+
+\subsection{Back up your work}%
+\label{sub:backup_your_work}
+
+At this time, or even earlier if you think you might make a mistake or if you are concerned about computer crashes, you should save your work.  Use the \textit{File} pulldown, and you can use \texttt{Save as} to designate a directory and filename.  Then click the green checkmark.  You are saving the EDL which is the set of changes that you have made -- this file is separate from your original media.
+
+\subsection{Create your new media}%
+\label{sub:create_new_media}
+
+\begin{enumerate}
+       \item Once again in the main Program window, click on the \textit{File} pulldown and highlight/click the \texttt{Render}
+       option which is about the $9^{th}$ option down from the top of the list.  A Cinelerra Render menu will
+       appear.
+       \item First key in the first textbox the file to render to under \textit{Select a file to render to}.
+       \item For the \textit{File Format}, click on the down arrow and select FFMPEG (because this is the most
+       commonly used format; later you may want to experiment with others).  To the right of that box,
+       click on the down arrow and highlight \texttt{mp4} -- again because this is common.  When you click on 
+       mp4, notice that if there is an extension to your filename in the \textit{file to render to} above, it may
+       change it to mp4 and if there is none, it will add \texttt{.mp4} because that is what is expected.
+       \item Make sure there is a red colored checkmark next to the words Audio and Video right below if you
+       have/want both audio and video.  To the left of that checkmark box, is a symbol that looks like a
+       wrench.  Click on this for Audio just to see the default Preset options which are just fine so dismiss
+       the menu.  Then click on the wrench for Video and check Pixels by using the down arrow to the
+       right to be yuv420p -- this is most commonly usable option.  And click on the green checkmark.
+       \item Check the Insertion Strategy in the Render Menu window.  You might want to change that to
+       a different strategy than the default of \texttt{Append in new tracks}.  If not, then when the Render is done,
+       your new video will automatically be loaded in another set of tracks below your work tracks.  Click
+       on the green checkmark in the lower left corner to start the render.
+       \item As the render is running, you will see the video play by in the Compositor.  Rendering is usually
+       slow, especially with plugins added.
+\end{enumerate}
+
+\subsection{Play your new media}%
+\label{sub:play_your_new_media}
+
+The file you created in the Render step should now be playable.  You can test this in Cinelerra most easily by going to the Resource window in the lower right corner, clicking on the Media folder, and dragging and dropping the last video to the Viewer window.  There is a separate set of transport buttons on the bottom on that screen to use for playing.
+
+\section{YouTube with Cinelerra}%
+\label{sec:youtube_with_cinelerra}
+
+To create a youtube or dailymotion video, you can easily follow the steps below.  You will have to learn a lot more about Cinelerra to take full advantage of its capabilities and make some really special videos, but this is just to get a start and to see the possibilities.
+
+\begin{enumerate}
+       \item Start Cinelerra; usually you can do this by clicking on Cinelerra icon or key in \texttt{{cin\_path}/bin/cin}.
+       \item In the Program window on the lower left side of your screen, left mouse click the \textit{File} pulldown.
+       \item You will see \textit{Load files} as the second choice so left mouse click this and find your video file to
+       load, highlight it, and check the green checkmark in the lower left hand corner to get it loaded.
+       \item Edit your video in the Program window using the basic commands of:
+       \begin{itemize}
+               \item play and then stop using the space bar
+               \item move the mouse and then left click to move the insertion (location) pointer
+               \item cut a section out by holding down the left mouse and drag, then key in “x” to cut or “c” to copy
+               \item paste a copy or cut section by moving the insertion pointer, then key in “v”
+       \end{itemize}
+    \item Add a title by highlighting the \textit{Video Effects} in the right hand side Resources window; then
+    highlighting the \textit{Title} icon and dragging it to the Program window video track and dropping.
+    \item Click on the middle icon button (looks like a magnifying glass) on the brown colored Title bar to
+    bring up the Title window bottom text box and key in a title.
+    \item Use the \textit{File} pulldown to select \texttt{Render} to create the desired video.  In the \textit{Render} window just next to the empty box to the right of the \texttt{ffmpeg} file format, click on the down arrow shown there
+    to see the choices and pick \texttt{youtube}.  Then move back up to key in the path and filename to render
+    to.  It will pick all of the defaults automatically for you so then just click on the green checkmark to
+    have it start.  There is a progress bar in the main window, very bottom of the right hand side.
+    \item Key in “q” in the main window to get out of Cinelerra and yes or no to save your edit session.
+\end{enumerate}
+
+Youtube will allow the upload of the resulting rendered file as named.  However, Dailymotion requires that the file be named with an acceptable extension so you must rename the output file to have the extension of \texttt{.webm} instead of \texttt{.youtube}.
+
+There are currently 6 specific variations within the ffmpeg (file format) / youtube (file type) for different video options.  You see these when you click on the wrench to the right of the word Video and then the Compression down arrow in the Video Preset window.  The first 3 are based on Webm/Vp9 (credit Frederic Roenitz) and contain basic comments of usage and where to find more information.
+
+The first 3 below, plus any of the VP9 files under the file type of \textit{webm} are the recommended options to use because they are freely usable in any circumstance.
+
+\begin{center}
+       \begin{tabular}{l p{8cm}}
+               sd.youtube & Standard Definition use with default audio/Opus stereo.youtube \\
+               hd.youtube & High Definition “ “ \\
+               uhd.youtube & Ultra High Definition “ “ \\
+       \end{tabular}
+\end{center}
+
+Alternatives based on h264 and for non-commercial use are listed below.  For Dailymotion, these must be renamed to have a different extension of \texttt{.mp4} instead of \texttt{.youtube} before uploading.
+
+\begin{center}
+       \begin{tabular}{l p{8cm}}
+               sd\_h264.youtube & Standard Definition – must change to audio stereo\_with\_h264.youtube \\
+               hd\_h264.youtube & High Definition -          “ “ \\
+               uhd\_u264.youtube & Ultra High Definition - “ “ \\
+       \end{tabular}
+\end{center}
\ No newline at end of file
diff --git a/pulldown_button.png b/pulldown_button.png
new file mode 100644 (file)
index 0000000..7856a45
Binary files /dev/null and b/pulldown_button.png differ
diff --git a/some_editing.png b/some_editing.png
new file mode 100644 (file)
index 0000000..1902e0a
Binary files /dev/null and b/some_editing.png differ
diff --git a/title_color.png b/title_color.png
new file mode 100644 (file)
index 0000000..f14f68f
Binary files /dev/null and b/title_color.png differ
diff --git a/ydiff_change.png b/ydiff_change.png
new file mode 100644 (file)
index 0000000..bb2cb43
Binary files /dev/null and b/ydiff_change.png differ
diff --git a/ydiff_same.png b/ydiff_same.png
new file mode 100644 (file)
index 0000000..c8ada8d
Binary files /dev/null and b/ydiff_same.png differ