From: Good Guy Date: Sun, 15 Mar 2020 23:15:29 +0000 (-0600) Subject: add Andrea new images + add Olaf formatting improvements X-Git-Tag: 2021-05~110 X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcin-manual-latex.git;a=commitdiff_plain;h=7bb811b9f4e3872bdeae155bc63242aa096fc4dc add Andrea new images + add Olaf formatting improvements --- diff --git a/CinelerraGG_Manual.tex b/CinelerraGG_Manual.tex index e709db3..16bd6b9 100644 --- a/CinelerraGG_Manual.tex +++ b/CinelerraGG_Manual.tex @@ -4,28 +4,28 @@ a4paper, oneside, svgnames, %draft -]{memoir} % paper size, font size and other options for document -\input{common/packages.tex} % common packages - +]{memoir} % paper size, font size and other options for document +\input{common/packages.tex} % common packages \input{common/settings.tex} +%\includeonly{common/title,parts/}% Introduction,parts/Installation,parts/Windows + \begin{document} \input{common/title.tex} % create and use custom title page \thispagestyle{empty} % no page numbers - -\newpage -\parskip=14pt +% \newpage +\setlength{\parskip}{1\baselineskip} \frontmatter -\include{parts/Introduction} % Introduction +\include{parts/Introduction} \tableofcontents \pagestyle{ruled} -\mainmatter +\mainmatter% \include{parts/Installation} \include{parts/Windows} diff --git a/common/packages.tex b/common/packages.tex index fcf4bd7..b09ec4c 100644 --- a/common/packages.tex +++ b/common/packages.tex @@ -17,7 +17,7 @@ % "Math font % harmonization" -\usepackage{ +\usepackage{% %amsfonts, mathtools, mathtext,% Cyrillic? @@ -60,7 +60,7 @@ \usepackage{listings} % include code %--------------------------------------------------------------------------- \makeatletter -\renewcommand{\@biblabel}[1]{#1.} +\renewcommand{\@biblabel}[1]{#1.} % FIXME? Do not use @ in LaTeX macro names. %--------------------------------------------------------------- % \usetikzlibrary{% Libraries for TiKz @@ -84,7 +84,7 @@ %\usepackage{ifthen} %\usepackage{tocvsec2} \usepackage[intoc]{nomencl} % glossary package -\makenomenclature % make glossary +\makenomenclature% make glossary % eso-pic makes it easy to add some picture commands to every page % at absolute positions: diff --git a/common/settings.tex b/common/settings.tex index 62f9dc0..86cf48a 100644 --- a/common/settings.tex +++ b/common/settings.tex @@ -13,9 +13,8 @@ % examples. Alternative: invalidate according to TeX rules, so that % other editors do not consider this an error. Do not automate, this % must be adjusted manually.) -% - Done. Remove "images/" from the path of includegraphics, the -% "graphicspath" is already set. - +% - no * in the font +% - No novels in the listings. % The Settings @@ -27,6 +26,7 @@ \definecolor{CinGreen}{RGB}{39,174,96}% "positiv" \definecolor{CinSilver}{RGB}{127,140,141}% \definecolor{CinWhite}{RGB}{239,240,241}% +\definecolor{CinDarkGray}{RGB}{35,38,41}% % Original % \definecolor{chaptercolour}{RGB}{23,85,142} @@ -41,7 +41,7 @@ \renewcommand*{\chapnumfont}{% \normalfont\Large\bfseries\sffamily\color{CinBlueText}} \renewcommand*{\printchapternum}{% - \chapnumfont \resizebox{!}{3ex}{\thechapter}} + \chapnumfont\resizebox{!}{3ex}{\thechapter}} \renewcommand*{\afterchapternum}{% FIXME vskip? \par\hspace{1.5cm}\hrule\vskip\midchapskip} \renewcommand*{\chaptitlefont}{% Overwrites toc @@ -60,6 +60,7 @@ \addtodef{\tocheadstart}{\color{CinBlueText}}{} % If you want the whole TOC to be blue also %\addtoiargdef{\printtoctitle}{\color{CinBlueText}}{} % If you just want the TOC title blue + % PDF properties \hypersetup{colorlinks=true, linkcolor=[named]{CinBlueText}, @@ -74,46 +75,55 @@ editing system, Video editing program} } -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Package listings -\lstset{ % begin settings - %language=R, % the language of the code +% FIXME: PDF c&p d o e s n o t w o r k. +\lstset{% Common settings + frame=single, + framerule=0pt, + framextopmargin=0.25ex, + framexbottommargin=0.25ex, + backgroundcolor=\color{CinWhite}, + basicstyle=\small, + % No numbers by default. If required, activate explicitly in the + % respective lstlisting: numbers=left|right or define a new style + % below. + numbers=none, + numberstyle=\small\color{CinSilver}, + numbersep=1em, % how far the line-numbers are from the code + % Do not show: + showspaces=false, + showstringspaces=false, + showtabs=false, + % + tabsize=2, + breaklines=true, % sets automatic line breaking + % Still undecided: + title=\lstname, % show the filename of files included with + % \lstinputlisting; also try caption instead of + % title inputencoding=utf8, - basicstyle=\ttfamily\footnotesize,% the size of the fonts that are used for the code - numbers=left, % where to put the line-numbers - numberstyle=\tiny\color{black}, % the style that is used for the line-numbers - stepnumber=1, % the step between two line-numbers. If it's 1, each line - % will be numbered - numbersep=5pt, % how far the line-numbers are from the code - %backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color} - showspaces=false, % show spaces adding particular underscores - showstringspaces=false, % underline spaces within strings - showtabs=false, % show tabs within strings adding particular underscores - frame=lines, % adds a frame around the code - %frame=single, % adds a frame around the code - rulecolor=\color{CinSilver}, % if not set, the frame-color - % may be changed on line-breaks - % within not-black text - % (e.g. commens (green here)). - tabsize=2, % sets default tabsize to 2 spaces - captionpos=b, % sets the caption-position to bottom - breaklines=true, % sets automatic line breaking - breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace - title=\lstname, % show the filename of files included with \lstinputlisting; - % also try caption instead of title - keywordstyle=\color{CinGreen}, % keyword style - commentstyle=\color{gray}, % comment style - stringstyle=\color{black}, % string literal style - %backgroundcolor=\color{green!10}, - escapeinside={\%*}{*)},% FIXME? % if you want to add a comment within your code extendedchars=true, - %keepspaces = true %!!!! spaces in comments - texcl=true, postbreak=\mbox{\textcolor{CinSilver}{$\hookrightarrow$}\space}, - % morekeywords={*,...}% FIXME % if you want to add more keywords to the set + keywordstyle=\color{CinDarkGray}, + commentstyle=\footnotesize\color{gray}, + stringstyle=\color{CinDarkGray}, + % Retains the characters as entered: + literate={-}{-}1 {*}{*}1 } +% Our settings specifically for the shell. +% Usage: \begin{lstlisting}[style=sh] +\lstdefinestyle{sh}{% + language=bash, + morekeywords={cp,gdb,git,grep,make,mkdir,tee} +} +% A pseudo-style that does nothing. +% Usage: \begin{lstlisting}[style=nil] instead of: +% \begin{lstlisting}[] +\lstdefinestyle{nil}{} + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %====================== Page geometry % \geometry{left=2.0cm} @@ -161,7 +171,7 @@ \def\CGGI{\CGG\;\INF} % Hyphenation for unknown words and technical terms -\hyphenation{ +\hyphenation{% plug-ins ex-pan-ders } diff --git a/common/title.tex b/common/title.tex index 2092ad7..956c5dd 100644 --- a/common/title.tex +++ b/common/title.tex @@ -24,11 +24,14 @@ \clearpage % Remove the logo -\ClearShipoutPicture +\ClearShipoutPicture% +\thispagestyle{empty} % Title page definition + %\providecommand{\HUGE}{\Huge}% if not using memoir \newlength{\drop}% for my convenience + %% specify the Webomints family %\newcommand*{\wb}[1]{\fontsize{#1}{#2}\usefont{U}{webo}{xl}{n}} %% select a (FontSite) font by its font family ID @@ -39,6 +42,7 @@ \newcommand*{\TXfont}[1]{\fontencoding{T1}\fontfamily{#1}\selectfont} %% Generic publisher’s logo \newcommand*{\plogo}{\fbox{$\mathcal{PL}$}} + %% Some shades \definecolor{Dark}{gray}{0.2} \definecolor{MedDark}{gray}{0.4} @@ -47,28 +51,27 @@ %%%% Additional font series macros \newcommand*{\titleLL}{\begingroup% Lost Languages -\drop=0.1\textheight -\fboxsep 0.5\baselineskip -\sffamily -%\vspace*{\drop} +\drop=0.085\textheight +\fboxsep0.5\baselineskip\sffamily +\vspace*{\drop} \centering -{\textcolor{Dark}{\HUGE Cinelerra-GG Version Infinity}}\par -\vspace{0.5\drop} +\Large\textbf{Video editing for ambitious users}\par +% +\vspace*{2\baselineskip} +{\textcolor{Dark}{\HUGE\textbf{\CGGI}}}\par +\vspace*{0.3\baselineskip} +{\textcolor{Dark}{\large\textbf{% + The Comprehensive User Manual}}}\par +% +\vspace{3\baselineskip} +{\Large\today}\par +\vspace{7.5\baselineskip} {\includegraphics[width=0.1\linewidth]{./images/cin-logo}}\par -\vspace{0.5\drop} -\colorbox{Dark}{\textcolor{white}{\normalfont\itshape\Large -User Manual}}\par -\vspace{0.3\drop} -{\Large Last update}\\ -{\footnotesize \today}\\ -\url{https://www.cinelerra-gg.org}\par -\vspace*{\drop} -{\includegraphics[width=0.5\linewidth]{./images/cin-big.png}}\par +\href{https://www.cinelerra-gg.org}{https://www.cinelerra-gg.org}\par \endgroup} - - \titleLL % use cutom title + %%% Local Variables: %%% mode: latex %%% TeX-master: "../CinelerraGG_Manual" diff --git a/images/export.png b/images/export.png index e1e246a..8defb52 100644 Binary files a/images/export.png and b/images/export.png differ diff --git a/images/load-size.png b/images/load-size.png index 32c43e2..963eab7 100644 Binary files a/images/load-size.png and b/images/load-size.png differ diff --git a/images/load-sort.png b/images/load-sort.png index b53c2e0..f1bdf0c 100644 Binary files a/images/load-sort.png and b/images/load-sort.png differ diff --git a/images/load.png b/images/load.png index 0f63849..2a03550 100644 Binary files a/images/load.png and b/images/load.png differ diff --git a/images/new-project.png b/images/new-project.png index 63fdfb2..4f7dee3 100644 Binary files a/images/new-project.png and b/images/new-project.png differ diff --git a/images/probe.png b/images/probe.png index b7ec3b4..fbb2286 100644 Binary files a/images/probe.png and b/images/probe.png differ diff --git a/images/set-format.png b/images/set-format.png index a60468e..ce43ff6 100644 Binary files a/images/set-format.png and b/images/set-format.png differ diff --git a/images/stream.png b/images/stream.png index 5060f52..f57b975 100644 Binary files a/images/stream.png and b/images/stream.png differ diff --git a/parts/Attributes.tex b/parts/Attributes.tex index 51b84d7..eeb6d0e 100644 --- a/parts/Attributes.tex +++ b/parts/Attributes.tex @@ -6,15 +6,15 @@ No matter what attributes the media file has, it is played back according to the So, if an audio file's sample rate is different than the project attributes, it is resampled. Similarly, if a video file's frame size is different than the project attributes, the video is composited on a black frame, either cropped or bordered with black. -The project attributes are adjusted in Settings $\rightarrow$ Set Format (figure~\ref{fig:set-format}) or can be created in File $\rightarrow$ New. -When you adjust project settings in File $\rightarrow$ New, a new empty timeline is created. +The project attributes are adjusted in \texttt{file $\rightarrow$ Set Format} (figure~\ref{fig:set-format}) or can be created in \texttt{File $\rightarrow$ New}. +When you adjust project settings in \texttt{File $\rightarrow$ New}, a new empty timeline is created. Every timeline created from this point on uses the same settings. -When you adjust settings in Settings $\rightarrow$ Format, media on the timeline is left unchanged. +When you adjust settings in \texttt{Settings $\rightarrow$ Format}, media on the timeline is left unchanged. But every timeline created from this point uses the same settings. \begin{figure}[htpb] \centering - \includegraphics[width=0.5\linewidth]{set-format.png} + \includegraphics[width=0.6\linewidth]{set-format.png} \caption{Set Format window - note the Audio Channel positions} \label{fig:set-format} \end{figure} @@ -32,7 +32,7 @@ Mostly notably is the field for a directory path and a Project Name. \begin{figure}[htpb] \centering - \includegraphics[width=0.5\linewidth]{new-project.png} + \includegraphics[width=0.7\linewidth]{new-project.png} \caption{New Project dialog window} \label{fig:new-project} \end{figure} diff --git a/parts/DVD.tex b/parts/DVD.tex index bcca896..cf08cf2 100644 --- a/parts/DVD.tex +++ b/parts/DVD.tex @@ -58,13 +58,13 @@ For blu-ray, the filesystem generation is slightly harder. First, it creates an NOTE of IMPORTANCE: there is a serious situation with the interaction between the Operating System (OS) and bdwrite when creating blu-ray, that requires automount to be turned off. The blu-ray automatic script unmounts the blu-ray/UDF filesystem but the system has not finalized the directories so the OS creates a new loop file device and the data is loaded and cached for use by the new loop but it is stale. Consequences is that not all of the data is written where it should be. The solution is for the OS not to mount this second mount so we have to make sure it doesn't. There are 2 methods to fix this. The first and easiest is by using the following command to disable automount: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] gsettings set org.gnome.desktop.media-handling automount false \end{lstlisting} This can be reversed when you have completed the blu-ray generation via: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] gsettings set org.gnome.desktop.media-handling automount true \end{lstlisting} @@ -193,7 +193,7 @@ Directory and file names should not be changed at this time because the scripts If bluray to test the filesystem you just created, use the command line interface; loopback mount the filesystem image which was generated in the target directory. For example if blu-ray: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] cd /TargetDirectory/bd_20150820-093747/ mount -o loop,ro ./bd.udfs ./udfs #check the media using a compatible media rendering tool like ffplay @@ -209,20 +209,20 @@ For rewritable blu-ray (recommended) (BD-RE): Note: unwritten (virgin) media must be formatted first using: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] dvd+rw-format /dev/bd #only done once and does not take very long \end{lstlisting} To write or rewrite rewritable blu-ray media: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] cd /TargetDirectory/bd_20150820-093747/ dd if=./bd.udfs of=/dev/bd bs=2048000 #the growisofs command below also works \end{lstlisting} To write blu-ray write-once media: (BD-R) (no pre-formatting needed): -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] cd /TargetDirectory/bd_20150820-093747/ growisofs -dvd-compat -Z /dev/bd=./bd.udfs \end{lstlisting} @@ -234,13 +234,13 @@ For rewritable DVD (DVD+RW): Note: unwritten (virgin) media must be formatted first using: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] dvd+rw-format /dev/dvd #only done once and does not take very long \end{lstlisting} To write a DVD, load blank media and run the following from the command line (requires dvdauthor): -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] cd /TargetDirector/dvd_20160404-175416 growisofs -dvd-compat -Z /dev/dvd -dvd-video ./iso \end{lstlisting} @@ -271,7 +271,7 @@ Below are examples of what the batch jobs generate and you will see on the termi \subsubsection*{SD Example: Partial Output during \CGG{} run} \label{ssub:sd_example_partial_output} -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] ... FFMPEG::open_decoder: some stream times estimated Render::render_single: Session finished. @@ -313,7 +313,7 @@ growisofs -dvd-compat -Z /dev/dvd -dvd-video /tmp/dvd_20160407-113530/iso \subsubsection*{BD Example: Partial Output during \CGG{} run} \label{ssub:bd_example_partial_output} -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] ... FFMPEG::open_decoder: some stream times estimated Render::render_single: Session finished. @@ -349,7 +349,7 @@ for RW: dd if=/tmp/bd_20161224-162059/bd.udfs of=/dev/bd bs=2048000 \subsubsection*{SD Example – Partial Output during writing disc media} \label{ssub:sd_example_partial_output_writing} -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] growisofs -dvd-compat -Z /dev/sr0 -dvd-video /tmp/dvd_20161224-160756/iso WARNING: /dev/sr0 already carries isofs! About to execute 'mkisofs -dvd-video /tmp/dvd_20161224-160756/iso | builtin_dd of=/dev/sr0 obs=32k seek=0' @@ -370,7 +370,7 @@ builtin_dd: 6624*2KB out @ average 0.7x1352KBps \subsubsection*{BD Example – Partial Output during writing disc media} \label{ssub:bd_example_partial_output_writing} -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] growisofs -dvd-compat -Z /dev/sr0=/tmp/bd_20161224-155658/bd.udfs Executing 'builtin_dd if=/tmp/bd_20161224-155658/bd.udfs of=/dev/sr0 obs=32k seek=0' /dev/sr0: "Current Write Speed" is 2.0x4390KBps. @@ -418,7 +418,7 @@ Note that there will be no files in the actual AUDIO\_TS directory. \item There is also a file in the same directory, called bd.jobs. It was the information that was used in creating the batch jobs and may be helpful in determining what parameters were actually used if there are any resulting problems. With enough background knowledge, you can make changes and rerun. \item For blu-ray check to make sure you do not have any spurious loopback disks mounted that may interfere with the correct generation. Use the df command to check this and then the umount command to unmount these. Also, check to make sure you have used the gsettings command to disable automount. \item For blu-ray loopback mount the \texttt{/bd.udfs} image, and see if it has the BDMV filesystem written to it, and in particular a subdirectory named STREAM. Look at the results in \texttt{./udfs} and check for the stream file which should exist in \texttt{./udfs/BDMV/STREAM/00000.m2ts} and should have the same size as \texttt{./bd.m2ts}. - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] mount -o loop /bd.udfs /udfs ls -lR /udfs du -sc /udfs @@ -434,7 +434,7 @@ Note that there will be no files in the actual AUDIO\_TS directory. \item Did you startup \CGG{} from a terminal window so you can see informative messages? \item Is udftools installed for BD and dvdauthor installed for SD? \item Do you have loopback not enabled for bluray? At least temporarily, disable automount via: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] gsettings set org.gnome.desktop.media-handling automount false \end{lstlisting} \item Did you have sufficient disk space for working/writing files? In the \textit{Create} window, the \textit{disk space} will be displayed in green if sufficient, but in red if less than what fits on the disc media. @@ -528,7 +528,7 @@ This program can be used to scan captured broadcast data streams and convert the usage: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] ./zmpeg3cc2txt [-c cc_service ] [-s start:length, ...] [ -t track ] [-v verbose ] [-w wdw mask ] [-x file.xml ] [-o file.udvd ] file.ts \end{lstlisting} @@ -555,7 +555,7 @@ usage: To use this program, the input file must be a transport stream (broadcast video) which contains closed captioning services. The service id defaults to one, and the default video track is zero. Either \texttt{-o} or \texttt{-x} must be specified to indicate the output file format desired. If the output file name is a '-' then stdout is selected as the output file. For example: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] zmpeg3cc2txt -o - /dvb_data/channel5.ts \end{lstlisting} @@ -570,7 +570,7 @@ An MTS file is a video file saved in the high-definition (HD) MPEG Transport Str For creating a blu-ray disc, if you have HDV MPEG-2 media that is in blu-ray format, you can save the original quality of your work, rather than rendering it to another format. Follow the steps below directly instead of going through \CGG{}. It has been tested on 10 different MTS files. -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] du -sb /yourHDVfile.MTS # Determine the size of your file in bytes. blocks=((size-in-bytes/2048 + 4096)) # Convert bytes into blocks + a little more. mkudffs /tmp/newfilename.udfs blocks # Create a file with that \# of blocks + some extra. @@ -588,7 +588,7 @@ Creating BD images to be written to media requires usage of \textit{mount} and \ The line to add to \texttt{/etc/fstab} will look something like the following, assuming your username is \textit{name} and your groupid may be \textit{users} or \textit{name}. If you do an \texttt{ls -l} in your home directory, the $3^{rd}$ and $4^{th}$ fields shown will be your uid or name and gid or groupid which you must substitute in the line below. -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] /home/name/image /home/name/bluray udf noauto,loop,rw,user,uid=name,gid=groupid 0 0 \end{lstlisting} @@ -601,7 +601,7 @@ Writing prepared multiple \CGG{} output files, \texttt{bd.m2ts}, to a single blu Usage of the final preparation taken from the bdwrite program comments: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] ./bdwrite ... == - | -- | --- @@ -614,7 +614,7 @@ One title is built for each playlist; playlist-0 is used as first-play item. Th For example: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] ./bdwrite /tmp/dir /path/menu_titles.m2ts --- /path/clip0.m2ts -- /path/clip1.m2ts -- /path/clip2.m2ts \end{lstlisting} @@ -625,13 +625,13 @@ The basic idea is to use playlist-0 as a menu or directions to use the bluray pl \item Using \CGG{}, design your Title page using a few seconds of video and the \textit{Title} plugin. \item Use BD Create to render your short Title video. \item Next is the most complicated part which is to run \texttt{mkudffs} with a sufficient amount of disk space to hold all of the \texttt{bd.m2ts} files \textit{plus a little more!} To calculate this, you can record the sizes from having run BD Create mkudffs. This number is displayed on the terminal screen when using the command line interface each time and add them together. Or recalculate the size of each \texttt{bd.m2ts} using the formula below and adding them all together. This is the number of blocks used to make a bluray image space for bdwrite to use. For many files, this could require a huge amount of space, so check first. - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] Total size = File0 size in bytes / 2048 + 4094 "+" File1 size in bytes / 2048 + 4094 "+" ... \end{lstlisting} Now create the image file via: \texttt{mkudffs image } where image or udfs is the image name. \item Loop mount the disk image (refer to Section \hyperref[sec:bluray_workaround_mount_umount]{13.7}). \item Then actually write your multiple bd.m2ts type files onto the \textit{image} where \texttt{} is the location of the \CGG{} binary \textit{bdwrite} file and \texttt{} is your directory path. Below is a single line that wrapped around with 4 Titles. - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] /bin/bdwrite image /menu_titles.m2ts --- //bd1.m2ts -- //bd2.m2ts -- //bd3.m2ts -- /bd4.m2ts \end{lstlisting} Note that the 3 dashes after the \texttt{menu\_titles.m2ts} lets the bluray player know to \textit{pause} after playing the few seconds video which contains the index to the rest of the files. The 2 dashes after each of the \texttt{bd.m2ts} signify \textit{stop}. That is when you will have to use your remote to \textit{Search Titles} in order to play the next one you want to see. In addition, if for some reason you just want to \textit{play all}, you will have to add another line to the Title menu as a choice and list all of the 4 files in a row at the end of your bdwrite line without any dashes in between. @@ -728,7 +728,7 @@ Keep in mind that the monitor you are using is NOT the intended output display d \begin{enumerate}[start=13] \item Next, make sure you have the Timeline set in the Main window at the beginning of where you want to start rendering. Also, make sure the first line in the \textit{Batches to render} section is highlighted as you can see above by the blue highlighting. Click on the \textit{Start} box in the Batch Render window and you will see the video playing in the Compositor window. \item \CGG{} program will be stopped when done rendering; you will be at the terminal prompt where you will see it has printed out some informational messages (or errors if problems), the last 2 are: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] To burn dvd, load blank media and run: growisofs -dvd-compat -Z /dev/dvd -dvd-video /mnt0/dvd_20161027-131723/iso \end{lstlisting} diff --git a/parts/Editing.tex b/parts/Editing.tex index f063d10..446f508 100644 --- a/parts/Editing.tex +++ b/parts/Editing.tex @@ -12,9 +12,9 @@ The timeline is where all editing decisions are made (figure~\ref{fig:timeline}) \label{fig:timeline} \end{figure} -The active region is the range of time which is affected by editing commands on the -timeline. The active region is determined first by the presence of in/out points on the -timeline. +The active region is the range of time which is affected by editing commands on the +timeline. The active region is determined first by the presence of in/out points on the +timeline. If those do not exist the highlighted region is used. To reiterate, \emph{highlighting} is done in \emph{cut and paste mode} by moving the insertion point with the mouse in the timeline to where you want to start. Then hold down the LMB, drag the mouse to where you want @@ -38,7 +38,7 @@ On the left of the timeline is a region known as the patchbay. The patchbay ena \item[Expander] which is a down arrow on the right side, is for viewing more options on the patchbay and for viewing the effects represented on the track. You can just click on the expander to expand or collapse the patchbay and the track. If it is pointing sideways, the track is collapsed. If it is pointing down, the track is expanded. Existing effects appear below the media for the track. \end{description} -\noindent Below the textbox name are several toggles referred to as \textit{attributes} for different features (currently there are 5 as shown in figure~\ref{fig:patchbay01}). If the toggle button is shadowed by a color, the feature is enabled . If the toggle is the background color of most of the window, it is disabled. Click +\noindent Below the textbox name are several toggles referred to as \textit{attributes} for different features (currently there are 5 as shown in figure~\ref{fig:patchbay01}). If the toggle button is shadowed by a color, the feature is enabled . If the toggle is the background color of most of the window, it is disabled. Click on the toggle to enable/disable the feature. \begin{wrapfigure}[15]{O}{0.3\linewidth} @@ -74,16 +74,16 @@ The \textit{attributes} are described here next. \item[mixer] in the expanded patchbay for that track designate the multi-camera mixer mode. \item[Overlay mode] in the expanded patchbay is used for porter-duff operations and is full explained in \nameref{cha:overlays} chapter. \item[Nudge] is in the expanded patchbay. The nudge value is the amount the track is shifted left or right during playback. The track is not displayed shifted on the timeline, but it is shifted when it is played back. This is useful for synchronizing audio with video, creating fake stereo, or compensating for an effect which shifts time, all without altering any edits (figure~\ref{fig:overlay}). - + \begin{figure}[htpb] \centering \includegraphics[width=0.7\linewidth]{overlay.png} \caption{Video Overlay, audio Pan and Nudge.} \label{fig:overlay} \end{figure} - + Enter the amount of time to shift to instantly shift the track. Negative numbers make the track play later. Positive numbers make the track play sooner. The nudge units are either seconds or the native units for the track (frames or samples). Select the units by right clicking on the nudge textbox and using the context sensitive menu. Nudge settings are ganged with the Gang faders toggle and the Arm track toggle. Use the mouse wheel over the nudge textbox to increment and decrement the value. - \item[Pan] is available in the expanded patchbay for audio tracks via a panning box. Position the pointer in the panning box and click/drag to reposition the audio output among the speaker arrangement. The loudness of each speaker is printed on the relative icon during the dragging operation. The panning box uses a special algorithm to try to allow audio to be focused through one speaker or branched between the nearest speakers when more than 2 speakers are used. + \item[Pan] is available in the expanded patchbay for audio tracks via a panning box. Position the pointer in the panning box and click/drag to reposition the audio output among the speaker arrangement. The loudness of each speaker is printed on the relative icon during the dragging operation. The panning box uses a special algorithm to try to allow audio to be focused through one speaker or branched between the nearest speakers when more than 2 speakers are used. \end{description} Press the Tab key while the cursor is anywhere over a track to toggle the track arming status. Press Shift-Tab while the cursor is over a track to toggle the arming status of every other track. @@ -104,7 +104,7 @@ most cases. \section{Manipulating Tracks}% \label{sec:manipulating_tracks} -Tracks in \CGG{} either contain audio or video. There is no special designation for tracks other than the type of media they contain. When you create a new project, it contains three default tracks: one video track and two audio tracks. You can still add and delete tracks from the menus. The Tracks menu contains a number of options for dealing with multiple tracks simultaneously. Each track itself has a popup menu which affects one track. +Tracks in \CGG{} either contain audio or video. There is no special designation for tracks other than the type of media they contain. When you create a new project, it contains three default tracks: one video track and two audio tracks. You can still add and delete tracks from the menus. The Tracks menu contains a number of options for dealing with multiple tracks simultaneously. Each track itself has a popup menu which affects one track. Operations in the \textbf{Tracks pulldown} affect only tracks which are armed. @@ -165,7 +165,7 @@ If the destination region is longer than the clip defined in the viewer, the des \subsection{Use Case – Working with Sequences} \label{sub:use_case_working_sequences} -\textit{From the Viewer to the Timeline with the sequences imported +\textit{From the Viewer to the Timeline with the sequences imported in a Master Project.} A convenient methodology for working on a Master project along with 1 or more previously saved Sub projects or \textit{sequences} use case is described here. A sequence is an edited assembly of audio and video clips generally consisting of a series of videos that relate to the same activity. This use case explains how to work this way and some things you need to be aware of. @@ -176,7 +176,7 @@ A convenient methodology for working on a Master project along with 1 or more pr \item Now Drag and Drop the Sub project from the Clips folder to the Viewer. \item Set In and Out Pointers in the Viewer to the region of interest in the Sub project and in the Timeline of the Main window of your Master project, move the cursor position to where you would like to insert this In/Out section. \item Click on the \textit{Splice (v)} button in the Viewer to insert this section into the Master project timeline. All of the attributes of the selected Sub project section will now be inserted in the main timeline to include the autos, keyframes, effects, and labels. - \item Alternatively, if you click on the \textit{Overwrite (b)} button in the Viewer, you can see the Sub project In/Out section in the timeline, but without its autos, effects, keyframes, etc. If in the timeline there were some autos, effects, and keyframes in that Master project, they will be in effect for the new section. + \item Alternatively, if you click on the \textit{Overwrite (b)} button in the Viewer, you can see the Sub project In/Out section in the timeline, but without its autos, effects, keyframes, etc. If in the timeline there were some autos, effects, and keyframes in that Master project, they will be in effect for the new section. \end{enumerate} You can see the advantages of using Splice versus Overwrite to either insert (splice) with all of the attributes of a specific section of your Sequence or to overwrite without the attributes to allow for the smooth operation on the timeline by retaining the timeline’s attributes at that point. @@ -211,15 +211,15 @@ In Cut and Paste editing mode you can \textit{edit labels} as well. By enabling Using labels and In/Out points are useful in editing audio. You can set In/Out points for the source region of the source waveform and set labels for the destination region of the destination waveform. Perform a cut, clear the In/Out points, select the region between the labels, and perform a paste. -\paragraph{In / Out Points} The In and Out bracket placement is explained here to illustrate their usage. Because of the shape of the markers [ and ] you may assume that they are inclusive -- that everything placed in between would be included in the clip, such as in the case of being transferred to the timeline from the Viewer. In reality, one of the two markers will not include the frame that was visible at the time the marker was affixed. Depending on whether the \textit{Always show next frame} option is used or not, it is the In or Out marker that will not be inclusive. +\paragraph{In / Out Points} The In and Out bracket placement is explained here to illustrate their usage. Because of the shape of the markers [ and ] you may assume that they are inclusive -- that everything placed in between would be included in the clip, such as in the case of being transferred to the timeline from the Viewer. In reality, one of the two markers will not include the frame that was visible at the time the marker was affixed. Depending on whether the \textit{Always show next frame} option is used or not, it is the In or Out marker that will not be inclusive. -To obtain a clip on the timeline exactly as you saw in the Viewer, you must necessarily move the In mark back from the beginning before the first desired frame or move the Out mark forward after the last desired frame, depending on the \textit{Always show next frame} setting. +To obtain a clip on the timeline exactly as you saw in the Viewer, you must necessarily move the In mark back from the beginning before the first desired frame or move the Out mark forward after the last desired frame, depending on the \textit{Always show next frame} setting. Some of the confusion can be attributed to the fact that the Viewer shows frames, while the markers determine spaces, i.e. times, that are not visible between frames. You have to think of each frame as being delimited by two spaces -- one preceding and one following. The In mark is always placed before the displayed frame and the Out mark is always placed after the displayed frame, while taking into account in its calculations whether the \textit{Always show next frame }option is used or not. If you just remember that the reference of the markers is in the middle of the icon, you will avoid confusion. \paragraph{Overwrite} To perform overwriting within the timeline paste on a selected region (highlighted or between In/Out points). The selected region will be overwritten. If the clip pasted from the clipboard -is shorter than the selected region, the selected region will be shrunk. Following edits will move. If +is shorter than the selected region, the selected region will be shrunk. Following edits will move. If the clip pasted from the clipboard is longer than the selected region, the selected region will be overwritten with the first part of the clip and the remaining part of the clip will be written after the overwriting. Following edits will move. @@ -228,7 +228,7 @@ overwriting. Following edits will move. track and concatenates it by pasting those assets at the end of the first set of armed tracks. They are pasted one after the other, keeping the same order they have on the stack. -\paragraph{Split --- blade cut and hard edges:} You can cut the tracks into 2 pieces on the timeline by putting the hairline cursor on the place you want to do a cut and then using the character “x” or the scissors tool (figure~\ref{fig:cut}). +\paragraph{Split --- blade cut and hard edges:} You can cut the tracks into 2 pieces on the timeline by putting the hairline cursor on the place you want to do a cut and then using the character “x” or the scissors tool (figure~\ref{fig:cut}). \begin{wrapfigure}[16]{O}{0.3\linewidth} \vspace{1ex} @@ -245,14 +245,14 @@ When you do a blade cut/split, all armed tracks will be included in the cut and \section{Drag and Drop Editing}% \label{sec:drag_drop_editing} -To enable the drag and drop editing mode on the timeline, select the arrow toggle on the control bar at the top of the main program window. Drag and drop editing is a quick and simple way of working in \CGG{}, using mostly only the mouse. The basic idea is to create a bunch of clips, then drag them in order into the timeline, thus building prototype media that you can watch in the compositor. If after watching it, you wish to re-arrange your clips, set effects, add transitions or insert/delete material, just drag and drop them on the timeline. +To enable the drag and drop editing mode on the timeline, select the arrow toggle on the control bar at the top of the main program window. Drag and drop editing is a quick and simple way of working in \CGG{}, using mostly only the mouse. The basic idea is to create a bunch of clips, then drag them in order into the timeline, thus building prototype media that you can watch in the compositor. If after watching it, you wish to re-arrange your clips, set effects, add transitions or insert/delete material, just drag and drop them on the timeline. To simply get started, perform the following operations which are useful for working in a drag and drop editing session. First load your media by using the main menu File pulldown and choose \textit{Load files}; make sure the insertion mode is set to \textit{Create new resources only}. This loads the files into the Resources window. \begin{enumerate} \item Create some video and audio tracks on the timeline using the Video and Audio pulldowns. \item Open the Media folder in the Resources window. Make sure the necessary tracks are armed and drag - a media file from the Resources window to the timeline. If the media has video, drag it onto a video + a media file from the Resources window to the timeline. If the media has video, drag it onto a video track or if just audio, drag it onto an audio track. For a still image, drag it onto a video track. \end{enumerate} @@ -386,7 +386,7 @@ This last section on Dragging, outlines the difference between \textit{column se 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: +in 1 of 3 ways: \begin{enumerate} \item a highlighted vertical column @@ -402,7 +402,7 @@ 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} +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 @@ -416,7 +416,7 @@ original editing methods. In this \textit{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 +) 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. @@ -428,7 +428,7 @@ Inter-View mode provides a mapping of a particular media file to its timeline us This feature provides the following capabilities: \begin{itemize} \item You can see on the timeline all of the places where a particular piece of media was used. - \item You can see which parts of that particular media are already used so you do not reuse that same + \item You can see which parts of that particular media are already used so you do not reuse that same piece again. \end{itemize} Figure~\ref{fig:inter-view01} shows an example of the Inter-View mode mapping preview mini-window. @@ -486,7 +486,7 @@ To edit EDL that is included with your project as Clips, Nested Clips, Reference 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 \textit{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 \textit{pushed onto a stack} so it can be recalled by \textit{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 \textit{shell cmds} icon. Initially this button displays a 0 to indicate your initial timeline/project. Then this button will read 1 if you choose \textit{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, $\dots$ but this requires some thought to avoid potential confusion. +Here is how this works. In the Clip or Media folder or on a timeline EDL edit, the option \textit{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 \textit{pushed onto a stack} so it can be recalled by \textit{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 \textit{shell cmds} icon. Initially this button displays a 0 to indicate your initial timeline/project. Then this button will read 1 if you choose \textit{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, $\dots$ but this requires some thought to avoid potential confusion. \\ An example of a typical set of steps to follow is: @@ -494,7 +494,7 @@ An example of a typical set of steps to follow is: \begin{enumerate} \item Load your media using insertion strategy of \textit{Replace current project}. There will be \# 0 in the upper right hand corner of the main menu with the tooltip of \textit{Close EDL}. - \item Highlight a selection on the timeline and press the \textit{To clip} icon and click the green checkmark OK. + \item Highlight a selection on the timeline and press the \textit{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 \textit{Open EDL}. \item Now you will see the timeline change from the original media to just the clip content and the \# in the @@ -508,7 +508,7 @@ You can follow the same steps as above by first using the option \textit{Nest to Instead of using the \# number on the main menu to close the current EDL, both the Media and Clip folders have \textit{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 \textit{Open EDL} you see \textit{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 +\pagebreak \begin{figure}[h] \centering \includegraphics[width=0.8\linewidth]{editing-img001.png} @@ -542,28 +542,28 @@ When \textit{Open EDL} is invoked, the current EDL and current undo stack are bo It is sometimes handy to have EDL assets not as a copy, but as a reference that is automatically updated into your project. Suppose you have several short videos that at -the end have the same credits which include the current year such as 2019. But now it +the end have the same credits which include the current year such as 2019. But now it is 2020 and all of the videos would have to be individually updated with the new date. -By including a \textit{Referenced File} as the EDL file type when you create each of the videos, -you can just change the one credits xml file and the next time you load one of the -videos and render it, it will now automatically have the updated information. +By including a \textit{Referenced File} as the EDL file type when you create each of the videos, +you can just change the one credits xml file and the next time you load one of the +videos and render it, it will now automatically have the updated information. -The purpose of this feature is to be able to rework a smaller section of a global -master project at any time, which can be done by an "assistant" and then this work +The purpose of this feature is to be able to rework a smaller section of a global +master project at any time, which can be done by an "assistant" and then this work is automatically reflected in the global master project. It is for \textbf{advanced usage only}. -Up until the addition of this feature, \CGG{} has always used copies and no -direct reference in order to ensure original data is never compromised. In the -usual case, subprojects as xmls are copied into a master project where subprojects +Up until the addition of this feature, \CGG{} has always used copies and no +direct reference in order to ensure original data is never compromised. In the +usual case, subprojects as xmls are copied into a master project where subprojects had been inserted, so that if you change something in a subproject or delete a subproject, it would have no affect on the master project. But now with \textit{File by Reference}, any project that uses a referenced file will automatically include any changes made to the referenced file when loaded. At the same time, if you use the EDL file NOT as a -referenced file in a project since it is then just a copy, it will not be updated. -Because of this difference, the user needs to be very aware of what using this feature +referenced file in a project since it is then just a copy, it will not be updated. +Because of this difference, the user needs to be very aware of what using this feature could do. -\textbf{Use with extreme caution}. However, there are several built-in safety features +\textbf{Use with extreme caution}. However, there are several built-in safety features and a warning that should never be turned off even though it gives you the option to do so. These include: @@ -572,8 +572,8 @@ These include: menu is opened, the EDL strategy will always be set to just EDL as default. Although, if you use Apply and leave the Load Menu open, it will stay changed to what you selected until it is re-opened. \item When an EDL is opened as \textit{Reference}, the color of that file name in the Resources Media folder is different in order to serve as a reminder that it is special. \item A warning message is displayed in a popup window when you load a \textit{File by Reference} - that reads “Other projects can change this project and this can become a broken link”. -Although you can check the warning box to never see this warning again, you would be well advised to not do so. It is a great reminder of consequences and you will not want to be + that reads “Other projects can change this project and this can become a broken link”. +Although you can check the warning box to never see this warning again, you would be well advised to not do so. It is a great reminder of consequences and you will not want to be cavalier about the warning. Instead just use the X to dismiss the warning. \end{enumerate} @@ -614,7 +614,7 @@ To set the length of an edit in the timeline, select the region which contains t \subsection{Align Edits}% \label{sub:align_edits} -When loading media, a common problem is that the various audio/video tracks do not always have exactly the same lengths. For example, you might load audio/video recordings from your camera and be dismayed to see that the audio for each segment is a half second longer than the video. If you load a large set of media clips by concatenation, the audio and video will be more skewed as more media is loaded. Align Edits makes it possible to adjust the edits so the audio and/or video align by adjusting +When loading media, a common problem is that the various audio/video tracks do not always have exactly the same lengths. For example, you might load audio/video recordings from your camera and be dismayed to see that the audio for each segment is a half second longer than the video. If you load a large set of media clips by concatenation, the audio and video will be more skewed as more media is loaded. Align Edits makes it possible to adjust the edits so the audio and/or video align by adjusting the edits so that the track lengths are consistent. To use this feature, load all of the desired media and select a region which contains all of the edits to be aligned in the timeline. Now select the menu bar \texttt{Edit $\rightarrow$ Align Edits} menu item to operate the change. The topmost armed track is used as a template reference, and the rest of the tracks are either cut or padded to align the edit boundaries. Besides aligning audio with the video, you can also align video with the audio if the first armed track is audio. \\ The code performs the following algorithm: \begin{itemize} @@ -622,8 +622,8 @@ The code performs the following algorithm: \item Collect the \textit{edit project start times} on the selected master track. Only edits that are 100\% inside the selected area will be used. \item Set all other tracks to match the \textit{edit times} of the template track, either by putting in silence or cutting the region to align the edits on the \textit{edit times} of the master track. \end{itemize} -The start time sequence of media and silence edits along the master track are collected as the target -alignment boundaries. All armed tracks after the master track are modified so that if the next edit edge +The start time sequence of media and silence edits along the master track are collected as the target +alignment boundaries. All armed tracks after the master track are modified so that if the next edit edge is too soon, it adds silence; if it is too late, edits are shortened or deleted past the point of the next target alignment boundary time. Align Edits works best if there are an equal number of Video and Audio sections. Also, it is better to use cuts instead of adding silence -- if there are silence edits together, the algorithm will combine the silence edits into a single edit and results may not be as desired. @@ -658,7 +658,7 @@ Figure~\ref{fig:reverse02} shows the results of executing \textit{Reverse Edits} \subsection{Shuffle Edits}% \label{sub:shuffle_edits} - + The file pulldown \texttt{Edit $\rightarrow$ Shuffle Edits} will randomly exchange the location of the edits. This feature can be used to change the order of the music like you would do from your MP4 player where you have a playlist of your favorite music. Or perhaps you are creating an advertisement background, you can randomly change it, thus the viewer sees a different order of scenes each time shown. Figure~\ref{fig:shuffle} illustrating Shuffle Edits of the highlighted area of the first screenshot on the page. Note the permutation of the fragments resulting in 00003 now being first, then 00005, 00002, and 00004 last. @@ -696,7 +696,7 @@ A description of the fundamental/common terminology for choices follows. \end{description} The next table displays the options and results with the Key Table here first. -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] s = src media start\\ p = proj position \\ l = length \\ @@ -792,7 +792,7 @@ Now to use this feature, create a track with edits that have trims on the left a \subsection{Snapping while Cutting and Dragging}% \label{sub:snapping_cutting_dragging} -\paragraph{Cutting/Snapping edits} cuts from an edit handle to the insert point. +\paragraph{Cutting/Snapping edits} cuts from an edit handle to the insert point. There are Edit Panel buttons which normally are used to move to the previous or next edit handle/label. \begin{wrapfigure}[5]{r}{0.2\linewidth} \vspace{-1ex} @@ -845,7 +845,7 @@ that represents a quick summary of the entire video in black and white. On he timeline, you have 60 seconds of edits with clips, cuts, zoom in, zoom out and any other edits. Now you want to get this 60 seconds \textit{compressed} to 10 seconds, play in reverse, and in black and white at the end of your - video. + video. You would copy the 60 seconds in a clip, nest the clip in the Clip folder of the Resources window and drag it to the timeline. You will see only a clean clip without all of the edits that were used to create it because @@ -893,28 +893,28 @@ Directions for using the ShuttlePROv2 and the ShuttleXpress with \CGG{} are desc {\small \vspace{1ex} \texttt{/dev/input/by-id/usb-Contour\_Design\_ShuttlePRO\_v2-event-if00} - + \texttt{/dev/input/by-id/usb-Contour\_Design\_ShuttleXpress-event-if00} - + \texttt{/dev/input/by-id/usb-Contour\_Design\_ShuttlePro-event-if00} } \vspace{1ex} \noindent Only 1 necessary initial setup is required due to permission settings for non-root usage. As root, just copy a file that provides the necessary permissions to use the shuttle, then reboot, Example copy: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] \$sudo cp {cindat_path}/doc/99-ShuttlePRO.rules /etc/udev/rules.d/ \end{lstlisting} \noindent then the next time after you reboot, the permissions should be correct. This file only needs to contain one of the following lines depending on which shuttle version you have/use, but all will be in the file. -\begin{lstlisting}[language=Bash,,numbers=none,basicstyle=\footnotesize] -# for newer PRO model -ATTRS{name}=="Contour Design ShuttlePro" MODE="0644" -# for older PRO model -ATTRS{name}=="Contour Design ShuttlePRO v2" MODE="0644" -# for the Xpress model -ATTRS{name}=="Contour Design ShuttleXpress" MODE="0644" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0b33", ATTRS{idProduct}=="0020", MODE="0666" +\begin{lstlisting}[style=sh] +# for newer PRO model +ATTRS{name}=="Contour Design ShuttlePro" MODE="0644" +# for older PRO model +ATTRS{name}=="Contour Design ShuttlePRO v2" MODE="0644" +# for the Xpress model +ATTRS{name}=="Contour Design ShuttleXpress" MODE="0644" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0b33", ATTRS{idProduct}=="0020", MODE="0666" SUBSYSTEMS=="usb", ATTRS{idVendor}=="0b33", ATTRS{idProduct}=="0030", MODE="0666" \end{lstlisting} If you swap your shuttle, for example upgrade from an Xpress to a PROv2, just stop Cin, unplug the original shuttle, plug in the replacement shuttle, and restart Cin. If you start the \CGG{} program and the shuttle does not function as before, stop \CGG{} and then simply unplug it and plug it in again. There are a couple of reasons why it may stop functioning. One is because \CGG{} was not stopped with the usual Quit command and the shuttle was improperly shut down when there was a crash. The other possibility is that a static discharge occurred in the area. @@ -924,7 +924,7 @@ A default shuttlerc file is automatically used when a shuttle device is plugged \subsection{How to Modify the Default Key Settings}% \label{sub:modify_default_key_settings} -Detailed information on how to modify your local .shuttlerc file is described next, but if you need help you can request more information in the forum at {\small \url{https://cinelerra-gg.org}}. In the \texttt{shuttlerc} file, a \# always represents a comment and blank lines are ignored. The first thing you must do is copy the system supplied \texttt{shuttlerc} file to your \texttt{\$HOME} directory and rename it as \texttt{.shuttlerc} (with a period). +Detailed information on how to modify your local .shuttlerc file is described next, but if you need help you can request more information in the forum at {\small \url{https://cinelerra-gg.org}}. In the \texttt{shuttlerc} file, a \# always represents a comment and blank lines are ignored. The first thing you must do is copy the system supplied \texttt{shuttlerc} file to your \texttt{\$HOME} directory and rename it as \texttt{.shuttlerc} (with a period). The \texttt{shuttlerc} file has sections that in the case of \CGG{}, represent different windows allowing you to set the keys, K1-K15 for the Pro and K5-K9 for the Xpress, the shuttle wheel positions of S0/S1/S-1 for stop, S2 through S7 for wheeling to the right, and S-7 through S-2 for wheeling to the left for reverse. Then there is JR to jog right (clockwise) and JL to jog left (counter-clockwise) for the inner smaller wheel for single frame movement. See the key arrangement on a later page for location of the keys for each of the two different shuttles. @@ -934,110 +934,110 @@ Next are a few actual examples from the default \texttt{{cindat\_path}/shuttlerc \noindent The next brackets represent sections. Default, Resources, Load windows all use the same key values. -\begin{lstlisting}[language=Bash,numbers=none] -[Default] -[Resources] -[Load] -K5 XK_Home -K6 XK_Button_1 # same as mouse button 1 +\begin{lstlisting}[style=sh] +[Default] +[Resources] +[Load] +K5 XK_Home +K6 XK_Button_1 # same as mouse button 1 K7 XK_Button_2 # same operation as mouse button 2 -K8 XK_Button_3 -K9 XK_End -# for example, in the Load menu, use scroll up to get to the next file name -JL XK_Scroll_Up +K8 XK_Button_3 +K9 XK_End +# for example, in the Load menu, use scroll up to get to the next file name +JL XK_Scroll_Up JR XK_Scroll_Down \end{lstlisting} \noindent Cinelerra with brackets around it next, is the section with some key definitions for the main window. -\begin{lstlisting}[language=Bash,numbers=none] -[Cinelerra] - -# Most useful functions have to be on K5-K9 because Xpress only has 5 keys -K5 XK_Home # Beginning -K6 XK_KP_6 # Reverse, or if playing Stop -K7 XK_KP_0 # Stop -K8 XK_KP_3 # Play, or if playing Stop -K9 XK_End # End -... -S-7 REV_16 # Next 6 are reverse keys +\begin{lstlisting}[style=sh] +[Cinelerra] + +# Most useful functions have to be on K5-K9 because Xpress only has 5 keys +K5 XK_Home # Beginning +K6 XK_KP_6 # Reverse, or if playing Stop +K7 XK_KP_0 # Stop +K8 XK_KP_3 # Play, or if playing Stop +K9 XK_End # End +... +S-7 REV_16 # Next 6 are reverse keys S-6 REV_8 # the number on the end represents speed -S-5 REV_4 # number can be decimal up to 64 -S-4 REV_2 # 2 means 2x or double speed -S-3 REV_1 -S-2 REV_0.5 # 0.5 represents 1/2 speed -S-1 XK_KP_0 # Because the Shuttle does not generate S0, have to use S-1 -S0 XK_KP_0 # Hardware does not generate S0 -S1 XK_KP_0 # Because the Shuttle does not generate S0, have to use S1 -S2 FWD_0.5 -S3 FWD_1 -... +S-5 REV_4 # number can be decimal up to 64 +S-4 REV_2 # 2 means 2x or double speed +S-3 REV_1 +S-2 REV_0.5 # 0.5 represents 1/2 speed +S-1 XK_KP_0 # Because the Shuttle does not generate S0, have to use S-1 +S0 XK_KP_0 # Hardware does not generate S0 +S1 XK_KP_0 # Because the Shuttle does not generate S0, have to use S1 +S2 FWD_0.5 +S3 FWD_1 +... \end{lstlisting} \noindent An explanation for the above REV and FWD key symbol values is necessary to facilitate user preferences. Obviously REV stands for reverse and FWD for forward. You can set any speed up to and including 64x (that is, 64 times the normal speed) on any of the S keys. First in the line is the key name such as S-3 and then the key direction of FWD or REV followed by the symbol for underscore (\_) and then the numerical value to use. For example, if you want the $5^{th}$ forward position, S5, to play 10$\frac{1}{2}$ times faster, you would use the statement \texttt{S5 FWD\_10.5}. Integer or decimal numbers are legal. For the Viewer, you may want keys defined to do a Splice or an Overwrite so define differently. Note that assignments that contain single character letters must be enclosed in quotes. -\begin{lstlisting}[language=Bash,numbers=none] -[Viewer] -# Splice - Viewer only; may be defined differently than Composer or Cinelerra -K2 "v" +\begin{lstlisting}[style=sh] +[Viewer] +# Splice - Viewer only; may be defined differently than Composer or Cinelerra +K2 "v" K4 "b" # Overwrite \end{lstlisting} \noindent To change any key value to an alternative value, just edit the file and make the changes. Besides just keys and alphabetic letters of numbers, you can also use any \CGG{} value that contains the combination with Shift, Alt, and Ctrl. For keys that are not printable characters, you can look up the symbol name to use for a specific operation in the file called: \texttt{/usr/include/X11/keysymdef.h} . \noindent Some examples: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] K10 Alt-XK_Left # Go to previous edit \\ K13 Ctrl-XK_Right # Go to next label \end{lstlisting} -\noindent For sequences of one or more \textit{printable} characters, you can just enclose them in double quotes. For example in the \texttt{[Composer]} section, to go into or out of fullscreen mode, automatically start playing and put a label there, you could define a key like this: K7 “f~l” - that is printable character f, a space, and printable character l. +\noindent For sequences of one or more \textit{printable} characters, you can just enclose them in double quotes. For example in the \texttt{[Composer]} section, to go into or out of fullscreen mode, automatically start playing and put a label there, you could define a key like this: K7 “f~l” - that is printable character f, a space, and printable character l. After modifying \texttt{.shuttlerc}, the next time you use the shuttle, your changes will automatically take affect without even having to stop and restart Cin. However, the first thing to try if problems is to stop \CGG{}, unplug the shuttle, wait a few seconds, plug it in again, and then restart cin. If for some reason, the shuttle keys still do not work after that, you may have an incorrect setup and you will have to correct that first. For example, if you define S5 twice within the \CGG{} setup, it will fail. It is suggested that if you make changes, you should initially uncomment DEBUG in the \texttt{.shuttlerc} file and start up \CGG{} from a terminal window so that you can make sure it is working and has no output errors. An error might look like: -\begin{lstlisting}[language=Bash,numbers=none] -dupl key name: [Cinelerra]K1 +\begin{lstlisting}[style=sh] +dupl key name: [Cinelerra]K1 shuttle config err file: /root/.shuttlerc, line:37 \end{lstlisting} -\noindent Keep in mind when changing the values, that the ShuttleXpress has fewer buttons so if you define K1 it will only work for the ShuttlePro. +\noindent Keep in mind when changing the values, that the ShuttleXpress has fewer buttons so if you define K1 it will only work for the ShuttlePro. Any time you are having trouble with your shuttle, you can copy the default \texttt{shuttlerc} file from \texttt{{cindat\_path}/shuttlerc} to your local \texttt{.shuttlerc} file, and edit that to\ switch to DEBUG mode by removing the \# comment from the DEBUG line. But you will have to have started Cin from a terminal window to see the key values. The first time you use the shuttle or after you change the file, the current assignments will show in the terminal window so will look something like: -\begin{lstlisting}[language=Bash,numbers=none] -[Cinelerra] # 1 -K5[D]: XK_KP_0/U -K5[U]: XK_KP_0/U +\begin{lstlisting}[style=sh] +[Cinelerra] # 1 +K5[D]: XK_KP_0/U +K5[U]: XK_KP_0/U \end{lstlisting} \noindent When you are in DEBUG mode and are just working away, what you will see is something like this: -\begin{lstlisting}[language=Bash,numbers=none] -key: 0058 1 +\begin{lstlisting}[style=sh] +key: 0058 1 key: 0055 0 \end{lstlisting} or: -\begin{lstlisting}[language=Bash,numbers=none] -shuttle: 00 00 00 00 00 +\begin{lstlisting}[style=sh] +shuttle: 00 00 00 00 00 key: XK_Home 0 \end{lstlisting} \noindent When you change the focus from one window to another, you will see something like this: -\begin{lstlisting}[language=Bash,numbers=none] -new focus: 04c00137 -new translation: Viewer +\begin{lstlisting}[style=sh] +new focus: 04c00137 +new translation: Viewer key: 0059 1 \end{lstlisting} \noindent You can also set an environment variable to temporarily use an alternative shuttle configuration file for testing as in: -\begin{lstlisting}[language=Bash,numbers=none] -\$ export SHUTTLE_CONFIG_FILE=/tmp/shuttlerc_test +\begin{lstlisting}[style=sh] +\$ export SHUTTLE_CONFIG_FILE=/tmp/shuttlerc_test \end{lstlisting} \noindent The shuttle wheel occasionally will not \textit{stop} after you have wheeled it to play forward. This is a documented known problem from the original code so you just have to joggle it a little in the other direction and then it will stop. S0 does not always generate a signal to do a stop and that is why S1 and S-1 have to be used to relay the stop instead. Also, if you have a fullscreen Composer or Viewer up and the regular one also, the fullscreen takes precedence. @@ -1047,14 +1047,14 @@ key: 0059 1 In order to see if you hardware was recognized by the operating system, key in: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] \$ lsusb -v -d 0b33:0030 # for the Shuttle Pro or PROv2 \\ \$ lsusb -v -d 0b33:0020 # for the Shuttle Xpress \end{lstlisting} -\paragraph{Note 1} Currently, the keys K14 and K15 do not function on the \textit{Contour Design ShuttlePro} but do on the \textit{Contour Design ShuttlePRO v2} due to a Report Descriptor error. You can workaround this by uncommenting \texttt{USB\_DIRECT} in your local \texttt{.shuttlerc} file. This directly uses libusb rather than the generic Linux hid driver. \texttt{USB\_DIRECT} works for any of the currently tested shuttles. - +\paragraph{Note 1} Currently, the keys K14 and K15 do not function on the \textit{Contour Design ShuttlePro} but do on the \textit{Contour Design ShuttlePRO v2} due to a Report Descriptor error. You can workaround this by uncommenting \texttt{USB\_DIRECT} in your local \texttt{.shuttlerc} file. This directly uses libusb rather than the generic Linux hid driver. \texttt{USB\_DIRECT} works for any of the currently tested shuttles. + \paragraph{Note 2} If you are not sure if your shuttle is fully functional, you can verify that the hardware device has been seen by your operating system with this procedure. @@ -1062,15 +1062,15 @@ In order to see if you hardware was recognized by the operating system, key in: \item From a terminal window as an ordinary user key in: lsusb (the first character is a lower case L ---for list). You will see something like the following depending on which usb device you have the ShuttlePro plugged into: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] Bus 003 Device 002: ID 0b33:0030 Contour Design, Inc. ShuttlePro v2 \end{lstlisting} \item To make sure you have usbmon installed key in: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] \$ sudo modprobe usbmon \end{lstlisting} \item Next key in the following: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] \$ sudo od -tx1 /dev/usbmon3 \end{lstlisting} where the last 3 is the same \# as the Bus in above. If it lists \texttt{Bus 002}, then use \texttt{/dev/usbmon2} instead. @@ -1078,20 +1078,20 @@ Bus 003 Device 002: ID 0b33:0030 Contour Design, Inc. ShuttlePro v2 should see about 12 lines similar to these below ---a new set every time you press a single key or the wheel. The lines are usually not important, just the fact that you get a response is. However if you have multiple devices on the same bus, you will get responses from any and all of them. Attempt to - isolate your shuttle by temporarily unplugging unnecessary devices on the same bus or plug the + isolate your shuttle by temporarily unplugging unnecessary devices on the same bus or plug the shuttle into a different usb port that has fewer devices. - \begin{lstlisting}[language=Bash,numbers=none] -0000000 80 70 99 75 53 8c ff ff 43 01 81 02 03 00 2d 00 -0000020 4e 61 5c 5c 00 00 00 00 8d 2c 06 00 00 00 00 00 -0000040 05 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 -0000060 01 ff 00 00 00 80 70 99 75 53 8c ff ff 53 01 81 -0000100 02 03 00 2d 3c 4e 61 5c 5c 00 00 00 00 b1 2c 06 -0000120 00 8d ff ff ff 05 00 00 00 00 00 00 00 00 00 00 -0000140 00 00 00 00 00 80 70 99 75 53 8c ff ff 43 01 81 -0000160 02 03 00 2d 00 4e 61 5c 5c 00 00 00 00 3d d7 09 -0000200 00 00 00 00 00 05 00 00 00 05 00 00 00 00 00 00 -0000220 00 00 00 00 00 00 ff 00 00 00 80 70 99 75 53 8c -0000240 ff ff 53 01 81 02 03 00 2d 3c 4e 61 5c 5c 00 00 + \begin{lstlisting}[style=sh] +0000000 80 70 99 75 53 8c ff ff 43 01 81 02 03 00 2d 00 +0000020 4e 61 5c 5c 00 00 00 00 8d 2c 06 00 00 00 00 00 +0000040 05 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 +0000060 01 ff 00 00 00 80 70 99 75 53 8c ff ff 53 01 81 +0000100 02 03 00 2d 3c 4e 61 5c 5c 00 00 00 00 b1 2c 06 +0000120 00 8d ff ff ff 05 00 00 00 00 00 00 00 00 00 00 +0000140 00 00 00 00 00 80 70 99 75 53 8c ff ff 43 01 81 +0000160 02 03 00 2d 00 4e 61 5c 5c 00 00 00 00 3d d7 09 +0000200 00 00 00 00 00 05 00 00 00 05 00 00 00 00 00 00 +0000220 00 00 00 00 00 00 ff 00 00 00 80 70 99 75 53 8c +0000240 ff ff 53 01 81 02 03 00 2d 3c 4e 61 5c 5c 00 00 0000260 00 00 64 d7 09 00 8d ff ff ff 05 00 00 00 00 00 \end{lstlisting} \item Next press the key that you want to verify is functioning --- if no new lines show up, then the key is @@ -1107,29 +1107,29 @@ Another method for testing to make sure your model of the Shuttle does not have \item Compile that with the command: \texttt{c++ shdmp.C -o shudmp} \item Make the file executable with the command: \texttt{chmod +x shudmp} \item Execute: - \begin{lstlisting}[language=Bash,numbers=none] + \begin{lstlisting}[style=sh] \$ sudo ./shdmp /dev/input/by-id/usb-Contour\_Design\_ShuttlePro-event-if00 # substitute your shuttle \end{lstlisting} \end{enumerate} \noindent Then press your shuttle key that is having problems and check the results. They should look like: -\begin{lstlisting}[language=Bash,numbers=none,caption={Example for K7}] -event: (4, 4, 0x90007) #The last number, 7, is the expected Key number. -event: (1, 262, 0x1) -event: (0, 0, 0x0) -event: (4, 4, 0x90007) -event: (1, 262, 0x0) -event: (0, 0, 0x0) +\begin{lstlisting}[style=sh,caption={Example for K7}] +event: (4, 4, 0x90007) #The last number, 7, is the expected Key number. +event: (1, 262, 0x1) +event: (0, 0, 0x0) +event: (4, 4, 0x90007) +event: (1, 262, 0x0) +event: (0, 0, 0x0) \end{lstlisting} -\begin{lstlisting}[language=Bash,numbers=none,caption={Example for K15}] -Example for K15: -event: (4, 4, 0x9000f) #The last number f is 15 in hexadecimal and is the expected Key. -event: (1, 270, 0x1) -event: (0, 0, 0x0) -event: (4, 4, 0x9000f) -event: (1, 270, 0x0) +\begin{lstlisting}[style=sh,caption={Example for K15}] +Example for K15: +event: (4, 4, 0x9000f) #The last number f is 15 in hexadecimal and is the expected Key. +event: (1, 270, 0x1) +event: (0, 0, 0x0) +event: (4, 4, 0x9000f) +event: (1, 270, 0x0) event: (0, 0, 0x0) \end{lstlisting} @@ -1137,7 +1137,7 @@ event: (0, 0, 0x0) \paragraph{Note 4} For developers, if you have a pre-UEFI Secure Boot kernel it is also possible to do the following for further in depth testing: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] ls /sys/kernel/debug/hid \# to locate numerical value of the shuttle, e.g. 0003:0B33.0030.0006 cat "/sys/kernel/debug/hid/0003:0B33.0030.0006/rdesc" # substitute your own numerical value cat "/sys/kernel/debug/hid/0003:0B33.0030.0006/events" # press keys to see the results @@ -1158,7 +1158,7 @@ The following is the default setting for the ShuttlePROv2 and ShuttleXpress (tab \label{tab:shuttleprov2} % Tell table to adjust font to fix on the page using \resize \resizebox{\textwidth}{!}{% - \begin{tabular}{c c c c c c c} + \begin{tabular}{c c c c c c c} \toprule K1 & K2 & & K3 & K4 & & \\ Label & Future use & & Future use & Clip & & \\ @@ -1172,11 +1172,11 @@ The following is the default setting for the ShuttlePROv2 and ShuttleXpress (tab Home(Defaults) & MouseBtn1(D) & MouseBtn2(D) & MouseBtn3(D) & End(Defaults) & & \\ \midrule \multicolumn{7}{c}{Shuttle Outer Wheel} \\ - \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\ + \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\ S1=Stop & S2=1/2 & S3=Normal & S4=2x & S5=4x & S6=8x & S7=16x \\ S-1=Stop & S-2=1/2 & S-3=Normal & S-4=2x & S-5=4x & S-6=8x & S-7=16x \\ \midrule - K14 & & Jog Left & (Inner Wheel) & Jog Right & & K15 \\ + K14 & & Jog Left & (Inner Wheel) & Jog Right & & K15 \\ Toggle In & & Frame reverse & & Frame forward & & Toggle Out \\ & & Scroll up(Defaults) & & Scroll down(Defaults) & & \\ \midrule @@ -1196,8 +1196,8 @@ The following is the default setting for the ShuttlePROv2 and ShuttleXpress (tab \label{tab:xpress} % Tell table to adjust font to fix on the page using \resize \resizebox{\textwidth}{!}{% - \begin{tabular}{c c c c c c c} - \toprule + \begin{tabular}{c c c c c c c} + \toprule K5 & K6 & K7 & K8 & K9 & & \\ Home & Reverse & Stop & Play & End & & \\ & & Fullscreen & & & & \\ @@ -1206,14 +1206,13 @@ The following is the default setting for the ShuttlePROv2 and ShuttleXpress (tab Home(Defaults) & MouseBtn1(D) & MouseBtn2(D) & MouseBtn3(D) & End(Defaults) & & \\ \midrule \multicolumn{7}{c}{Shuttle Outer Wheel} \\ - \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\ + \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\ S1=Stop & S2=1/2 & S3=Normal & S4=2x & S5=4x & S6=8x & S7=16x \\ S-1=Stop & S-2=1/2 & S-3=Normal & S-4=2x & S-5=4x & S-6=8x & S-7=16x \\ \midrule - & & Jog Left & (Inner Wheel) & Jog Right & & \\ + & & Jog Left & (Inner Wheel) & Jog Right & & \\ & & Frame reverse & & Frame forward & & \\ - & & Scroll up(Defaults) & & Scroll down(Defaults) & & \\ - \bottomrule + & & Scroll up(Defaults) & & Scroll down(Defaults) & & \\ + \bottomrule \end{tabular}} \end{table} - diff --git a/parts/FFmpeg.tex b/parts/FFmpeg.tex index 2c64869..42aa0cd 100644 --- a/parts/FFmpeg.tex +++ b/parts/FFmpeg.tex @@ -88,14 +88,14 @@ In the ffmpeg configuration directory there are a series of options files used w For the option files a specific format must be followed in creating the file content. In \texttt{typ.ext} encoder parameter files, the first line is defined as: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] muxer codec (or) muxer codec | bitstream filter [ bitstream filter options ] \end{lstlisting} where the | represents piping the codec data through the bitstream filter. The rest of the lines in the file should look as follows: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # in column one is a comment id1 value1 (or) id2 = value2 @@ -103,7 +103,7 @@ where the | represents piping the codec data through the bitstream filter. The r Only one equals sign is allowed and it is just for readability. There may be any number of id/value pair lines in a media definition, including zero. A typical line might be: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] bitrate 4000000 (or) bitrate = 5000000 \end{lstlisting} @@ -119,13 +119,13 @@ There are 4 special id's recognized by \CGG{} which cause special processing. T All other id's should be in the ffmpeg documentation, and correspond to the global, muxer, and codec option names and values used by ffmpeg. For example to set the aspect ratio to 4:3, use: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] aspect 4:3 \end{lstlisting} Below shows an example: \texttt{decode.opts} which is used when the ffmpeg decoder is initialized. -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # apply at init decode loglevel=fatal formatprobesize=5000000 @@ -150,13 +150,13 @@ So if you want to create a \textit{mov} codec class, add two new files to the ff Now you will see this as what you can choose in the rendering choices for ffmpeg. Inside the file you will see that the first line is special. It is the muxer and codec. For example: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] h264 libx265 \end{lstlisting} The contents may be something like: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # /video/vid.mov mp4 libx265 bitrate 4000000 @@ -167,7 +167,7 @@ This will code an mp4 formatted file using the \textit{lib264} codec encoder. For audio and video together, the mux format must agree between the aud.mov and vid.mov files when they are to be used together. The stream muxer must be the same for all the streams in the file being written. For example: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # /audio/aud.mov mp4 pcm_mulaw \end{lstlisting} @@ -184,12 +184,12 @@ When the menu popup is created, there may be many choices for that class type, s \texttt{audio/.dfl} and \texttt{video/.dfl} -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # audio/mov.dft aud.mov \end{lstlisting} -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # video/mov.dft = vid.mov \end{lstlisting} @@ -198,7 +198,7 @@ The above will be the default choice when the menu opens. When you see problems in using the new options files you have created and put into place, add the following line to \texttt{ffmpeg/encoder.opts}: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] loglevel=verbose \end{lstlisting} @@ -206,7 +206,7 @@ sometimes that will be enough to see what has caused a failure, or even catch un There is an \textsc{EXCEPTION} to all of the above because of a conflict between ffmpeg and the x264 person making the detection of default ffmpeg settings terminate with an error. If you get this error, you must workaround this termination by including parameters that don't match $5$ or more of the normal expected values. So you just have to change a few parameters to avoid the probe detection. Here is an example where you will notice the \textit{x264-params} line tweaking values to throw off the detection/error termination code. -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # /ffmpegvideo/test.mp4 mp4 libx264 preset=slow @@ -221,7 +221,7 @@ If you send any new options files to \href{mailto:cin@lists.cinelerra-gg.org}{ci To get a listing of the current ffmpeg supported formats and codecs that can be made to work with \CGG{}, provided there are option files added, run the following commands. This should be done from the \texttt{} directory substituting the location of \texttt{} where you have installed \CGG{} on your system and the ffmpeg may be a different version than $4.2$ as used below. Then look at the output created in \texttt{/tmp/ff-formats.txt} and \texttt{codecs.txt}. -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] //cinelerra-5.1/thirdparty/ffmpeg-4.2/ffmpeg -formats > /tmp/ff-formats.txt //cinelerra-5.1/thirdparty/ffmpeg-4.2/ffmpeg -codecs > /tmp/ff-codecs.txt \end{lstlisting} @@ -233,7 +233,7 @@ For illustrative purposes, here is an example of the options files that need to Add the file named \texttt{./ffmpeg/audio/acc256k.pro} which contains the following lines: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] mov aac strict -2 b 256000 @@ -243,13 +243,13 @@ b 256000 Add the file named \texttt{./ffmpeg/audio/pro.dfl} which contains the following lines: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] acc256k.pro \end{lstlisting} Add the file named \texttt{./ffmpeg/video/prores.pro} which contains the following lines: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] mov prores profile=2 # lines of comments @@ -257,7 +257,7 @@ profile=2 Add the file named \texttt{./ffmpeg/video/pro.dfl} which contains the following lines: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] prores.pro \end{lstlisting} @@ -306,14 +306,14 @@ Another feature gained from using ffmpeg in \CGG{} takes advantage of what is be To encode a series of $48$\,bit tiff output image files, add a file to the \CGG{} data ffmpeg/video subdirectory as in: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # \dots/ffmpeg/video/tiff.dfl tiff48.tif \end{lstlisting} Then create an ffmpeg video encoder parameters file in the same directory: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # \dots/ffmpeg/video/tiff48.tiff image2 tiff pixel_format=rgb48 @@ -328,7 +328,7 @@ The resulting directory of images can be opened for reading by simply opening th Raw video is not affected by decoding on read in. This makes it very attractive to provide raw image data for editing and rendering media. A wide variety of raw formats are available via the ffmpeg file interface. To load media in a raw format, select \textit{try ffmpeg first} and create an accompanying \textit{opts} file. The opts files must be in the same directory as your media, with the same base name, and the \texttt{.opts} extension. The opts file contents should reflect your video setup. An example follows: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] # Video file name: /tmp/buddy.mov # Opts file name: /tmp/buddy.opts # Contents of opts file: diff --git a/parts/Installation.tex b/parts/Installation.tex index 4c27de9..958e88b 100644 --- a/parts/Installation.tex +++ b/parts/Installation.tex @@ -3,200 +3,301 @@ \section{How to Build \CGG{} from Developer's Git Repository}% \label{sec:How_to_build} -These are generic build instructions for building \CGG{} Infinity. -Known to work on Ubuntu, Mint, OpenSuse, Fedora, Debian, Centos, Arch, Slackware, and Gentoo. -It has not been tested on every single possible distro yet so you might expect to have to make some minor changes. -Also works on a somewhat limited basis on FreeBSD and Windows 10 with the bsd.patch for FreeBSD -and the cygwin.patch for Windows 10. - -Alternatively, there are some pre-built dynamic or static binaries which are updated on a fairly regular basis (as long as code changes have been made) available at the link below. - +These are generic build instructions for building \CGG{} Infinity. +Known to work on Ubuntu, Mint, OpenSuse, Fedora, Debian, Centos, +Arch, Slackware, and Gentoo. It has not been tested on every +single possible distro yet so you might expect to have to make +some minor changes. Also works on a somewhat limited basis on +FreeBSD and Windows 10 with the bsd.patch for FreeBSD and the +cygwin.patch for Windows 10. + +Alternatively, there are some pre-built dynamic or static binaries +which are updated on a fairly regular basis (as long as code changes +have been made) available at the link below. \begin{center} - {\small \url{https://cinelerra-gg.org/download/}} + \href{https://cinelerra-gg.org/download/}{https://cinelerra-gg.org/download/} \end{center} -There are 2 kinds of builds, the default system-build and a single-user build. -A system build has results which are installed to the system. -The majority of the files are installed in the standard system paths, but some customization is possible. -The single user build allows for running completely out of a local user directory so it doesn't affect the system. - -We recommend the single-user version when possible. -It makes it very easy to install a new version without having to delete the older version in case you want it for backup -- once you are happy with the new version, all you have to do is delete the entire old directory path. -Another reason for using single-user is that if you install a new Operating System version and if you have \CGG{} on separate disk space that is preserved, you won't have to reinstall \CGG{}. -It is also convenient for the purpose of having the ability to interrupt or to see any possible error messages, if you start the application from a terminal window command line where you will have more control to catch problems. -All that said, the system builds can be useful in a university lab setting where there are possibly multiple users, or multiple versions. - -There are two notable differences between \textit{standard} views of \CGG{} and this implementation for the system builds. -Both of these can be configured during installation. -The differences make it possible to have several different versions installed without having them \textit{walk} on each other. +Because there are many references to "git" in this section, it is +assumed that the user is somewhat familiar with its use. Because +"git" has more than 130 commands and is Open Source, it is well +documented so for problems in usage, please refer to those. + +There are 2 kinds of builds, the default system-build and a +single-user build. A system build has results which are installed +to the system. The majority of the files are installed in the +standard system paths, but some customization is possible. The +single user build allows for running completely out of a local +user directory so it doesn't affect the system. + +We recommend the single-user version when possible. It makes it +very easy to install a new version without having to delete the +older version in case you want it for backup -- once you are happy +with the new version, all you have to do is delete the entire old +directory path. Another reason for using single-user is that if +you install a new Operating System version and if you have \CGG{} +on separate disk space that is preserved, you won't have to +reinstall \CGG{}. It is also convenient for the purpose of having +the ability to interrupt or to see any possible error messages, if +you start the application from a terminal window command line +where you will have more control to catch problems. All that +said, the system builds can be useful in a university lab setting +where there are possibly multiple users, or multiple versions. + +There are two notable differences between \textit{standard} views +of \CGG{} and this implementation for the system builds. Both of +these can be configured during installation. The differences make +it possible to have several different versions installed without +having them \textit{walk} on each other. \begin{enumerate} - \item - application name can be set during installation and defaults to: \texttt{cin} - \item - the home configuration directory can also be set and defaults to:\\ \texttt{\$HOME/.bcast5} +\item application name can be set during installation and defaults + to: \texttt{cin} +\item the home configuration directory can also be set and + traditionally defaults to: \texttt{\$HOME/.bcast5} \end{enumerate} -\paragraph{To do a system build,} you should read the file \texttt{README} that is at the top level after you get the source. +\subsection{The system build} +\label{sec:system-build} + +To do a system build, you should read the file +\texttt{README} that is at the top level after you get the source. + +\begin{itemize} +\item You need about 6.0 \,GB of disk storage to operate a build and + you need to have \textit{git} installed. + +\item Obviously in order to install into the system, you must run as + \textbf{root}. + +\item The \textit{git:} step has to download many files (approx + 130\,MB) so allow time. When decompressed this will expand to + about 530 MB. + +\item Run the following commands (this takes awhile): + +\begin{lstlisting}[style=sh] +# This is where you need the 6.0GB of disk space: +cd // +git clone --depth 1 "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cinelerra5 +# Change to the cloned directory: +cd cinelerra5/cinelerra-5.1 +\end{lstlisting} + NOTE: if your system has never had \CGG{} Infinity installed, you + will have to make sure you have all of the compilers and libraries + necessary. So on the very first build you should run: + +\begin{lstlisting}[style=sh] +./blds/bld_prepare.sh # where represents the + # Operating System of centos, + # fedora, suse, ubuntu, mint, debian. +./autogen.sh +./configure --prefix=/usr # optional parameters can be added here +make 2>&1 | tee log # make and log the build +\end{lstlisting} + + \texttt{bld\_prepare.sh} does not work for Arch Linux or Gentoo, + so we have to install the dependencies + manually. \texttt{README.arch} or \texttt{README.gentoo}, which + contain the list of dependencies, can be found at: + \begin{list}{}{} + \item \href{https://cinelerra-gg.org/download/README.arch}{https://cinelerra-gg.org/download/README.arch} + \item \href{https://cinelerra-gg.org/download/README.gentoo}{https://cinelerra-gg.org/download/README.gentoo} + \end{list} + +\item Check for obvious build errors: +\begin{lstlisting}[style=sh] +grep "\*\*\*.*error" -ai log +\end{lstlisting} + If this reports errors and you need assistance or you think + improvements can be made to the builds, email the log which is + listed below to: + \href{mailto:cin@lists.cinelerra-gg.org}{cin@lists.cinelerra-gg.org} +\begin{lstlisting}[style=sh] +//cinelerra5/cinelerra-5.1/log +\end{lstlisting} + +\item If there are no build errors, finally just run: +\begin{lstlisting}[style=sh] +make install +\end{lstlisting} + +\item If it all worked, you are all setup. Just click on the \CGG{} + desktop icon. +\end{itemize} -\begin{enumerate} - \item - You need about 6.0 \,GB of disk storage to operate a build + you need to have \textit{git} installed. - \item Obviously in order to install into the system, you must run as \textbf{root}. - \item The \textit{git:} step has to download many files (approx 130\,MB) so allow time. When decompressed this will expand to about 530 MB. - \item Run the following commands (this takes awhile): - - \begin{lstlisting}[numbers=none] -$ cd // # this is where you need the 6.0GB of disk space -$ git clone --depth 1 "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cinelerra5 -$ cd cinelerra5/cinelerra-5.1 # toplevel directory - \end{lstlisting} - - NOTE: if your system has never had \CGG{} Infinity installed, you will have to make sure you have all of the compilers and libraries necessary. - So on the very first build you should run: - - \begin{lstlisting}[numbers=none] -$ ./blds/bld_prepare.sh # where represents the Operating System of centos, fedora, suse, ubuntu, mint, debian. -$ ./autogen.sh -$ ./configure --prefix=/usr # optional parameters can be added here -$ make 2>&1 | tee log # make and log the build - \end{lstlisting} - \texttt{bld\_prepare.sh} does not work for Arch Linux or Gentoo, so we have to install the dependencies manually. \texttt{README.arch} or \texttt{README.gentoo}, which contain the list of dependencies, can be found at: \\ -{\small \url{https://cinelerra-gg.org/download/README.arch} - - \url{https://cinelerra-gg.org/download/README.gentoo}} - \item Check for obvious build errors: - \begin{lstlisting}[numbers=none] -$ grep "\*\*\*.*error" -ai log - \end{lstlisting} - If this reports errors and you need assistance or you think improvements can be made to the builds, - email the log which is listed below to: \href{mailto:cin@lists.cinelerra-gg.org}{cin@lists.cinelerra-gg.org} - \begin{lstlisting}[numbers=none] -$ //cinelerra5/cinelerra-5.1/log - \end{lstlisting} - \item If there are no build errors, finally just run: - \begin{lstlisting}[numbers=none] - $ make install - \end{lstlisting} - \item If it all worked, you are all setup. Just click on the \CGG{} desktop icon. -\end{enumerate} -\paragraph{To do a single-user build,} read the file \texttt{README} that is at the top level after you get the source. +\subsection{The single-user build} +\label{sec:single-user-build} + +To do a single-user build, read the file \texttt{README} that is at +the top level after you get the source. + \begin{enumerate} - \item You need at least 6\,GB of disk storage to operate a build + you need to have “\texttt{git}” installed. - \item Recommend you build and run as \textbf{root}, just to avoid permission issues initially. - \item The \textit{git} step has to download many files (approx 130\,MB) so allow time. - \item Run the following commands (this takes awhile): - \begin{lstlisting}[numbers=none] -$ cd // # this is where you need the 6GB of disk space -$ git clone --depth 1 "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cinelerra5 -$ cd cinelerra5/cinelerra-5.1 # toplevel directory - \end{lstlisting} +\item You need at least 6\,GB of disk storage to operate a build + + you need to have “\texttt{git}” installed. + +\item Recommend you build and run as \textbf{root}, just to avoid + permission issues initially. +\item The \textit{git} step has to download many files (approx + 130\,MB) so allow time. + +\item Run the following commands (this takes awhile): +\begin{lstlisting}[style=sh] +# This is where you need the 6GB of disk space +cd // +git clone --depth 1 "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cinelerra5 +# Toplevel directory: +cd cinelerra5/cinelerra-5.1 +\end{lstlisting} \end{enumerate} -NOTE: if your system has never had \CGG{} Infinity installed, you will have to make sure all -the compilers and libraries necessary are installed. So on the very first build you should run as \textbf{root}: +NOTE: if your system has never had \CGG{} Infinity installed, you +will have to make sure all the compilers and libraries necessary are +installed. So on the very first build you should run as +\textbf{root}: -\begin{lstlisting}[numbers=none] -$ ./blds/bld_prepare.sh # where represents the Operating System of centos, fedora, suse, ubuntu, mint, debian. -$ ./autogen.sh -$ ./configure --with-single-user # the "with-single-user" parameter makes it so -$ make 2>&1 | tee log # make and log build (check for errors before proceeding) -$ make install +% FIXME No novels in the listings. +\begin{lstlisting}[style=sh] +./blds/bld_prepare.sh +./autogen.sh +./configure --with-single-user +make 2>&1 | tee log +make install \end{lstlisting} +Where represents the Operating System supported by \CGG{}, such +as centos, fedora, suse, ubuntu, mint, debian. +The ``with-single-user'' parameter makes it so. +% Make and log build ( +Check for errors before proceeding. + -Then just start the application by keying in: \texttt{./cin} in the bin subdirectory OR add a desktop icon by -using the appropriate directory to copy the files to, run as \textbf{root}, and edit to correct -the directory path. Below are generic directions of how to do this. +Then just start the application by keying in: \texttt{./cin} in the +bin subdirectory OR add a desktop icon by using the appropriate +directory to copy the files to, run as \textbf{root}, and edit to +correct the directory path. Below are generic directions of how to +do this. -\begin{lstlisting}[numbers=none] -$ cd /cinelerra_directory_path -$ cp -a image/cin.{svg,xpm} /usr/share/pixmaps/. -$ cp -a image/cin.desktop /usr/share/applications/cin.desktop +\begin{lstlisting}[style=sh] +cd /cinelerra_directory_path +cp -a image/cin.{svg,xpm} /usr/share/pixmaps/ +cp -a image/cin.desktop /usr/share/applications/cin.desktop \end{lstlisting} -After you have followed the above, in the cin.desktop file, change the \texttt{Exec=cin} line -to be \texttt{Exec=/bin/cin}. +After you have followed the above, in the cin.desktop file, change +the \texttt{Exec=cin} line to be +\texttt{Exec=/bin/cin}. + +The preceding directions for doing a single-user build have been +meticulously followed to build and run on a newly installed ubuntu +15 system WITHOUT BEING ROOT except for the \texttt{bld\_prepare.sh} +and creating the desktop icon. -The preceding directions for doing a single-user build have been meticulously followed to build and run -on a newly installed ubuntu 15 system WITHOUT BEING ROOT except for the \texttt{bld\_prepare.sh} and creating the desktop icon. \subsection{Notable Options and Caveats}% \label{sub:notable_options_and_caveats} -These procedures and the \CGG{} Infinity software have all been run as \textbf{root} on various home laptops and desktops. This provides the best chance to ensure all works correctly and also allows for handling errors, other problems and potential crashes with the most success. Included in this section are some of the build variations easily available for normal builds. +These procedures and the \CGG{} Infinity software have all been run +as \textbf{root} on various home laptops and desktops. This provides +the best chance to ensure all works correctly and also allows for +handling errors, other problems and potential crashes with the most +success. Included in this section are some of the build variations +easily available for normal builds. -To see the full list of features use: +To see the full list of features use: -\begin{lstlisting}[numbers=none] -$ ./configure -help +\begin{lstlisting}[style=sh] +./configure --help \end{lstlisting} -The default build is a system build which uses: +The default build is a system build which uses: -\begin{lstlisting}[numbers=none] -$ ./configure -without-single-user +\begin{lstlisting}[style=sh] +./configure --without-single-user \end{lstlisting} -In the single-user build, the target directory is always \texttt{cin}. -Because this is also the developer build, constant names are used throughout. -However, you can rename files after the install is complete. +In the single-user build, the target directory is always +\texttt{cin}. Because this is also the developer build, constant +names are used throughout. However, you can rename files after the +install is complete. -If your operating system has issues with the default install to \texttt{/usr/local}, you might have to change the location to \texttt{/usr} for a system build. Then you will have to use: -\begin{lstlisting}[numbers=none] -$ ./configure --prefix=/usr +If your operating system has issues with the default install to +\texttt{/usr/local}, you might have to change the location to +\texttt{/usr} for a system build. Then you will have to use: +\begin{lstlisting}[style=sh] +./configure --prefix=/usr \end{lstlisting} -If you wish to change the default directory for a system build you will have to add the destination directory path on the \texttt{make install} line. For example: -\begin{lstlisting}[numbers=none] -$ make install DESTDIR= +If you wish to change the default directory for a system build you +will have to add the destination directory path on the \texttt{make + install} line. For example: +\begin{lstlisting}[style=sh] +make install DESTDIR= \end{lstlisting} -The application name can be set during installation, but defaults to \texttt{cin} so that the GG/Infinity build can coexist with other \CGG{} builds if necessary. To override the default \texttt{cin} name, use: -\begin{lstlisting}[numbers=none] -$ ./configure --with-exec-name=cinelerra +The application name can be set during installation, but defaults to +\texttt{cin} so that the GG/Infinity build can coexist with other +\CGG{} builds if necessary. To override the default \texttt{cin} +name, use: +\begin{lstlisting}[style=sh] +./configure --with-exec-name=cinelerra \end{lstlisting} -The home configuration directory can also be set, but default location is \texttt{\$HOME/.bcast5}. -For example: +The home configuration directory can also be set, but default +location is traditionally \texttt{\$HOME/.bcast5}. For example: -\begin{lstlisting}[numbers=none] -$ ./configure -with-config-dir=/myusername/.bcast5 +\begin{lstlisting}[style=sh] +./configure -with-config-dir=/myusername/.bcast5 \end{lstlisting} -NOTE: when you specify parameters to the configure program, it will create a \texttt{make} file as a consequence. -Since in a \texttt{make} file, the \$ is a special character, it must be escaped so in order to represent a \$ as part of an input parameter, it has to be stuttered. -That is, you will need \$\$ (2 dollar signs) to represent a single dollar sign. +NOTE: when you specify parameters to the configure program, it will +create a \texttt{make} file as a consequence. Since in a +\texttt{make} file, the \$ is a special character, it must be +escaped so in order to represent a \$ as part of an input parameter, +it has to be stuttered. That is, you will need \$\$ (2 dollar +signs) to represent a single dollar sign. -It may be necessary on some distros which have missing or incomplete up-to-date libraries, to build \CGG{} without Ladspa. -To do so, use: +It may be necessary on some distros which have missing or incomplete +up-to-date libraries, to build \CGG{} without Ladspa. To do so, +use: -\begin{lstlisting}[numbers=none] -$ ./configure --prefix=/usr --without-ladspa-build +\begin{lstlisting}[style=sh] +./configure --prefix=/usr --without-ladspa-build \end{lstlisting} -Note that the with-ladspa-dir is the ladspa search path, and exists even if the ladspa build is not selected. This gives you the ability to specify an alternate ladspa system path by utilizing the \texttt{LADSPA\_PATH} environment variable (that is, the default ladspa build is deselected). +Note that the with-ladspa-dir is the ladspa search path, and +exists even if the ladspa build is not selected. This gives you +the ability to specify an alternate ladspa system path by +utilizing the \texttt{LADSPA\_PATH} environment variable (that is, +the default ladspa build is deselected). -Note for 32-bit 14.2 Slackware, Debian, Gentoo, Arch, FreeBSD, before running the configure, you will need to set up the following: +Note for 32-bit 14.2 Slackware, Debian, Gentoo, Arch, FreeBSD, +before running the configure, you will need to set up the following: -\begin{lstlisting}[numbers=none] -$ export ac_cv_header_xmmintrin_h=no -$ export FFMPEG_EXTRA_CFG=" --disable-vdpau" +\begin{lstlisting}[style=sh] +export ac_cv_header_xmmintrin_h=no +export FFMPEG_EXTRA_CFG=" --disable-vdpau" \end{lstlisting} + \subsection{Notes about Building from Git in your Customized Environment}% \label{sub:notes_about_building_from_git_in_your_customized_environment} -Getting a build to work in a custom environment is not easy. If you have already installed libraries which are normally in the thirdparty build, getting them to be recognized means you have to install the \textit{devel} version so the header files which match the library interfaces exist. Below is the list of thirdparty builds, but this list may have changed over time. +Getting a build to work in a custom environment is not easy. If you +have already installed libraries which are normally in the +thirdparty build, getting them to be recognized means you have to +install the \textit{devel} version so the header files which match +the library interfaces exist. Below is the list of thirdparty +builds, but this list may have changed over time. % It's list of Table? \begin{table}[htpb] - \centering - \caption{List of thirdparty builds} - \label{tab:List_of_thirdparty_builds} - \small - \begin{tabular}{m{8em}c} - \toprule + \centering + \caption{List of thirdparty builds} + \label{tab:List_of_thirdparty_builds} + \small + \begin{tabular}{m{8em}c} + \toprule a52dec & yes\\ djbfft & yes\\ ffmpeg & yes\\ @@ -208,7 +309,7 @@ Getting a build to work in a custom environment is not easy. If you have alread libavc1394&auto\\ libraw1394&auto\\ libiec61883&auto\\ - libdv &auto\\ + libdv &auto\\ libjpeg &auto\\ opus &auto\\ openjpeg &auto\\ @@ -219,7 +320,7 @@ Getting a build to work in a custom environment is not easy. If you have alread libvorbis&auto\\ mjpegtools&yes\\ openexr &auto\\ - tiff &auto\\ + tiff &auto\\ twolame &auto\\ x264 &auto\\ x265 &auto\\ @@ -232,55 +333,74 @@ Getting a build to work in a custom environment is not easy. If you have alread suil &auto\\ libaom &auto\\ dav1d &auto\\ - libwebp &auto\\ + libwebp &auto\\ ffnvcodec &auto\\ \bottomrule - \end{tabular} + \end{tabular} \end{table} -The \textit{yes} means force build and \textit{auto} means probe and use the system version if the build operation is not static. -To get your customized build to work, you need to change the probe options for the conflicting libraries from \textit{yes} to \textit{auto}, or even rework the \texttt{configure.ac} script. -There may be several libraries which need special treatment. +The \textit{yes} means force build and \textit{auto} means probe and +use the system version if the build operation is not static. To get +your customized build to work, you need to change the probe options +for the conflicting libraries from \textit{yes} to \textit{auto}, or +even rework the \texttt{configure.ac} script. There may be several +libraries which need special treatment. -An example of a problem you might encounter with your customized installation is with \texttt{a52dec} which has probes line \texttt{(CHECK\_LIB/CHECK\_HEADERS)} in \texttt{configure.ac}, but \texttt{djbfft} does not. -In this case, \texttt{djbfft} is only built because \texttt{a52dec} is built, so if your system has \texttt{a52dec}, set \texttt{a52dec} to auto and see if that problem is solved by retrying the build with: -\begin{lstlisting}[numbers=none] -$ ./confgure --with-single-user -enable-a52dec=auto . +An example of a problem you might encounter with your customized +installation is with \texttt{a52dec} which has probes line +\texttt{(CHECK\_LIB/CHECK\_HEADERS)} in \texttt{configure.ac}, but +\texttt{djbfft} does not. In this case, \texttt{djbfft} is only +built because \texttt{a52dec} is built, so if your system has +\texttt{a52dec}, set \texttt{a52dec} to auto and see if that +problem is solved by retrying the build with: +\begin{lstlisting}[style=sh] +./confgure --with-single-user -enable-a52dec=auto . \end{lstlisting} -With persistence, you can get results, but it may take several tries to stabilize the build. -If you need help, email the \texttt{log} and \texttt{config.log}, which is usually sufficient to determine why a build failed. -%\vspace{5ex} +With persistence, you can get results, but it may take several tries +to stabilize the build. If you need help, email the \texttt{log} +and \texttt{config.log}, which is usually sufficient to determine +why a build failed. -If you have already installed the \texttt{libfdk\_aac} development package on your computer because you prefer this version over the default aac, you will have to do the following to get this alternative operational. The libfdk\_aac library is not a part of \CGG{} by default because it is not license free. +If you have already installed the \texttt{libfdk\_aac} development +package on your computer because you prefer this version over the +default aac, you will have to do the following to get this +alternative operational. The libfdk\_aac library is not a part of +\CGG{} by default because it is not license free. -\begin{lstlisting}[numbers=none] -$ export FFMPEG_EXTRA_CFG=" --enable-libfdk-aac --enable-nonfree" -$ export EXTRA_LIBS=" -lfdk-aac" -$ for f in `grep -lw aac cinelerra-5.1/ffmpeg/audio/*`; do -$ sed -e 's/\/libfdk_aac/' -i $f -$ done +\begin{lstlisting}[style=sh] +export FFMPEG_EXTRA_CFG=" --enable-libfdk-aac --enable-nonfree" +export EXTRA_LIBS=" -lfdk-aac" +for f in `grep -lw aac cinelerra-5.1/ffmpeg/audio/*`; do + sed -e 's/\/libfdk_aac/' -i $f +done \end{lstlisting} + \subsection{Cloning the Repository for Faster Updates}% \label{sub:cloning_the_repository_for_faster_updates} -If you want to avoid downloading the software every time an update is available you need to create a local "repository" or repo. -The repo is a directory where you first do a \texttt{git clone}. -For the initial git clone, set up a local area for the repository storage, referred to as \texttt{}. -The \texttt{git clone} creates a repo named \texttt{cin5} in the \texttt{//} directory. -This accesses about 530\,MB of repo data, so the device has to have at least that available. -The repo path is always a perfect clone of the main repo. +If you want to avoid downloading the software every time an update +is available you need to create a local "repository" or repo. The +repo is a directory where you first do a \texttt{git clone}. For +the initial git clone, set up a local area for the repository +storage, referred to as \texttt{}. The \texttt{git + clone} creates a repo named \texttt{cin5} in the +\texttt{//} directory. This accesses about 530\,MB of +repo data, so the device has to have at least that available. The +repo path is always a perfect clone of the main repo. + \paragraph{Setting up the initial clone}% \label{par:setting_up_the_initial_clone} -You may want to add "\texttt{ -{}-depth 1}" before \texttt{cin5} because this will clone faster and is smaller, but has no history. +You may want to add "\texttt{ -{}-depth 1}" before \texttt{cin5} +because this will clone faster and is smaller, but has no history. -\begin{lstlisting}[numbers=none] -$ cd // -$ git clone "git://git.cinelerra-gg.org/goodguy/cinelerra" cin5 +\begin{lstlisting}[style=sh] +cd // +git clone "git://git.cinelerra-gg.org/goodguy/cinelerra" cin5 Cloning into "cin5"... remote: Counting objects: 20032, done. @@ -291,171 +411,232 @@ Resolving deltas: 100% (11333/11333), done. Checking connectivity... done. \end{lstlisting} + \paragraph{Update an existing repo}% \label{par:update_an_existing_repo} The below shows how you can get updates. -\begin{lstlisting}[numbers=none] - $ cd //cin5 - $ git pull +\begin{lstlisting}[style=sh] +cd //cin5 +git pull \end{lstlisting} + \paragraph{Useful git commands}% \label{par:useful_git_commands} Some other commands that are useful. -\begin{lstlisting}[numbers=none] -$ git clone "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cin5 -$ git pull # pull remote changes to the local version -$ git status # shows changed files -$ git clean -i # interactive clean, use answer 1 to "clean" +\begin{lstlisting}[style=sh] +git clone "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cin5 +git pull # pull remote changes to the local version +git status # shows changed files +git clean -i # interactive clean, use answer 1 to "clean" \end{lstlisting} - \subsection{How to Build from a Previous GIT Version}% \label{sub:how_to_build_from_a_previous_git_version} - -\begin{lstlisting}[numbers=none] -$ cd //cin5_repo -$ git log -$ git checkout +% FIXME The listing is here because... +\strut +% +\begin{lstlisting}[style=sh] +cd //cin5_repo +git log +git checkout \end{lstlisting} +The \texttt{git log} command produces a log file with hash values +for commit keys. The hash ids are the commit names to use when you +use git checkout. Next is displayed sample output: -The \texttt{git log} command produces a log file with hash values for commit keys. The hash ids are the commit names to use when you use git checkout. -Next is displayed sample output: - - -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=nil] delete stray line in last checkin commit 4a90ef3ae46465c0634f81916b79e279e4bd9961 Author: Good Guy Date: Thu Feb 22 14:56:45 2018 -0700 -nested clips, big rework and cleanup, sams new icons, leaks and tweaks +nested clips, big rework and cleanup, sams new icons, +leaks and tweaks commit f87479bd556ea7db4afdd02297fc00977412b873 Author: Good Guy Date: Sat Feb 17 18:09:22 2018 -0700 \end{lstlisting} -For the\texttt{ git checkout }, you would then keyin the line below for the following results: +For the \texttt{git checkout }, you would then keyin the +line below for the following results: -\begin{lstlisting}[numbers=none] -$ git checkout f87479bd556ea7db4afdd02297fc00977412b873 +\begin{lstlisting}[style=nil] +git checkout f87479bd556ea7db4afdd02297fc00977412b873 Note: checking out 'f87479bd556ea7db4afdd02297fc00977412b873'. - You are in 'detached HEAD' state. You can look around, make experimental - changes and commit them, and you can discard any commits you make in this - state without impacting any branches by performing another checkout. +You are in 'detached HEAD' state. You can look around, make +experimental changes and commit them, and you can discard any +commits you make in this state without impacting any branches by +performing another checkout. - If you want to create a new branch to retain commits you create, you may - do so (now or later) by using -b with the checkout command again. Example: +If you want to create a new branch to retain commits you create, +you may do so (now or later) by using -b with the checkout command +again. Example: - git checkout -b +git checkout -b - HEAD is now at f87479bd... more file size icon updates, and more to followend +HEAD is now at f87479bd... more file size icon updates, +and more to followend \end{lstlisting} -Later to get the repo back to current, use: -\begin{lstlisting}[numbers=none] -$ git checkout master +Later to get the repo back to current, use: +\begin{lstlisting}[style=sh] +git checkout master \end{lstlisting} \subsection{Debuggable Single User Build}% \label{sub:debuggable_single_user_build} +To build from source with full debugging symbols, first build a full +static (non\_debug) build as follows but instead of using +\texttt{/tmp} substitute your permanent disk path if you want to +keep it. -To build from source with full debugging symbols, first build a full static (non\_debug) build as follows but instead of using \texttt{/tmp} substitute your permanent disk path if you want to keep it. - -\begin{lstlisting}[numbers=none] -$ git clone ... -$ cp -a /path/cinelerra-5.1 /tmp/. -$ cd /tmp/cinelerra-5.1 -$ ./bld.sh +% FIXME cd /tmp/ && git clone ? +\begin{lstlisting}[style=sh] +git clone ... +cp -a /path/cinelerra-5.1 /tmp/ +cd /tmp/cinelerra-5.1 +./bld.sh \end{lstlisting} - Then, to run as a developer in the debugger: -\begin{lstlisting}[numbers=none] -$ CFLAGS="-O2 -ggdb" make -j8 rebuild_all -$ cd cinelerra -$ gdb ./ci +\begin{lstlisting}[style=sh] +CFLAGS="-O2 -ggdb" make -j8 rebuild_all +cd cinelerra +gdb ./ci \end{lstlisting} \subsection{Unbundled Builds}% \label{sub:unbundled_builds} -There are some generic build scripts included in the \CGG{} GIT repository for users who want to do unbundled builds with ffmpeg already available on their system. -This has been tested on Arch, Ubuntu 18, FreeBSD, Windows10 and Leap 15 (rpm) at the time this was documented. -The names of the build scripts are: \texttt{arch.bld} , \texttt{bsd.bld} , \texttt{deb.bld} , \texttt{rpm.bld}, and \texttt{cygwin.bld}. -These scripts are in the \texttt{blds} subdirectory. -The \texttt{bsd.bld} should be used with the \texttt{bsd.patch} file in that same directory. -The \texttt{cygwin.bld} should be used with the \texttt{cygwin.patch} file in that same directory. - -The reason that Cin Infinity traditionally uses thirdparty builds (bundled builds) is because there are a lot of different distros with varying levels of ffmpeg and other needed thirdparty libraries. -However, some users prefer using their current system baseline without another/different copy of ffmpeg. -With different levels of the user’s libraries, uncertainty, potential instability, and unknown issues may come up while running \CGG{} and this will make it, for all practical purposes, impossible to diagnose and debug problems or crashes. -There may be no help in these cases. You are encouraged to report any errors which potentially originate from Cin Infinity, but if the data indicates alternate library sources, please report the problems to the appropriate maintainers. - -With the unbundled builds, some features may not be available and no attempt to comment them out has been made. -So if you use a pulldown, or pick a render option, or choose something that is not available, it just will not work. -For example, unless special options were set up by you, the LV2 audio plugins will not be available. -Nor will the codec libzmpeg, the file codec ac3, or DVD creation. -The old school file classes will all work, but some of the formats that come with ffmpeg may not because of the way that ffmpeg was installed on your operating system. -That is because the \CGG{} included ffmpeg is a known static build and is usually the latest stable/released version. -For example, in the current case of Leap 15, libx264 and libx265 are not built in and this can be debilitating; you can always run \texttt{ffmpeg -formats} and \texttt{ffmpeg -codecs} to see what is available on your system. +There are some generic build scripts included in the \CGG{} GIT +repository for users who want to do unbundled builds with ffmpeg +already available on their system. This has been tested on Arch, +Ubuntu 18, FreeBSD, Windows10 and Leap 15 (rpm) at the time this +was documented. +% +The names of the build scripts are: \texttt{arch.bld}, +\texttt{bsd.bld}, \texttt{deb.bld}, \texttt{rpm.bld}, and +\texttt{cygwin.bld}. These scripts are in the \texttt{blds} +subdirectory. The \texttt{bsd.bld} should be used with the +\texttt{bsd.patch} file in that same directory. The +\texttt{cygwin.bld} should be used with the \texttt{cygwin.patch} +file in that same directory. + +The reason that Cin Infinity traditionally uses thirdparty builds +(bundled builds) is because there are a lot of different distros +with varying levels of ffmpeg and other needed thirdparty +libraries. However, some users prefer using their current system +baseline without another/different copy of ffmpeg. +% +With different levels of the user’s libraries, uncertainty, +potential instability, and unknown issues may come up while +running \CGG{} and this will make it, for all practical purposes, +impossible to diagnose and debug problems or crashes. +% +There may be no help in these cases. You are encouraged to report +any errors which potentially originate from Cin Infinity, but if +the data indicates alternate library sources, please report the +problems to the appropriate maintainers. + +With the unbundled builds, some features may not be available and +no attempt to comment them out has been made. So if you use a +pulldown, or pick a render option, or choose something that is not +available, it just will not work. For example, unless special +options were set up by you, the LV2 audio plugins will not be +available. Nor will the codec libzmpeg, the file codec ac3, or +DVD creation. The old school file classes will all work, but some +of the formats that come with ffmpeg may not because of the way +that ffmpeg was installed on your operating system. That is +because the \CGG{} included ffmpeg is a known static build and is +usually the latest stable/released version. For example, in the +current case of Leap 15, libx264 and libx265 are not built in and +this can be debilitating; you can always run \texttt{ffmpeg + -formats} and \texttt{ffmpeg -codecs} to see what is available +on your system. \section{Download Already Built \CGG{}}% \label{sec:download_already_built_cinelerra_gg} \begin{figure}[htpb] - \centering - \includegraphics[width=1.0\linewidth]{download-distros.png} - \caption{Screencast of the website Download page for installing \CGG{} for various O/S.} - \label{fig:download-distros} + \centering + \includegraphics[width=1.0\linewidth]{download-distros.png} + \caption{Screencast of the website Download page for installing \CGG{} for various O/S.} + \label{fig:download-distros} \end{figure} -If you prefer to not have to take the time to build \CGG{} Infinity yourself, there are pre-built dynamic or static binaries for various versions of Ubuntu, Mint, Suse, Fedora, Debian, Centos, Arch, and Slackware linux as well as Gentoo and FreeBSD. -A Windows 10 version installation is described in \ref{sec:ms_windows10}. -There are also 32-bit i686 Ubuntu, Debian, and Slackware versions available. -These are updated on a fairly regular basis as long as significant code changes have been made. +If you prefer to not have to take the time to build \CGG{} Infinity +yourself, there are pre-built dynamic or static binaries for various +versions of Ubuntu, Mint, Suse, Fedora, Debian, Centos, Arch, and +Slackware linux as well as Gentoo and FreeBSD. +% +A Windows 10 version installation is described in +\ref{sec:ms_windows10}. There are also 32-bit i686 Ubuntu, Debian, +and Slackware versions available. These are updated on a fairly +regular basis as long as significant code changes have been made. They are in subdirectories of: -{\small \url{https://cinelerra-gg.org/download/tars} - - \url{https://cinelerra-gg.org/download/pkgs}} - -The \textbf{tars} directory contains single-user static builds for different distros. -This is the recommended usage of \CGG{} because all of the files will exist in a single directory. -Generally all of the necessary libraries are built into the static build, but in some cases you may -have to install another library that is being called for. -To install the single user builds, download the designated tarball from the \texttt{./tars} subdirectory and unpack as indicated below: - -\begin{lstlisting}[numbers=none] -$ cd /path -$ mkdir cin -$ cd cin -$ tar -xJf /src/path/cinelerra-5.1-*.txz # for the *, substitute your distro tarball name -\end{lstlisting} - -Do NOT download the LEAP 10-bit version unless you use h265 (it can't render 8-bit h265). - -The \textbf{pkgs} directory contains the standard packaged application for various distros. -This will install a dynamic system version for users who prefer to have the binaries in the system area and for multi-user systems. -In addition, performing the package install checks the md5sum in the file \texttt{md5sum.txt} to ensure the channel correctly transmits the package. -There is a {\small \href{https://cinelerra-gg.org/download/README.pkgs}{README.pkgs}} file in the \texttt{download} directory with instructions so you can \textit{ cut and paste} and avoid typos; it is also shown next. - -\begin{lstlisting}[numbers=none] -Depending on the distro, use the instructions below and select the appropriate +\begin{list}{}{} +\item \href{https://cinelerra-gg.org/download/tars}{https://cinelerra-gg.org/download/tars} +\item \href{https://cinelerra-gg.org/download/pkgs}{https://cinelerra-gg.org/download/pkgs} +\end{list} + +The \textbf{tars} directory contains single-user static builds for +different distros. +% +This is the recommended usage of \CGG{} because all of the files +will exist in a single directory. Generally all of the necessary +libraries are built into the static build, but in some cases you may +have to install another library that is being called for. +% +To install the single user builds, download the designated tarball +from the \texttt{./tars} subdirectory and unpack as indicated below: + +\begin{lstlisting}[style=sh] +cd /path +mkdir cin +cd cin +tar -xJf /src/path/cinelerra-5.1-*.txz # for the *, + # substitute your + # distro tarball name +\end{lstlisting} + +\emph{Do not download the LEAP 10-bit version unless you use h265 (it +can't render 8-bit h265).} + +The \textbf{pkgs} directory contains the standard packaged +application for various distros. This will install a dynamic +system version for users who prefer to have the binaries in the +system area and for multi-user systems. +% +In addition, performing the package install checks the md5sum in +the file \texttt{md5sum.txt} to ensure the channel correctly +transmits the package. There is a +\href{https://cinelerra-gg.org/download/README.pkgs}{README.pkgs} +file in the \texttt{download} directory with instructions so you +can \textit{ cut and paste} and avoid typos; it is also shown +next. + +% FIXME (!) It doesn't work that way. The text is set as it is +% written. +% \begin{lstlisting}[style=sh] +{\tiny +\begin{verbatim} +Depending on the distro, use the instructions below and select the appropriate setup operations to install, update or remove cinelerr-gg infinity. (02/05/2020) To upgrade, refresh repo, then replace "install" with "update", or whatever. @@ -489,7 +670,7 @@ If repository problems, usually you can manually do an install by using: # FEDORA # Replace the XX in fedoraXX in the next line with your current O/S version number dnf install cinelerra --nogpgcheck --repofrompath cingg,https://cinelerra-gg.org/download/pkgs/fedoraXX/ -##dnf erase cinelerra +# dnf erase cinelerra # CENTOS # Python 2 has been updated for other distros to Python 3 so you might have to create a soft link @@ -501,7 +682,7 @@ baseurl=https://cinelerra-gg.org/download/pkgs/centos7 gpgcheck=0 # end of cin_gg yum install cinelerra -##yum erase cinelerra +# yum erase cinelerra # UBUNTU, replace ub14 with your distro id: ub16,ub18 # Some ubuntu apt downloads register status as working 0% constantly while running the package @@ -515,7 +696,7 @@ apt-add-repository https://cinelerra-gg.org/download/pkgs/ub14 # For example the line should be: deb [trusted=yes] https://cinelerra-gg.org/download/pkgs/ub16 xenial main # Or for ub18: deb [trusted=yes] https://cinelerra-gg.org/download/pkgs/ub18 bionic main # Also, on the install you will get an error message that you can either ignore as \CGG{} -# will run anyway, or else (the first time only) on the commnand line keyin: +# will run anyway, or else (the first time only) on the commnand line keyin: # echo > /etc/sysctl.d/50-cin.conf "kernel.shmmax=0x7fffffff" apt update apt install cin @@ -565,7 +746,7 @@ apt upgrade cin # openSUSE LEAP 15 zypper ar -f https://cinelerra-gg.org/download/pkgs/leap15/ cingg zypper install -r cingg cinelerra # or cinelerra10bit for 10 bit -# openSUSE LEAP 42 +# openSUSE LEAP 42 zypper ar -f https://cinelerra-gg.org/download/pkgs/leap42/ cingg # as of 42.3 SUSE there is a new requirement, so you will need to add: zypper mr -G cingg @@ -608,7 +789,9 @@ pacman -S cin # for installation instead. #to remove a previous install ##pacman -R cin -\end{lstlisting} +\end{verbatim} +} +% \end{lstlisting} \section{Windows 10 with Cygwin for \CGG{} Limited}% \label{sec:ms_windows10} @@ -668,14 +851,14 @@ Then to install the \CGG{} tar files, you will need to start a cygwin console te \item Download the tar file at:\\ {\small \url{https://cinelerra-gg.org/download/testing/libxcb-bld.tar.bz2}} \item Install libxbc from the tar file -- installs into \texttt{/usr/local} and requires approximately 21MB storage. -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ tar -C /usr/local -xJf /path/libxcb-bld.tar.bz2 \end{lstlisting} The libxcb path repairs an error (XIOError), which stops Cinelerra. \item Download the tar file at:\\ {\small \url{https://cinelerra-gg.org/download/testing/cygcin-bld.tar.bz2}} \item Install cygcin from the tar file - this installs into home directory. Note this is cygcin NOT cygwin. You must change the \texttt{path} below to the name of the path where you downloaded the tar file. -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ cd $ tar -xJf /path/cygcin-bld.tar.bz2 \end{lstlisting} @@ -694,15 +877,15 @@ You should start a console controlling terminal so that you can see program logg This opens a separate window that can survive a cygwin hang and bugs. Without these logs, it is much more difficult to use. \item Type into that console controlling window, the following: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] $ export DISPLAY=:0.0 \end{lstlisting} \item Change directories to where \CGG{} is installed: -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ cd /path/cygcin (NOT cygwin) \end{lstlisting} \item Finally keyin: -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ ./cin \end{lstlisting} which starts up your 4 \CGG{} windows. @@ -720,7 +903,7 @@ omissions are applied to this build. \item Download and install ffmpeg into /usr/local : download ffmpeg (currently 4.2.2) -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ cd /tmp $ tar -xJf /path/ffmpeg-4.2.2.tar.bz2 $ cd ffmpeg-4.2.2 @@ -729,7 +912,7 @@ omissions are applied to this build. $ make install \end{lstlisting} \item Download and install a patched libxcb: -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ cd /tmp $ rm -rf libxcb-1.13/ $ tar -xf /path/libxcb-1.13.tar.bz2 @@ -743,22 +926,22 @@ omissions are applied to this build. $ make install \end{lstlisting} \item Download cinelerra-gg: -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ cd /build_path/ $ git clone "git://git.cinelerra-gg.org/goodguy/cinelerra.git" $ cd cinelerra-gg/cinelerra-5.1 \end{lstlisting} \item Apply cygwin patch: -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ patch -p2 < blds/cygwin.patch \end{lstlisting} \item Run the build with: -\begin{lstlisting}[numbers=none] +\begin{lstlisting}[style=sh] $ ./blds/cygwin.bld \end{lstlisting} \end{enumerate} -This produces a directory: $/build\_path$/cinelerra-gg$/cinelerra$-5.1/bin \newline +This produces a directory: $/build\_path$/cinelerra-gg$/cinelerra$-5.1/bin which is used to create the cygcin archive. Currently, the targets are not stripped and can be run from gdb. @@ -771,21 +954,32 @@ Running gdb from inside a desktop resident console (not a cygwin64 window) will There are also some special complete distribution systems available that include \CGG{} for audio and video production capabilities. -\textbf{AV Linux} is a downloadable/installable shared snapshot ISO image based on Debian. -It provides the user an easy method to get an Audio and Video production workstation without the hassle of trying to find and install all of the usual components themselves. -Of course, it includes \CGG{}! -It is at: - -\begin{center} - {\small \url{http://www.bandshed.net/avlinux/}} -\end{center} - -\textbf{Bodhi Linux Media} is a free and open source distribution that comes with a curated list of open source software for digital artists who work with audio, video, includes \CGG{}, games, graphics, animations, physical computing, etc. -It is at: - -\begin{center} - {\small \url{https://gitlab.com/giuseppetorre/bodhilinuxmedia}} -\end{center} +\subsection{AV Linux} +\label{sec:AV Linux} + +\textbf{AV Linux} is a downloadable/installable shared snapshot +ISO image based on Debian. It provides the user an easy method to +get an Audio and Video production workstation without the hassle +of trying to find and install all of the usual components +themselves. Of course, it includes \CGG{}! +% +Click here for the +\href{http://www.bandshed.net/avlinux/}{homepage of AV Linux}. + +\subsection{Bodhi Linux} +\label{sec:Bodhi Linux} + +\textbf{Bodhi Linux Media} is a free and open source distribution that +comes with a curated list of open source software for digital +artists who work with audio, video, includes \CGG{}, games, +graphics, animations, physical computing, etc. +% +Click here for the +\href{https://gitlab.com/giuseppetorre/bodhilinuxmedia}{homepage of Bodhi Linux}. + +-\begin{center} +- {\small \url{https://gitlab.com/giuseppetorre/bodhilinuxmedia}} +-\end{center} \section{Cinx and a “Bit” of Confusion}% \label{sec:cinx_and_a_bit_of_confusion} @@ -802,18 +996,7 @@ Keep in mind that the regular 8-bit version works on 8-bit bytes --- the standar There is also a 12-bit version for consideration but currently the results are simply the same as 10-bit with padding to make 12-bit so it is of no value. - - - - - - - - - - - - - - - +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "../CinelerraGG_Manual" +%%% End: diff --git a/parts/Introduction.tex b/parts/Introduction.tex index 4780b7f..4a68dd4 100644 --- a/parts/Introduction.tex +++ b/parts/Introduction.tex @@ -20,8 +20,7 @@ possible, into this \CGG{} version and for several years has been adding numerous features, updates, and fixes. All of these software contributions are appreciated and each individual is thanked and commended for their efforts. The \CGG{} software is under \href{https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html}{GPLv2+} -license. % Refer to: -% {\small\url{https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html}} +license. As for this manual, the \href{https://www.gnu.org/licenses/fdl-1.3.en.html}{GNU Free @@ -29,63 +28,70 @@ As for this manual, the license for free documentation, designed by the Free Software Foundation (FSF) for the GNU Project. It is similar to the GNU General Public License, giving readers the rights to copy, -redistribute, and modify (except for "invariant sections") a work +redistribute, and modify (except for ``variant sections'') a work and requires all copies and derivatives to be available under the same license. The GFDL was designed for manuals, textbooks, other reference and instructional materials, and documentation which often -accompanies GNU software.% Refer to: -% {\small\url{https://en.wikipedia.org/wiki/GNU_Free_Documentation_License}} - -\textbf{This is a copy of the header from the original source code.} -\begin{lstlisting}[numbers=none,basicstyle=\footnotesize] -* -* CINELERRA -* Copyright (C) 1997-2012 Adam Williams -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston -\end{lstlisting} - +accompanies GNU software. + +% FIXME The sense behind this is not apparent. +% \textbf{This is a copy of the header from the original source code.} +% % \begin{lstlisting}[basicstyle=\footnotesize] +% {\small +% \begin{verbatim} +% * +% * CINELERRA +% * Copyright (C) 1997-2012 Adam Williams +% * +% * This program is free software; you can redistribute it and/or modify +% * it under the terms of the GNU General Public License as published by +% * the Free Software Foundation; either version 2 of the License, or +% * (at your option) any later version. +% * +% * This program is distributed in the hope that it will be useful, +% * but WITHOUT ANY WARRANTY; without even the implied warranty of +% * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% * GNU General Public License for more details. +% * +% * You should have received a copy of the GNU General Public License +% * along with this program; if not, write to the Free Software +% * Foundation, Inc., 59 Temple Place, Suite 330, Boston +% \end{verbatim} +% % \end{lstlisting} +% } \section*{\CGG{} Overview}% \label{sec:cinelerra_overview} -Presented briefly here is an overview of \CGG{} Infinity and information provided in this manual. -The GG version of \CGG{} has been improved for \emph{stability}, \emph{modernized} to accommodate the -\emph{current state} of Linux software, enhanced with additional \emph{basic features}, and enriched with \emph{new features} imagined by dedicated users and then implemented by professional programmers. +Presented briefly here is an overview of \CGGI{} and information +provided in this manual. The \GG{} version of \textsc{Cinelerra} has +been improved for \emph{stability}, \emph{modernized} to accommodate +the \emph{current state} of Linux software, enhanced with additional +\emph{basic features}, and enriched with \emph{new features} +imagined by dedicated users and then implemented by professional +programmers. \begin{description} - \item[Website] \small \url{https://www.cinelerra-gg.org}\\ + \item[Website] \href{https://www.cinelerra-gg.org}{https://www.cinelerra-gg.org}\\ The website for the cinelerra-gg software is a good place to start for information, help, and documentation. It is professionally maintained and continuously updated with more language translations ongoing. - \item[Stability] ~\\ + \item[Stability]~\\ Software programs that \textit{just work} are a \#1 priority in order to be of use for producing quality videos. A large amount of time has been invested in debugging problems and resolving crashes. And in a continuous process to do so, a chapter on Troubleshooting is included in order to easily provide sufficient information for users to capture issues and crashes so that they can be analyzed and quickly fixed to avoid repeat problems. - \item[Modernization] ~\\ + \item[Modernization]~\\ Artistic creativity has been applied to modernize the \CGG{} plugin icons for video and audio to even include the ffmpeg plugins. The Cinfinity set of plugin icons come in square or roundish versions --- your choice. In keeping up with the current expectation of users for a certain \textit{look and feel}, 2 very modern recent theme additions, Cakewalk and Neophyte, provide alternatives to the already existing 9 themes. These 11 themes give the user the choice to get the look they like best for their own eyes. - \item[Current and up-to-date] ~\\ + \item[Current and up-to-date]~\\ For today’s software, included thirdparty libraries are kept up to date in a timely manner and effort is made to always use a relatively recent version of FFmpeg, if not the latest. This is a big deal because there is a whole set of separate programmers working on these libraries continuously and diligently to cover all of the old and newly created formats. Thus \CGG{} programmers can be dedicated to working solely on \CGG{} rather than just trying to keep up with many formats. \item[FFmpeg usage integration]~\\ By using FFmpeg with \CGG{}, there is the advantage that users can directly convert videos via pre- and post-processing, without the need for command lines to be executed manually before or afterwards. - \item[Import and Export formats] ~\\ + \item[Import and Export formats]~\\ Listed here are only a few of the supported Import and Export formats: \begin{itemize} \item several standard native formats, such as mpeg, ac3, flac, exr and jpeg/png/ppm/tiff sequences @@ -95,7 +101,7 @@ The GG version of \CGG{} has been improved for \emph{stability}, \emph{modernize and recently released AV1 and WebP \item raw image format for over 700 supported cameras, courtesy Dave Coffin's DCraw \end{itemize} - \item[Standard Features] ~\\ + \item[Standard Features]~\\ \begin{itemize} \item Program window for video and audio tracks, navigation, popups, playing and seeking functions. \item Editing via track manipulation with either drag and drop editing or cut and paste editing. @@ -130,7 +136,7 @@ The GG version of \CGG{} has been improved for \emph{stability}, \emph{modernize \item Asset and Title colors selection including Alpha slider adjustment. \item Scaling preference for any monitor size and HiDPI to support 4K monitors. \end{itemize} - \item[Innovative New Features] ~\\ + \item[Innovative New Features]~\\ \begin{itemize} \item Inter-View mode as invented through a collaborative effort by a user and the developer. \item Proxy settings for large formatted media with the coveted Scalar option and proxy quick switch. @@ -149,119 +155,119 @@ Below is listed a brief overview of each chapter to help you to decide which cha And which chapters are important for beginning to learn to use \CGG{}. At the end of the descriptions is a list of the sections to read for beginners. \begin{description} - \item[Chapter \ref{cha:Installation} ] \nameref{cha:Installation}. + \item[Chapter~\ref{cha:Installation} ] \nameref{cha:Installation}. If you just want to get started using the program, you can safely skip this chapter and instead go to: {\small \url{https://www.cinelerra-gg.org}} and simply download a pre-built linux version for your Operating System. If you would like to do your own builds so that you always have the latest, refer to this chapter to learn how. But if you are already familiar with doing your own builds, you can just refer to this chapter when you encounter issues. - \item[Chapter \ref{cha:the_4_windows} ] \nameref{cha:the_4_windows}. + \item[Chapter~\ref{cha:the_4_windows} ] \nameref{cha:the_4_windows}. It is important to understand the window setup in \CGG{} and what each of them is used for. In addition this chapter covers some basic navigation functions that you will need to know. However, if you have used an NLE before and don’t mind experimenting to learn how to execute certain functions, probably there is no need to peruse this chapter. - \item[Chapter \ref{cha:project_and_media_attributes}] \nameref{cha:project_and_media_attributes}. + \item[Chapter~\ref{cha:project_and_media_attributes}] \nameref{cha:project_and_media_attributes}. This chapter is helpful for basic understanding of setting up your session but it can easily be skipped. - \item[Chapter \ref{cha:load_save_and_the_EDL}] \nameref{cha:load_save_and_the_EDL}. + \item[Chapter~\ref{cha:load_save_and_the_EDL}] \nameref{cha:load_save_and_the_EDL}. Since this is important to not losing your work, you should read this chapter for some basic usage concepts and for some lesser used functions that may come in handy. Besides how to Load and Save files, there is also information on using raw camera formats. Helpful hints on working with image sequences, such as a bunch of pictures from your camera all loaded at once, is a time saver. - \item[Chapter \ref{cha:editing}] \nameref{cha:editing}. + \item[Chapter~\ref{cha:editing}] \nameref{cha:editing}. New and occasional users will find it necessary to read this chapter. However, you can decide which editing mode you prefer and concentrate on reading that section. Even seasoned users will want to read this chapter in order to take advantage of features that have been newly implemented or may be less familiar due to infrequent usage. Anyone who wants the editing capabilities that comes with use of the Shuttle Jog Wheel, will initially need to read that section to become familiar with its usage. - \item[Chapter \ref{cha:rendering}] \nameref{cha:rendering}. + \item[Chapter~\ref{cha:rendering}] \nameref{cha:rendering}. Minimally most users will need to read the section on single file rendering to get started; since after all the whole purpose of using an NLE is to create your own media. The end of this chapter includes some helpful specific rendering scenarios which could prove quite useful. You might also want to consider using batch rendering and background rendering for performance reasons. And, of course, render farm usage to take advantage of multiple computers can be a real boost. - \item[Chapter \ref{cha:keyframes}] \nameref{cha:keyframes}. + \item[Chapter~\ref{cha:keyframes}] \nameref{cha:keyframes}. This is a more advanced topic but extremely useful to know. Keyframes are data values that have been associated to the timeline that affect the media presentation. You can go for years without knowing all of the nuances but you will most likely have a need to use and understand them sooner or later. - \item[Chapter \ref{cha:ffmpeg_interactions}] \nameref{cha:ffmpeg_interactions}. + \item[Chapter~\ref{cha:ffmpeg_interactions}] \nameref{cha:ffmpeg_interactions}. Skip this chapter if you are just getting started. Skip this chapter if you just want to use common formats that are already set up for you. Experts may want to refer to this chapter in order to set up their own option files. - \item[Chapter \ref{cha:plugins}]\nameref{cha:plugins}. + \item[Chapter~\ref{cha:plugins}]\nameref{cha:plugins}. Use this chapter as a reference to add an audio or video plugin in order to correct color or add some fancy effect. You will not want to read about each and every plugin, most of which you will never use. On the other hand, going over the section on “some specific details concerning plugins” might come in handy. - \item[Chapter \ref{cha:transition_plugin}] \nameref{cha:transition_plugin}. + \item[Chapter~\ref{cha:transition_plugin}] \nameref{cha:transition_plugin}. Everyone who does not know about using transitions should read this chapter because you will want to use transitions between cuts in your video for smoothly changing scenes. It is short and easy reading. - \item[Chapter \ref{cha:overlays}] \nameref{cha:overlays} Modes, Alpha Blending, and Porter Duff. + \item[Chapter~\ref{cha:overlays}] \nameref{cha:overlays} Modes, Alpha Blending, and Porter Duff. Experts can really use the information in this chapter to spiff up their editing work through some blending type techniques. A lot of information and possibilities are described here. - \item[Chapter \ref{cha:capturing_recording_media}] \nameref{cha:capturing_recording_media}. + \item[Chapter~\ref{cha:capturing_recording_media}] \nameref{cha:capturing_recording_media}. This chapter is helpful in learning how to capture and record media from various sources. A section on using \CGG{} with broadcast TV is especially useful. - \item[Chapter \ref{cha:dvd_bluray_creation}] \nameref{cha:dvd_bluray_creation}. + \item[Chapter~\ref{cha:dvd_bluray_creation}] \nameref{cha:dvd_bluray_creation}. If this is what you want to do, then read this chapter. In the case of DVD media creation it includes many examples and lots of tips for checking your methods. - \item[Chapter \ref{cha:multi_5}] \nameref{cha:multi_5}. + \item[Chapter~\ref{cha:multi_5}] \nameref{cha:multi_5}. For using multiple cameras in your video creation, this chapter is a must read. Otherwise, just refer to the section that becomes pertinent as you familiarize yourself with using \CGG{}. - \item[Chapter \ref{cha:shortcuts}] \nameref{cha:shortcuts}. + \item[Chapter~\ref{cha:shortcuts}] \nameref{cha:shortcuts}. Everyone will want to use this chapter to speed up their editing sessions. Once you find yourself doing the same thing over and over again, you will want to know if there is a shortcut. Then look here! - \item[Chapter \ref{cha:configuration_settings_preferences}] \nameref{cha:configuration_settings_preferences}. + \item[Chapter~\ref{cha:configuration_settings_preferences}] \nameref{cha:configuration_settings_preferences}. Refer to this chapter when you want to change some setting or preference. Otherwise if a new user, you should make sure to read the first page which includes some important basic information. - \item[Chapter \ref{cha:how_stuff_works}] \nameref{cha:how_stuff_works}. + \item[Chapter~\ref{cha:how_stuff_works}] \nameref{cha:how_stuff_works}. Only read this chapter if you are confused about a specific covered topic and how it works. - \item[Chapter \ref{cha:troubleshooting_help}] \nameref{cha:troubleshooting_help}. + \item[Chapter~\ref{cha:troubleshooting_help}] \nameref{cha:troubleshooting_help}. Use this chapter for diagnosing a problem and find out what to report to get the best resolution or help. - \item[Chapter \ref{cha:performance_tips}] \nameref{cha:performance_tips}. + \item[Chapter~\ref{cha:performance_tips}] \nameref{cha:performance_tips}. There are a few performance tips in this chapter that may eventually prove useful. - \item[Chapter \ref{cha:translations}] \nameref{cha:translations}. + \item[Chapter~\ref{cha:translations}] \nameref{cha:translations}. If you want to help by providing translations for a specific language, there is a complete description of how to do this and what to do. - \item[Chapter \ref{cha:licenses}] \nameref{cha:licenses}. + \item[Chapter~\ref{cha:licenses}] \nameref{cha:licenses}. - \item[Appendix \ref{cha:Quickstart}] \nameref{cha:Quickstart}. + \item[Appendix~\ref{cha:Quickstart}] \nameref{cha:Quickstart}. Here you go! If you hate to read, just go over the quick start guide or the youtube video creation and simply be on your way. - \item[Appendix \ref{cha:developer's_section}] \nameref{cha:developer's_section}. + \item[Appendix~\ref{cha:developer's_section}] \nameref{cha:developer's_section}. Some extra information that developers may or may not find useful. - \item[Appendix \ref{cha:auxiliary_programs}] \nameref{cha:auxiliary_programs}. + \item[Appendix~\ref{cha:auxiliary_programs}] \nameref{cha:auxiliary_programs}. This is a catch-all for any useful programs that may need to be included, mostly for analysis. @@ -270,12 +276,17 @@ And which chapters are important for beginning to learn to use \CGG{}. At the en In summary, \textit{must} reads for a new user would be these chapters or sections: \begin{itemize} - \item Chapter \ref{cha:the_4_windows} --- \nameref{cha:the_4_windows}. - \item Chapter \ref{cha:load_save_and_the_EDL} --- \nameref{cha:load_save_and_the_EDL}. - \item Chapter \ref{cha:editing} --- \nameref{cha:editing}; read all sections except emphasize only either \nameref{sec:cut_paste_editing} or \nameref{sec:drag_drop_editing} to suit your purpose and then skim the editing mode that is not your preference as some operations work in either mode. + \item Chapter~\ref{cha:the_4_windows} --- \nameref{cha:the_4_windows}. + \item Chapter~\ref{cha:load_save_and_the_EDL} --- \nameref{cha:load_save_and_the_EDL}. + \item Chapter~\ref{cha:editing} --- \nameref{cha:editing}; read all sections except emphasize only either \nameref{sec:cut_paste_editing} or \nameref{sec:drag_drop_editing} to suit your purpose and then skim the editing mode that is not your preference as some operations work in either mode. Skip the \nameref{sec:shuttle_jog_wheels_editing} section unless you have this jog wheel in hand. - \item Chapter \ref{cha:rendering} --- \nameref{cha:rendering}; minimally read the \nameref{sec:single_file_rendering} section. - \item Chapter \ref{cha:plugins} --- \nameref{cha:plugins}; read the section on \nameref{sec:how_use_plugins}. - \item Chapter \ref{cha:transition_plugin} --- \nameref{cha:transition_plugin}. - \item Chapter \ref{cha:configuration_settings_preferences} --- \nameref{cha:configuration_settings_preferences}; read at least the first couple of paragraphs. + \item Chapter~\ref{cha:rendering} --- \nameref{cha:rendering}; minimally read the \nameref{sec:single_file_rendering} section. + \item Chapter~\ref{cha:plugins} --- \nameref{cha:plugins}; read the section on \nameref{sec:how_use_plugins}. + \item Chapter~\ref{cha:transition_plugin} --- \nameref{cha:transition_plugin}. + \item Chapter~\ref{cha:configuration_settings_preferences} --- \nameref{cha:configuration_settings_preferences}; read at least the first couple of paragraphs. \end{itemize} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "../CinelerraGG_Manual" +%%% End: diff --git a/parts/Loadandsave.tex b/parts/Loadandsave.tex index 6b2e5a2..c80d7c3 100644 --- a/parts/Loadandsave.tex +++ b/parts/Loadandsave.tex @@ -75,8 +75,8 @@ File lists formats can be utilized in some way for the following list of types o %\vspace*{1ex} Using the example of jpeg’s, the jpeg list sequence file type is the easiest and fastest way to access a sequence of jpg images as a single asset. First build a jpeglist sequence file and name it something like jpeglist.sh. There is an example script of how to do this in the Auxiliary Programs section of the Appendix (\ref{sec:image_sequence_creation}). Once the jpeglist.sh file is built you can then run it similar to this line: -\begin{lstlisting}[language=bash,numbers=none] -$ jpeglist.sh //file.jpg //DSC*.jpg +\begin{lstlisting}[style=sh] +jpeglist.sh //file.jpg //DSC*.jpg \end{lstlisting} \vspace*{1ex} \noindent If <\texttt{path}> is the same on both outfile and infiles, then file.jpg is created in the same directory as infiles, the directory contains the entire asset, and the file list uses relative paths; otherwise the file list contains absolute paths. Since this creates outfile list as a single asset, the memory demand and access time is much lower. When you load the outfile in \CGG{}, you will need to set \textit{Try ffmpeg last} since ffmpeg does not work with jpeglist sequence files. @@ -85,7 +85,7 @@ An example output file from running this script residing in the directory where To use this, turn off ffmpeg probes first, and open \texttt{timelapse.jpg} using File ~$\rightarrow$ ~Load files. -\begin{lstlisting}[language=bash,numbers=none,caption={Example: timelapse.jpg},captionpos=t] +\begin{lstlisting}[style=sh,caption={Example: timelapse.jpg},captionpos=t] JPEGLIST # First line is always JPEGLIST # Frame rate: @@ -111,11 +111,8 @@ Image2file format is an alternative method to open an image sequence via ffmpeg. \texttt{DSC0\%04d.opts} should contain the following lines which have to be modified to fit your exact requirements for duration, start\_number, and frame\_rate. -\begin{lstlisting}[ -language=bash, -numbers=none, -caption={Example DSC0\%04d.opts}, -captionpos=t] +\begin{lstlisting}[style=sh,caption={Example + DSC0\%04d.opts},captionpos=t] loglevel=verbose threads=auto format=image2 @@ -158,7 +155,7 @@ All data that you work with in \CGG{} is acquired either by loading from disk or \begin{figure}[htpb] \centering - \includegraphics[width=0.8\linewidth]{load.png} + \includegraphics[width=0.9\linewidth]{load.png} \caption{Load file menu. Note the green checkmark for OK and the middle Apply option} \label{fig:load} \end{figure} @@ -229,7 +226,7 @@ When you use the File pulldown to load files, you can do a sort within a sort wh \begin{figure}[htpb] \centering - \includegraphics[width=0.9\linewidth]{load-sort.png} + \includegraphics[width=1.0\linewidth]{load-sort.png} \caption{Load - Sort by File name, sort by file Size, and within Extension after a previous Size sort} \label{fig:load-sort} \end{figure} @@ -241,15 +238,15 @@ There are several icon buttons at the top on the right hand side of the Load win \begin{description} \item[0] this is the default and current behavior and shows bytes the same as the \textit{ls -l} command. - \item[b] 3 significant digits suffixed by lower case k,m,g,t,b for representing magnitudes in $10^3$ (1000) - \item[B] 3 significant digits followed by upper case characters for representing magnitudes in $2^{10}$ (1024) - \item[;] like the exact default byte representation but with comma separators for easy reading. Periods can + \item[SI] 3 significant digits suffixed by lower case k,m,g,t,b for representing magnitudes in $10^3$ (1000) + \item[Ic$^{E}$] 3 significant digits followed by upper case characters for representing magnitudes in $2^{10}$ (1024) + \item[0,] like the exact default byte representation but with comma separators for easy reading. Periods can not be used as separators due to locale conflict with ffmpeg coding. \end{description} \begin{figure}[htpb] \centering - \includegraphics[width=0.9\linewidth]{load-size.png} + \includegraphics[width=1.0\linewidth]{load-size.png} \caption{Load windows with various Numeric Sizes} \label{fig:load-size} \end{figure} @@ -257,7 +254,7 @@ There are several icon buttons at the top on the right hand side of the Load win \subsection{Probe Order when Loading Media}% \label{sub:probe_order_loading_media} -Why is this mentioned here? So many programs have been written whose functionalities overlap and you may want to ensure that the one you wish to use is actually used. Over time which one matches first may vary. Ffmpeg is so generic that if your setting is \textit{Try ffmpeg first} it will almost certainly get used and it leaves little chance that other methods will even get a chance. Some of the codec file drivers can open a variety of media, and some of the more common methods may have more than one file driver which could be useful to decode your media file, for example Tiff. For expert specialized usage, when you want to guarantee that a certain method is used, you can change the \textit{probe order}. Use the pulldown \texttt{Settings $\rightarrow$ Preferences} to get to the Interface tab where you will see a box in the Operation section on the left side called \textit{Probe Order}. Click on the box and use the up/down/enabled boxes to change the order of the item you have highlighted (figure~\ref{fig:probe}). +Why is this mentioned here? So many programs have been written whose functionalities overlap and you may want to ensure that the one you wish to use is actually used. Over time which one matches first may vary. Ffmpeg is so generic that if your setting is \textit{Try ffmpeg first} it will almost certainly get used and it leaves little chance that other methods will even get a chance. Some of the codec file drivers can open a variety of media, and some of the more common methods may have more than one file driver which could be useful to decode your media file, for example Tiff. For expert specialized usage, when you want to guarantee that a certain method is used, you can change the \textit{probe order}. Use the pulldown \texttt{Settings $\rightarrow$ Preferences} to get to the \textit{Interface tab} where you will see a box in the \textit{Operation} section on the left side called \textit{Probe Order}. Click on the box and use the up/down/enabled boxes to change the order of the item you have highlighted (figure~\ref{fig:probe}). \begin{description} [noitemsep] \item[Up] move the item up 1 (if the item is currently on the top, it will be moved to the bottom) @@ -269,12 +266,12 @@ The default setup is set to duplicate the past expected behavior with the except \begin{figure}[htpb] \centering - \includegraphics[width=0.9\linewidth]{probe.png} + \includegraphics[width=0.8\linewidth]{probe.png} \caption{Three example of Probes window} \label{fig:probe} \end{figure} -Screencast show the first few probe items. Note that the up arrow on the left, signifies \textit{enabled}. +Figure~\ref{fig:probe} show the first few probe items. Note that the up arrow on the left, signifies \textit{enabled}. Scrolling down shows the next 2 pages of possible drivers for a total of 18. The order change will not take effect until you click on the checkmark in both the Probes window and the Preferences window. When you click on the FF button, which is in the upper right-hand corner of the main page to change \textit{Try FFMpeg first/last}, enabling of FFMPEG\_Late or FFMPEG\_Early will be toggled automatically in Probes to match that choice but does NOT change its position in the table. Be sure to only click on the FF button without the Preference/Probes window up to avoid unexpected results. It is also recommended to leave FFMPEG\_Early/FFMPEG\_Late close to the top/bottom positions. There is one case where you may want to disable all of the probes if you want to force PCM -- Pulse Code Modulator. This code is always run when all other probes fail. @@ -285,15 +282,15 @@ The order change will not take effect until you click on the checkmark in both t Some kinds of media have \textit{program} streams, like captured mpeg broadcast stream data. For example, you may be able to \textit{tune} to channel 9, but be able to see 9-1, 9-2, and 9-3 on your TV. If you open a capture of this kind of media, all of the channels are present in the timeline. To select and view just one program, you can use Alt-1 to select program 1, or Alt-2 to select program 2, etc. up to Alt-8. This will remove all of the other unrelated tracks and reset the format. This feature can be used even if there is only one program, by pressing Alt-1, and the effect will be to reset the session format to the parameters from the media probe. Note that there may be several audio \textit{programs} associated to a video stream; for example, there may be dialog in another language or some kind of descriptive dialog. Since the first associated audio is always selected, this may not produce the intended results. -Below are screenshots illustrating multiple program streams (figure~\ref{fig:stream}). The left screenshot is a partial main \CGG{} window showing a pre-recorded broadcast TV media/audio stream with 3 programs plus several associated audio tracks. The second screenshot of \textit{Asset Detail} provides detailed information on each of the streams obtained through executing the Info Details as explained in the section \textit{Info Asset Details}. - \begin{figure}[htpb] \centering - \includegraphics[width=0.8\linewidth]{stream.png} + \includegraphics[width=1.0\linewidth]{stream.png} \caption{Multiple program streams and Asset Detail} \label{fig:stream} \end{figure} +Below are screenshots illustrating multiple program streams (figure~\ref{fig:stream}). The left screenshot is a partial main \CGG{} window showing a pre-recorded broadcast TV media/audio stream with 2 programs plus several associated audio tracks. The second screenshot of \textit{Asset Detail} provides detailed information on each of the streams obtained through executing the \texttt{Info $\rightarrow$ Details} as explained in the section \nameref{sub:info_asset_details}. + \section{Saving Your Work}% \label{sec:saving_your_work} @@ -307,7 +304,7 @@ Saving XML files is useful to save the current state of \CGG{} before quitting When \CGG{} saves a file, it saves the EDL of the current project but does not save any media, instead just pointers to the original media files. For each media file, the XML file stores either an absolute path or just the relative path. If the media is in the same directory as the XML file, a relative path is saved. If it is in a different directory, an absolute path is saved. You have to be careful when moving files around to avoid breaking the media linkages. You can keep the media and the XML file in the same directory forever and freely move the whole directory, since relative paths are saved. Alternatively you can save the XML file in a different directory than the media but then you can't move the media. In this case you can freely move your XML file around, since absolute paths are saved. If you saved your XML file in the same directory as your media but you would like to move location, you can change the paths from relative to absolute by going -to \texttt{File $\rightarrow$ Save as}$\dots$ and entering the new location. Similarly if you saved your project outside your media directory but you would like to move your media to another location, you can change the paths from absolute to relative by going to File $\rightarrow$ Save as\dots and saving your XML file in the same directory as the media. +to \texttt{File $\rightarrow$ Save as}$\dots$ and entering the new location. Similarly if you saved your project outside your media directory but you would like to move your media to another location, you can change the paths from absolute to relative by going to \textit{File $\rightarrow$ Save as}\dots and saving your XML file in the same directory as the media. You can also repair broken media linkage by editing the XML file in a text editor. For every media you moved, search for the old path and replace it with the new one. You should make a backup copy of your XML file before editing. You can also replace the path of every asset whose source file you moved also within the program, by entering the new location in the Asset info window. To open this window, right click on the asset in the Resources window and choose Info\dots in the popup menu. Directly type the path in the first field of the dialog or click on the magnifier on the right to browse your files. Operating from the GUI is convenient only when a very small number of changes is needed. diff --git a/parts/Overlays.tex b/parts/Overlays.tex index d6750dd..693c7fb 100644 --- a/parts/Overlays.tex +++ b/parts/Overlays.tex @@ -58,7 +58,7 @@ Below, in figure~\ref{fig:normal}, are the results of utilizing the 30 available The implementation math forms are subsequently listed, where: \vspace{2ex} -\begin{lstlisting}[language=bash, numbers=none] +\begin{lstlisting}[style=sh] Legend: D = Destination S = Source diff --git a/parts/Plugins.tex b/parts/Plugins.tex index 0c57797..bc70102 100644 --- a/parts/Plugins.tex +++ b/parts/Plugins.tex @@ -250,7 +250,7 @@ For a ladspa plugin, the text line in \texttt{\$HOME/.bcast5/ladspa\_plugins}$\d \texttt{AM pitchshifter} $1504922321\, 0\, 1\, 0\, 0\, 1\, 0\, 1\, 0\, 1\, 0\, 0$ indicates that you would create the icon: \\ \texttt{/plugins/picon/cinfinity/am\_pitchshift\_1433.png} \\ For your own personal plugins, you can create a directory on your system and put any plugin png files you like into that directory. For example, if you want a specialized picon for \textit{F\_aeval}, create a picon named \texttt{ff\_aeval.png} in: \\ \texttt{/plugins/picon/yournamehere.} -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] cd /plugins # go to the correct directory mkdir -p picon/yournamehere # create subdirectory if does not exist ls -l picon/* # list the picon directories @@ -295,7 +295,7 @@ If there are recommendations for other relevant categories, they can be added. T The \texttt{expanders.txt} file has very specific requirements. The most specific is that there are no blanks -- you must use tabs only. A \# (pound sign) can be used in column 1 to indicate a comment. Here is a short example: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] Video Effects - Color_Correction Blue Banana @@ -332,13 +332,13 @@ if using an ffmpeg plugin that uses filters and many passes over the data, the a file containing the following line, the full scale color modeling upgrade will not be performed until after any plugin, and then the render is faster: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] video_filter=xxxxxx=threads=8 # where xxxxxx is the desired filter \end{lstlisting} When the file loads, however, it will initially take longer because it is running through the video filter. The format \textit{rgb} in ffmpeg uses more cpu time. For comparison, ffmpeg line that might be used: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] ffmpeg -i /tmp/filename.mpeg -threads 15 -vf format=rgb24,xxxxxxs=threads=8 -acodec ac3 -vcodec libx265 - y /tmp/x.mp4 \end{lstlisting} @@ -703,7 +703,7 @@ Currently available waveforms are: \textit{Sine}; \textit{Sawtooth}; \textit{Rev Ladspa effects are supported in realtime and rendered mode for audio. These audio effects are supported since \CGG{} implements the LADSPA interface as accurately as possible. Besides the supplied LADSPA effects\protect\footnote{credit Steve Harris}, additional LADSPA effects can be enabled by setting the \texttt{LADSPA\_PATH} environment variable to the location of your LADSPA plugins: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] export LADSPA_PATH=/usr/lib/ladspa \end{lstlisting} @@ -771,7 +771,7 @@ In order to test a particular plugin without bringing up \CGG{}, especially for \texttt{/cin-path/lv2ui } \\ For example: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] /tmp/cinelerra-5.1/bin/lv2ui http://calf.sourceforge.net/plugins/Flanger \end{lstlisting} @@ -2501,7 +2501,7 @@ The X Window system originally did not have a suitable font renderer for video. The titler supports mainly \textit{TTF}, true type fonts. It supports others but TTF are the most reliable. To add true type fonts, copy the \texttt{.TTF} files to the fonts directory. In that directory run \vspace{1ex} -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] # /usr/lib/cinelerra/fonts ttmkfdir && mv fonts.scale fonts.dir \end{lstlisting} @@ -2590,7 +2590,7 @@ These attributes stay in effect until you change them or reset them. Additional Figure~\ref{fig:title03}. \vspace{1ex} -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] Buddy, the bad dog ate my homework !
    There are
      210cats to chase? \end{lstlisting} @@ -2647,7 +2647,7 @@ In order to choose a font faster, you can keyin the first few characters of the Some of the system fonts are automatically included in the set of fonts being used by \CGG{}. The easiest way to add additional fonts for the Title plugin's set, is to use ones available in specific directories on your computer as long as they have a \texttt{fonts.scale} file already set up. You can run \texttt{mkfontscale} to create this file within that directory. In order to include a specific directory you set an environment variable before starting \CGG{} which stays in effect until it is unset or until the next reboot. Below is the method and an example. \vspace{1ex} -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] export BC_FONT_PATH= export BC_FONT_PATH=/usr/share/fonts \end{lstlisting} @@ -2660,7 +2660,7 @@ Here you will find the default set of fonts that come with the install. Copy any If you have problems with a specific font or set of fonts, there is a debug option available to determine which font is an issue. When starting \CGG{}, you should set up the variable: \vspace{1ex} -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] export BC_FONT_DEBUG=1 (default is 0 for no debug) unset BC_FONT_DEBUG (to remove debug messages) \end{lstlisting} @@ -2668,7 +2668,7 @@ unset BC_FONT_DEBUG (to remove debug messages) Then start \CGG{} from a terminal window to see the fonts being loaded and previewed in the Titler. This should point out any issues. Another debug methodology is to remove all fonts from being used and subsequently add in the ones that you want. For example: \vspace{1ex} -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] export BC_FONT_PATH=: #(the : "colon" removes all automatic system and Cinelerra fonts) export BC_FONT_PATH=:/usr/share/fonts #(remove all fonts and then add /usr/shar/fonts) \end{lstlisting} @@ -2952,13 +2952,13 @@ Because of the build size of opencv, it is not normally included in the thirdpar To build findobject and the other plugins using opencv, access the src using git: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] git clone -depth 1 "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cinelerra5 \end{lstlisting} then configure the build, but add the \texttt{-{}-with-opencv} configure parameter. -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] cd /cinelerra-5.1 ./autogen.sh ./configure --with-findobect=sta @@ -2978,7 +2978,7 @@ $4\, GB$ in the thirdparty build directory and more time to compile. To get opencv built in the easiest way possible (need internet access because builds directly from the opencv github but this changes wildly): -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] ./configure --with-opencv=sta,git \end{lstlisting} @@ -2987,7 +2987,7 @@ To get opencv built in the easiest way possible (need internet access because bu The OpenCV plugins are built only in the 64-bit tarball builds, both static and dynamic. However, due to size these plugins are not included with pkgs. But it is relatively easy to add the current 6 plugins for your distro via a simple procedure of copying the plugins from the tarball to the cin5 install plugin path. They are: -\begin{lstlisting}[language=Bash,numbers=none] +\begin{lstlisting}[style=sh] cin/plugins/opencv/findobj.plugin cin/plugins/opencv/flowobj.plugin cin/plugins/opencv/gaborobj.plugin diff --git a/parts/Recording.tex b/parts/Recording.tex index a2b6ce2..54d21fb 100644 --- a/parts/Recording.tex +++ b/parts/Recording.tex @@ -568,7 +568,7 @@ It mostly works, but it takes more time to setup and maintain the database as th Currently, to activate the commercial database (db) methods you must do the following as root: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] cd /bin mkdir /cinelerra #yes, currently only in the / filesystem ./cin_db /cinelerra/media.db #to create a new empty commercial capture database diff --git a/parts/Rendering.tex b/parts/Rendering.tex index da52ef5..022b80b 100644 --- a/parts/Rendering.tex +++ b/parts/Rendering.tex @@ -33,8 +33,8 @@ Use the File pulldown and select Render to start the render dialog (figure~\ref{ \begin{description} \item[Wrench:] select the \textit{wrench} next to each toggle to set compression parameters. If the file format can not store audio or video the compression parameters will be blank. If \textit{Render audio tracks} or \textit{Render video tracks} is selected and the file format does not support it, trying to render will result in an error message. More details in the section: \nameref{sub:extra_cin_option_ffmpeg} \item[Create new file at each label] the option causes a new file to be created when every label in the timeline is encountered – a separate file for each. This is useful for dividing long audio recordings into individual tracks. When using the Render Farm (described later), \textit{Create new file at each label} causes one render farm job to be created at every label instead of using the internal load balancing algorithm to space jobs. If the filename given in the render dialog has a 2 digit number in it, the 2 digit number is overwritten with a different incremental number for every output file. If no 2 digit number is given, \CGG{} automatically concatenates a number to the end of the given filename for every output file. - For example, in the filename \texttt{/movies/track01.wav} the $01$ would be overwritten for every output file. - The filename \texttt{/movies/track.wav}; however, eventually would become \texttt{/movies/track.wav001} and so on. + For example, in the filename \texttt{/movies/track01.wav} the $01$ would be overwritten for every output file. + The filename \texttt{/movies/track.wav}; however, eventually would become \texttt{/movies/track.wav001} and so on. Filename regeneration is only used when either render farm mode is active or creating new files for every label is active. \item[Render range:] choices are \textit{Project}, \textit{Selection}, \textit{In/Out points}, and \textit{One Frame} for single images like Tiff. For these images, Render range will have \textit{One Frame} automatically checked and all of the others ghosted since nothing else makes sense (figure~\ref{fig:render02}). This makes it easy to set the insertion point where you want the 1 frame to be rendered rather than having to precisely zoom in to set the in/out pointers. Note that whichever Render range is checked, remains checked so that if \textit{One Frame} gets automatically checked, the next time you render it will still be checked and you will have to select a different one if desired. That is why you should always check the settings. \end{description} @@ -52,8 +52,8 @@ Use the File pulldown and select Render to start the render dialog (figure~\ref{ frequently, is to save that profile for future usage without having to set it up again. \item[Save Profile:] after setting up your render preference formats, use the save profile button to save it. \item[Delete Profile:] if you want to delete a saved profile, highlight the one you no longer want and delete. - \item[Insertion strategy:] select an insertion mode from the available choices as seen when you click on the down arrow on the right hand side of the option. The insertion modes are the same as with loading files. In the case if you select “insert nothing” the file will be written out to disk without changing the current project. For other insertion strategies be sure to prepare the timeline to have the output inserted at the right position before the rendering operation is finished. - + \item[Insertion strategy:] select an insertion mode from the available choices as seen when you click on the down arrow on the right hand side of the option. The insertion modes are the same as with loading files. In the case if you select “insert nothing” the file will be written out to disk without changing the current project. For other insertion strategies be sure to prepare the timeline to have the output inserted at the right position before the rendering operation is finished. + Even if you only have audio or only have video rendered, a paste insertion strategy will behave like a normal paste operation, erasing any selected region of the timeline and pasting just the data that was rendered. If you render only audio and have some video tracks armed, the video tracks will get truncated while the audio output is pasted into the audio tracks. \end{description} @@ -94,7 +94,7 @@ To start rendering from the first enabled batch, hit \texttt{Start}. Once rende You can automate \CGG{} batch renders from other programs. In the batch render dialog, once you have created your list of batch render jobs, you can click the button \texttt{Save Jobs} and choose a file to save your batch render list to. Once you have created this file, you can start up a batch render without needing to interact with the \CGG{} user interface. From a shell prompt, from a script, or other program, execute: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] {path_to_cinelerra} -r batchjob.xml \end{lstlisting} substituting your actual filename for \texttt{batchjob.xml}. When invoked with these parameters, \CGG{} will start up and perform the rendering jobs in that list, without creating its usual windows. @@ -108,7 +108,7 @@ To perform rendering from the command line, first run \CGG{} in graphical mode. On the command line run: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] cinelerra -r \end{lstlisting} @@ -123,20 +123,20 @@ The \textit{Save to EDL Path} and \textit{Use Current EDL} buttons can be valuab \item[Save to EDL Path] if you have made a change to the EDL, use this button to save the changes so that they will be used in the render operation. Although you can get the same results by using \texttt{File $\rightarrow$ Save\dots}, this capability was initially added to assist developers in testing the batch jobs needed to create dvd/bluray media as it keeps the work focused in a single window and retains the original - job name. An example --you have everything all set up with a new job in the Batch Render window + job name. An example --you have everything all set up with a new job in the Batch Render window using \texttt{generic.xml} for the EDL path and with a job name of \texttt{original\_name.xml}. Then you realize - that you forgot to cut out a section in the media that is not wanted in the final product. You can cut + that you forgot to cut out a section in the media that is not wanted in the final product. You can cut that out and then \textit{Save to EDL Path} so your change will be in effect for the rendering. Without this - button, you would be using the EDL you started with and the cut would be ignored. Alternatively, if - the cut changes are saved via \texttt{File $\rightarrow$ Save as}\dots with a filename of \texttt{new.xml} and then you use \textit{Save to EDL Path}, the current highlighted job displayed in the window as \texttt{original\_name.xml} will be + button, you would be using the EDL you started with and the cut would be ignored. Alternatively, if + the cut changes are saved via \texttt{File $\rightarrow$ Save as}\dots with a filename of \texttt{new.xml} and then you use \textit{Save to EDL Path}, the current highlighted job displayed in the window as \texttt{original\_name.xml} will be replaced with \texttt{new.xml}. However, it is important to note that the result will be saved with the name \texttt{original\_name} – that is, the new content from \texttt{new.xml} but with the old name of \texttt{original\_name.xml}. \item[Use Current EDL] if you are working on media and still testing out the results, you can take - advantage of this click-box to quickly get results. Basically, you change the media, save that change + advantage of this click-box to quickly get results. Basically, you change the media, save that change with another name (in order to preserve the original name in case you don't like the changes), and press \textit{Use Current EDL}. As an example, a user creates a new job in the Batch Render window using the current media, previously defined in generic.xml, with the EDL path of \texttt{generic.xml}. The - user then changes the media on the timeline, saves the changes via \texttt{File $\rightarrow$ Save as\dots} with a new + user then changes the media on the timeline, saves the changes via \texttt{File $\rightarrow$ Save as\dots} with a new name, such as \texttt{new\_name.xml}, and then clicks on \textit{Use Current EDL}. In this case, the EDL path listbox will be automatically updated to the \texttt{new\_name.xml} and the current existing highlighted job will be replaced with the \texttt{new\_name.xml} in the EDL column. \item[Save Jobs] when you have set up the batch jobs the way you want and you think you may have to @@ -187,7 +187,7 @@ It is often useful to insert an effect or a transition and then select \texttt{S \section{Render Farm Usage}% \label{sec:render_farm_usage} -Render Farm uses background rendering, a feature of \CGG{} where the video is rendered in the background, to speed up rendering significantly. Because rendering is memory and cpu intensive, using multiple computers on a network via a render farm is a significant gain. With \CGG{} installed on all nodes, the master node and the clients communicate via a network port that you specify. +Render Farm uses background rendering, a feature of \CGG{} where the video is rendered in the background, to speed up rendering significantly. Because rendering is memory and cpu intensive, using multiple computers on a network via a render farm is a significant gain. With \CGG{} installed on all nodes, the master node and the clients communicate via a network port that you specify. \CGG{} can distribute the rendering tasks over the network to the other computers of the Render Farm. The render farm software tries to process all of the rendering in parallel so that several computers can be used to render the results. The \textit{Total jobs to create} in the setup or labels on the timeline are used to divide a render job into that specified number of tasks. Each background job is assigned a timeline segment to process and the jobs are sent to the various computer nodes depending upon the load balance. The jobs are processed by the nodes separately and written to individual files. You will have to put the files back together via a load with concatenation, or typically by using a command line tool from a script. @@ -217,18 +217,18 @@ The following steps are just a guideline to start your render farm. It is assum \item click OK on the bottom of the Preferences window. \end{itemize} \item On the client computers ($192.168.1.12$), start 5 background \CGG{} tasks via: - \begin{lstlisting}[language=bash,numbers=none] -$ cd /{path_to_cinelerra} -$ cin -d 401 -$ cin -d 402 + \begin{lstlisting}[style=sh] +cd /{path_to_cinelerra} +cin -d 401 +cin -d 402 ... -$ cin -d 405 +cin -d 405 \end{lstlisting} \item On the master node (localhost), start the 2 background \CGG{} tasks via: - \begin{lstlisting}[language=bash,numbers=none] -$ cd /{path_to_cinelerra} -$ cin -d 406 -$ cin -d 407 + \begin{lstlisting}[style=sh] +cd /{path_to_cinelerra} +cin -d 406 +cin -d 407 \end{lstlisting} \item When your video is ready, setup a render job via \texttt{File $\rightarrow$ Render} or \texttt{File $\rightarrow$ Batch Render} and check OK. \item The results will be in the shared file \texttt{path/filename} that you selected in the render menu with the @@ -261,18 +261,18 @@ Below we describe the Performance tab for configuring a render farm (figure~\ref \item[Sort nodes] sorts the nodes list based on the hostname. \item[Delete Nodes] deletes whatever node is highlighted in the nodes list. You can highlight several at once to have them all deleted. \item[Client Watchdog Timeout] a default value of $15$ seconds is used here and the tumbler increments by $15$ seconds. A value of $0$ (zero) disables the watchdog so that if you have a slow client, it will not kill the render job while waiting for that client to respond. - \item[Total jobs to create] determines the number of jobs to dispatch to the render farm. Total jobs is used to divide a render job into that specified number of tasks. Each background job is assigned a timeline segment to process. The render farm software tries to process all of the rendering in parallel so that several computers can be used to render the results. - + \item[Total jobs to create] determines the number of jobs to dispatch to the render farm. Total jobs is used to divide a render job into that specified number of tasks. Each background job is assigned a timeline segment to process. The render farm software tries to process all of the rendering in parallel so that several computers can be used to render the results. + To start, if you have computers of similar speed, a good number for \textit{Total jobs to create} is the number of computers multiplied by $3$. You will want to adjust this according to the capabilities of your computers and after viewing the framerates. Multiply them by $1$ to have one job dispatched for every node. If you have $10$ client nodes and one master node, specify $33$ to have a well balanced render farm. \item[(overridden if new file at each label is checked)] instead of the number of jobs being set to \textit{Total jobs to create}, there will be a job created for each labeled section. If in the render menu, the option \textit{Create new file at each label} is selected when no labels exist, only one job will be created. It may be quite advantageous to set labels at certain points in the video to ensure that a key portion of the video will not be split into two different jobs. \item[Reset rates] sets the framerate for all the nodes to $0$. Frame rates are used to scale job sizes based on CPU speed of the node. Frame rates are calculated only when render farm is enabled. \end{description} Framerates can really affect how the Render Farm works. The first time you use the render farm all of the rates are displayed as $0$ in the \texttt{Settings $\rightarrow$ Preferences}, Performance tab in the Nodes box. As rendering occurs, all of the nodes send back framerate values to the master node and the preferences page is updated with these values. A rate accumulates based on speed. Once all nodes have a rate of non-zero, the program gives out less work to lower rated nodes in an effort to make the total time for the render to be almost constant. -Initially, when the framerate scaling values are zero, the program just uses package length -- render size +Initially, when the framerate scaling values are zero, the program just uses package length -- render size divided by the number of packages to portion out the work (if not labels). If something goes wrong or the rates become suspect, then all of the rest of the work will be dumped into the last job. When this happens, you really should \textit{reset rates} for the next render farm session to restart with a good balance. -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] {cinelerra pathname} -h #displays some of the options. \end{lstlisting} @@ -282,62 +282,62 @@ divided by the number of packages to portion out the work (if not labels). If s {\color{red} CAUTION }, any exact command lines worked as of $01/2018$ on a Fedora system. These can change over time and on different operating systems/levels. Always check/verify any command line before using. \begin{description} - \item[Set up \CGG{}] A \CGG{} render farm is organized into a master node and any number of client nodes. The master node is the computer which is running the gui. The client nodes are anywhere else on the network with \CGG{} installed and are run from the command line. Before you start the master node for \CGG{}, you need to set up a shared filesystem on the disk storage node as this is the node that will have the common volume where all the data will be stored. - The location of the project and its files should be the same in the client computers as in the master computer and to avoid problems of permissions, it is better to use the same user in master and clients. + \item[Set up \CGG{}] A \CGG{} render farm is organized into a master node and any number of client nodes. The master node is the computer which is running the gui. The client nodes are anywhere else on the network with \CGG{} installed and are run from the command line. Before you start the master node for \CGG{}, you need to set up a shared filesystem on the disk storage node as this is the node that will have the common volume where all the data will be stored. + The location of the project and its files should be the same in the client computers as in the master computer and to avoid problems of permissions, it is better to use the same user in master and clients. For example, if you have the project in \texttt{/home//project-video} you must create the same directory path on the clients, but empty. Sharing the directory of the location of your project on the master computer can be done with NFS as described next. Alternatively, you can look up on the internet how to use Samba to share a directory. \item[Create a shared filesystem and mount using NFS] All nodes in the render farm should use the same filesystem with the same paths to the project files on all of the master and client nodes. This is easiest to do by setting up an NFS shared disk system. \begin{enumerate} \item On each of the computers, install the nfs software if not already installed. For example, on Debian 9 you will need to run: (be sure to check/verify before using any command line): - \begin{lstlisting}[language=bash,numbers=none] -$ apt-get install nfs-kernel-server + \begin{lstlisting}[style=sh] +apt-get install nfs-kernel-server \end{lstlisting} \item On the computer that contains the disk storage to be shared, define the network filesystem. For example to export \texttt{/tmp}, edit the \texttt{/etc/exports} file to add the following line: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] 192.168.1.0/24(rw,fsid=1,no_root_squash,sync,no_subtree_check) \end{lstlisting} - \item Next reset the exported nfs directories using: - \begin{lstlisting}[language=bash,numbers=none] -$ exportfs -ra - \end{lstlisting} - and you may have to start or restart nfs: - \begin{lstlisting}[language=bash,numbers=none] -$ systemctl restart nfs + \item Next reset the exported nfs directories using: + \begin{lstlisting}[style=sh] +exportfs -ra + \end{lstlisting} + and you may have to start or restart nfs: + \begin{lstlisting}[style=sh] +systemctl restart nfs \end{lstlisting} \item Each of the render farm computers must mount the exported nfs target path. To see the exports which are visible from a client, login as root to the client machine and keyin: - \begin{lstlisting}[language=bash,numbers=none] -$ showmount -e #using the ip address of the storage host + \begin{lstlisting}[style=sh] +showmount -e #using the ip address of the storage host \end{lstlisting} \item to access the host disk storage from the other computers in the render farm, mount the nfs export on the corresponding target path: (be sure to check/verify before using any command line): - \begin{lstlisting}[language=bash,numbers=none] -$ mount -t nfs :/ + \begin{lstlisting}[style=sh] +mount -t nfs :/ \end{lstlisting} - where \texttt{} is the storage host directory, and \texttt{} is the network address of the storage host. + where \texttt{} is the storage host directory, and \texttt{} is the network address of the storage host. Because all of the computers must have the same directory path, create that same directory path with the same uid/gid/permissions on each storage client computer ahead of time. - \item To make this permanent across reboots on the client nodes, add the following line to \texttt{/etc/fstab}: - \begin{lstlisting}[language=bash,numbers=none] + \item To make this permanent across reboots on the client nodes, add the following line to \texttt{/etc/fstab}: + \begin{lstlisting}[style=sh] {masternode}:/nfsshare /mnt nfs defaults 0 0 \end{lstlisting} You can make this permanent on the disk storage host BUT the command lines shown, which were correct in January 2018 on Fedora, may be different for your operating system or in the future. In addition if your network is not up, there may be numerous problems. If you make a mistake, your system may not boot. To make permanent, add the following line to \texttt{/etc/fstab}: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] 192.168.1.12:/tmp /tmp nfs rw,async,hard,intr,noexec,noauto 0 0 \end{lstlisting} You will still have to mount the above manually because of the \textit{noauto} parameter but you won’t have to remember all of the other necessary parameters. Depending on your expertise level, you can change that. - - Later, to remove access to the storage host filesystem: - \begin{lstlisting}[language=bash,numbers=none] -$ umount + + Later, to remove access to the storage host filesystem: + \begin{lstlisting}[style=sh] +umount \end{lstlisting} - - Be aware that you may have to adjust any security or firewalls you have in place. \textit{Most firewalls will require extra rules to allow nfs access}. Many have built-in configurations for this. + + Be aware that you may have to adjust any security or firewalls you have in place. \textit{Most firewalls will require extra rules to allow nfs access}. Many have built-in configurations for this. \end{enumerate} \item[Configure Rendering on Master Node] There is 1 master node which is running the \CGG{} gui and where the video will be edited and the command given to start up the rendering. Any number of client computers can be run from the command line only, so they can be headless since no X or any graphical libraries are needed. Of course, the \CGG{} software must be installed on each of the client computers. \begin{enumerate} @@ -349,8 +349,8 @@ $ umount \item Add the hostname or the IP address of each of the client nodes in the Hostname textbox and the port number that you want to use in the Port textbox. You can make sure a port number is not already in use by keying in on the command line: - \begin{lstlisting}[language=bash,numbers=none] -$ netstat -n -l -4 --protocol inet + \begin{lstlisting}[style=sh] +netstat -n -l -4 --protocol inet \end{lstlisting} Next, click on the \textit{Add Nodes} button and then you will see that host appear in the Nodes list box to the right. The \texttt{X} in the first @@ -362,24 +362,24 @@ $ netstat -n -l -4 --protocol inet \end{enumerate} \item[Create Workflow] While working on the master computer, it is recommended that you keep all the resources being used on the same shared disk. Load your video/audio piece and do your editing and preparation. Add any desired plugins, such as a Title, to fine-tune your work. You want to make sure your video is ready to be rendered into the final product. \item[Start the Client Nodes] To start up the client nodes run \CGG{} from the command line on each of the client computers using the following command: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] /{cinelerra_pathname}/cin -d [port #] ; \#for example /mnt1/bin/cinelerra -d 401 \end{lstlisting} This starts \CGG{} in command prompt mode so that it listens to the specified port number for commands from the master node for rendering. When you start each of the clients up, you will see some messages scroll by as each client is created on that computer, such as: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] RenderFarmClient::main_loop: client started RenderFarmClient::main_loop: Session started from 127.0.0.1 \end{lstlisting} As it completes its jobs, you will should see: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] RenderFarmClientThread::run: Session finished \end{lstlisting} A quick way to start a sequence of clients is to use: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] or n in `seq 1501 1505`; do cin -d $n; done \end{lstlisting} \item[Render Using Render Farm] After you have followed the preceding steps, you are ready to use the render farm. Click on \texttt{File $\rightarrow$ Render}\dots which opens the render dialog. The most important point here is to use for \textit{the Output path / Select a file to render to} a path/file name that is on the shared volume that is also mounted on the clients. Click on OK to render. The \CGG{} program divides the timeline into the number of jobs specified by the user. These jobs are then dispatched to the various nodes depending upon the load balance. The first segment will always render on the master node and the other segments will be farmed out to the render nodes. Batch Rendering, as well as BD/DVD rendering, may use the render farm. Each line in the batchbay can enable/disable the render farm. Typically, video can be rendered into many file segments and concatenated, but normally audio is rendered as one monolithic file (not farmed). - + Another performance feature which can use the Render Farm is \textit{Background Rendering}. This is also enabled on the \texttt{Preferences $\rightarrow$ Performances} tab. The background render function generates a set of image files by pre-rendering the timeline data on the fly. As the timeline is update by editing, the image data is re-rendered to a \textit{background render} storage path. The Render Farm will be used for this operation if it is enabled at the same time as the \textit{background render} feature. \item[Assemble the Output Files] Once all of the computer jobs are complete, you can put the output files together by using the shell script, \textit{RenderMux} (from the menubar \textit{scripts} button just above FF), if the files were rendered using ffmpeg, or you can load these by creating a new track and specifying concatenate to existing tracks in the load dialog in the correct numerical order. File types which support direct copy can be concatenated into a single file by rendering to the same file format with render farm disabled as long as the track dimensions, output dimensions, and asset dimensions are equal. \end{description} @@ -406,8 +406,8 @@ These steps are for quickly setting up render farm with the least amount of addi \item set total jobs to the number of client computers $+1$ multiplied by $3$ (or proportion to client speeds) \item check OK \end{itemize} - \item On each buddy client, create a job for each port: - \begin{lstlisting}[language=bash,numbers=none] + \item On each buddy client, create a job for each port: + \begin{lstlisting}[style=sh] /{cinelerra_pathname}/cin -d port# \end{lstlisting} \item On the master, bring up the render menu and name the output files, for example \texttt{/tmp/myoutput.mp4}. @@ -442,7 +442,7 @@ CPU count. \item A port in use when stopped may take up to $30$ seconds to time out before you can restart the jobs. \item Each of the port combinations have to be unique across clients, and not already in use in the network. \item \CGG{} load balances on a first come, first serve basis. If the last section of the video is sent to the - slowest node, the render job will have to wait for the slowest node to finish. It would be better to + slowest node, the render job will have to wait for the slowest node to finish. It would be better to start on the slowest node with the earlier section of the video so keep that in mind when designating port numbers. \item If not running as root, a port number in the higher range of $1024$ and above must be used instead of @@ -477,7 +477,7 @@ with the clients on a shared filesystem. More information on index files configu \ref{sub:index_file_section}. \item Or, one of the convenient features of Cinelerra is the redirection of the path via \texttt{CIN\_CONFIG} as in: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] CIN_CONFIG=// //cin \end{lstlisting} This means that you can make project related configurations that do not impact the default \texttt{\$HOME} config. You can either export your default \texttt{\$HOME} config or the \texttt{CIN\_CONFIG} config to use on the render farm. @@ -572,7 +572,7 @@ In \CGG{} for two-pass, you need to run ffmpeg twice, with the same settings, ex This 2 line ffmpeg 2-pass operation can be functionally duplicated in \CGG{} in the steps below them: -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] ffmpeg -y -i input -c:v libx264 -b:v 2600k -pass 1 -c:a aac -b:a 128k -f mp4 /dev/null && \ ffmpeg -i input -c:v libx264 -b:v 2600k -pass 2 -c:a aac -b:a 128k output.mp4 \end{lstlisting} @@ -592,43 +592,43 @@ ffmpeg -i input -c:v libx264 -b:v 2600k -pass 2 -c:a aac -b:a 128k output.mp4 \item Set the Video Compression to \textit{h264.mp4} (as seen in the example). \item Set the bitrate to $2600000$ ($2600k$ as in ffmpeg example above). \item Add the following 2 lines after the first line: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] flags +pass1 passlogfile /tmp/{temporary log file name}.log \end{lstlisting} Click checkmark OK. - \end{itemize} + \end{itemize} \item Click on \textit{New} to create the second pass job. You will see this second job in the listbox below. Use the Video wrench and change pass1 to pass2 as follows. - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] flags +pass2 \end{lstlisting} \item Click checkmark OK. \item Click on the \textit{Start} box and watch it go! \item You can now check the output file for results. At the time this was documented, \textit{rc=2pass} will be - in the output. + in the output. \end{enumerate} If you need to re-render this, the Batch Render will still be set up but you have to click on the \textit{Enabled} column in the listbox to re-enable the jobs to run which puts an X there. Click Start again. You can reuse batch job using the \textit{save jobs} and \textit{load jobs} buttons in the batch render dialog. -\paragraph{Render shortcuts for webm, h264, h265} are available by using the option files that are already set up for this purpose. Use the render menu as usual, with ffmpeg/mp4, choose h264 or h265 \textit{pass1of2\_h26x} for the video and \textit{passes1and\-2\_h26x} for the audio; +\paragraph{Render shortcuts for webm, h264, h265} are available by using the option files that are already set up for this purpose. Use the render menu as usual, with ffmpeg/mp4, choose h264 or h265 \textit{pass1of2\_h26x} for the video and \textit{passes1and\-2\_h26x} for the audio; with ffmpeg/webm, choose \textit{pass1of2\_vp9}. When that is finished, you will have to use the render menu again and this time for video, choose \textit{pass2of2\_h26x} or \textit{pass2of2\_vp9}. The logfile is hard coded in the options file so will write over any currently existing logfile if you do not change it before you start the render. \paragraph{Requirements for some other libraries} ~\\ (used instead of \textit{flags +pass1} \& \textit{passlogfile}): \begin{description} \item[x265:] add this line: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] x265-params=pass=1:stats=/tmp/{temporary log file name}.log - \end{lstlisting} + \end{lstlisting} at the time this document was written, you should see in the output: \\ \textit{stats-read=2} - + \item[libvpx-vp9, xvid, and huffyuv:]~ - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] cin_stats_filename /tmp/{temporary log file name}.log flags +pass1 (or flags +pass2 for the second pass) - \end{lstlisting} + \end{lstlisting} \end{description} \textit{NOTE:} for vp9, the best Pixels is \textit{gbrp} @@ -651,11 +651,11 @@ picture quality similar to the Blu-ray with some limitations. As container Matroska (\texttt{.mkv}) is used, but also mp4 and others are possible. -\vspace{2ex} \begin{lstlisting}[language=bash,numbers=none] +\vspace{2ex} \begin{lstlisting}[style=sh] matroska libx265 # CRF 16 creates a balanced compromise -# between quality and file size. +# between quality and file size. crf=16 # Preset changes encoding speed and generally @@ -716,7 +716,7 @@ You can pipe a video to any command line on the computer, such as ffmpeg. This \begin{enumerate} \item on a terminal window create a named pipe file, for example: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] mknod /tmp/piper.yuv p \end{lstlisting} load your video and do your editing @@ -725,13 +725,13 @@ mknod /tmp/piper.yuv p \item for \textit{Insertion Strategy}, you will want to make sure to select \textit{insert nothing} \item click for OK on the green checkmark.(the \CGG{} gui will look like it is hanging while waiting for a command line to use the pipe.) \item on the terminal window, keyin your command, for example: - \begin{lstlisting}[language=bash,numbers=none] + \begin{lstlisting}[style=sh] /mnt0/build5/cinelerra-5.1/thirdparty/ffmpeg-3.4.1/ffmpeg -f rawvideo -pixel_format yuv420p \ -video_size 1280x720 -framerate 30000/1001 -i /tmp/piper.yuv /tmp/pys.mov \end{lstlisting} \end{enumerate} A slightly different option can be used instead that may be more familiar to some. In the render menu after choosing the File Format of \textit{ffmpeg}, use the pulldown to choose \textit{y4m} as the file type. This choice results in putting a header on the rendered output with some pertinent information that can be used for ffmpeg processing thus alleviating the requirement for \textit{pixel\_format}, \textit{video\_size}, and \textit{framerate} on the ffmpeg command line. In this case the format is \textit{yuv4mpegpipe} instead of \textit{rawvideo}. An example command line would look as follows (assuming the created pipe is called \texttt{piper.y4m}): -\begin{lstlisting}[language=bash,numbers=none] +\begin{lstlisting}[style=sh] ffmpeg -f yuv4mpegpipe -i /tmp/piper.y4m -vcodec libx264 /tmp/test.mp4 \end{lstlisting} @@ -741,4 +741,3 @@ ffmpeg -f yuv4mpegpipe -i /tmp/piper.y4m -vcodec libx264 /tmp/test.mp4 If you have mov video and want to be able to start playing without having to first load the entire video, \textit{-movflags=+faststart} is needed for ffmpeg to put the meta-data, known as the \textit{moov atom}, at the beginning of the file. Otherwise, ffmpeg puts this atom at the end of the video file which means you have to wait to play until the whole video is loaded. Or worse yet, if the file becomes damaged in the middle and you can not get to the end, you won’t be able to play anything. Now you can have the \textit{moov atom} put on the front of the file (automatically via a second pass). To do this, when rendering using ffmpeg \& either the mp4 or qt format/container, click on the video/audio wrenches and choose \textit{faststart\_h264}. With the \textit{qt} format, settings will just be the default whereas the \textit{mp4} format uses the highest quality and lowest file size as possible, but you can easily modify these options in the associated Video Preset textbox. - diff --git a/parts/Windows.tex b/parts/Windows.tex index 6faa39f..95bebf1 100644 --- a/parts/Windows.tex +++ b/parts/Windows.tex @@ -829,9 +829,9 @@ The camera and projector have shortcut operations that do not appear in the popu These are accessed in the \emph{Show tool info} window . Most operations in the Compositor window have a tool window which is enabled by activating the question mark icon (figure~\ref{fig:camera_tool}). -\begin{wrapfigure}[11]{O}{0.3\linewidth} +\begin{wrapfigure}[10]{O}{0.45\linewidth} \vspace{1ex} - \includegraphics[width=0.9\linewidth]{camera_tool.png} + \includegraphics[width=1.0\linewidth]{camera_tool.png} \caption{Camera and Projector tool} \label{fig:camera_tool} \end{wrapfigure}