Andrea-s formats and codecs improvements
[goodguy/cin-manual-latex.git] / parts / Rendering.tex
index 1be6e02aa84a7cda10306946afa1d9ecc19b6e46..cbdcaf9095e2652b9dc33cf3ed472602559dd615 100644 (file)
@@ -1,7 +1,8 @@
 \chapter{Rendering}%
 \label{cha:rendering}
+\index{rendering}
 
-Rendering takes a section of the timeline, performs all the editing,
+Rendering takes a section of the timeline, \index{active region} performs all the editing,
 effects and compositing, and creates a new media file.  You can then
 delete all the source assets, play the rendered file, or bring it
 back into \CGG{} for more editing.  All rendering operations are
@@ -16,12 +17,13 @@ But you also have the choice to render \textit{one frame}.
 
 \section{Single File Rendering}%
 \label{sec:single_file_rendering}
+\index{rendering!single file}
 
-Use the File pulldown and select Render to start the render dialog
+Use the \textit{File} pulldown and select Render to start the render dialog
 (figure~\ref{fig:render}).  Then choose the desired parameters.
 
 \begin{figure}[htpb] \centering
-  \includegraphics[width=0.7\linewidth]{render.png}
+  \includegraphics[width=0.5\linewidth]{render.png}
   \caption{Example of the Render menu}
   \label{fig:render}
 \end{figure}
@@ -29,7 +31,7 @@ Use the File pulldown and select Render to start the render dialog
 \begin{description}
 \item[Select a file to render to:] enter the path and filename to
   write the rendered file to in the textbox below.
-\item[File Format:] use the down arrow to see file format options.
+\item[File Format:] \index{file format} use the down arrow to see file format options.
   For ffmpeg, which has its own set of options, you will then have to
   select an ffmpeg file type from the down arrow choices. The format
   of the file determines whether you can render audio or video or
@@ -55,7 +57,7 @@ Use the File pulldown and select Render to start the render dialog
 \end{figure}
 
 \begin{description}
-\item[Wrench:] select the \textit{wrench} next to each toggle to set
+\item[Wrench:] \index{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
@@ -79,7 +81,7 @@ Use the File pulldown and select Render to start the render dialog
   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},
+\item[Render range:] \index{active region} choices are \textit{Project} \index{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
@@ -104,14 +106,16 @@ Use the File pulldown and select Render to start the render dialog
   check this box.  It gives you the chance to work on something else
   while waiting and still be immediately notified when the render is
   complete.
-\item[Render Profile:] another convenience feature to take advantage
+\item[Render Profile:] \index{rendering!profile} another convenience feature to take advantage
   of if you use specific render formats 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.
+  formats, do not forget to type in a format name and then use the save profile
+button to save it.  The named/saved Profiles will be saved in your
+\$HOME/.bcast5/Cinelerra\_rc file where it can be carefully modified.
 \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
+\item[Insertion strategy:] \index{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
@@ -128,49 +132,634 @@ Use the File pulldown and select Render to start the render dialog
   audio output is pasted into the audio tracks.
 \end{description}
 
+
+\subsection{Extra “cin\_” Options for Render with FFmpeg}%
+\label{sub:extra_cin_option_ffmpeg}
+\index{rendering!ffmpeg options}
+
+There are several special parameters that can be used in the ffmpeg
+options file to pass values to the codecs that are not normally
+available.  They're called Global Options. These are explained
+below.
+
+\paragraph{cin\_pix\_fmt} The Render menus allows you to choose the
+codec input pixel format (figure~\ref{fig:yuv420}).  The Pixels
+selection provides the available pixel format options for the chosen
+codec type; valid choices vary for the different file types.  This
+list represents the formats that the codec advertises.  It is not
+always complete, and it may include options that are not legal with
+all parameter configurations.
+
+\begin{figure}[htpb] \centering
+       \includegraphics[width=1.0\linewidth]{yuv420.png}
+       \caption{Render \& Video Preset menus displaying Pixel choices}
+       \label{fig:yuv420}
+\end{figure}
+
+\begin{itemize}
+       \item The \textit{Bitrate}, \textit{Quality}, and \textit{Pixels}
+       fields are only updated when the Video Options are reloaded.  This
+       occurs when you either change the ffmpeg file format, or video
+       presets compression fields.
+       \item If the video options preset has \textit{cin\_pix\_fmt}
+       defined, its value will be loaded as the default.  If you override
+       the default, the value you specify will be used.
+       \item If the video options preset does not have
+       \textit{cin\_pix\_fmt}, the default pixel format will be computed by
+       ffmpeg (\textit{avcodec\_find\_best\_pix\_fmt\_of\_list}), using the
+       session format as the source choice.  The \textit{best} is usually
+       the format which is most similar in color and depth.
+       \item If no choices are available, yuv420p for video will be used.
+       \item You can also specify ffmpeg pixel formats which are not in the
+       list.  The list is provided by ffmpeg as input selection, but is
+       more like suggestions than fact.  For example, the raw formats can
+       take almost any format, but the rawvideo codec actually specifies no
+       legal formats.
+\end{itemize}
+
+\noindent Some option files provide \textit{cin\_pix\_fmt} to
+suggest a choice for good quality output or to prevent parameter
+errors when the other provided parameters conflict with the
+\textit{best} pixel format.  This is the case in
+\texttt{faststart\_h264.mp4} where the \textit{profile=high}
+parameter dictates pixel format must be \texttt{yuv420p}.
+
+\paragraph{cin\_bitrate} If you specify the bitrate, you can not
+specify the quality.\\ Example: \textit{cin\_bitrate=2000000}
+
+\paragraph{cin\_quality} If you specify the quality, you can not
+specify the bitrate.\\ Example: \textit{cin\_quality=7}
+
+\paragraph{cin\_stats\_filename} This parameter is useful for 2 pass
+operations.\\ Example: \texttt{cin\_stats\_filename
+       /tmp/cin\_video\_vp9\_webm}
+
+\paragraph{cin\_sample\_fmt} For audio the preset sample format
+default is computed in a similar way as stated above for video or
+can be set with the \textit{cin\_sample\_fmt} parameter
+(figure~\ref{fig:audio}).  If no choices are provided, s16 will be
+used.\\ Example: \textit{cin\_sample\_fmt=s16}
+
+\begin{figure}[htpb] \centering
+       \includegraphics[width=0.7\linewidth]{audio.png}
+       \caption{Render menu showing where Samples is}
+       \label{fig:audio}
+\end{figure}
+
+\paragraph{Private Options} (muxers). In the window of the
+\textit{wrench} in addition to the \textit{View} button, which
+allows more global options and changes to the formats, there is an
+additional \textit{Format} button that allows you to modify the
+Private Options, i.e.\ relating to specific muxing formats. More
+information on all these options can be found at
+\href{https://ffmpeg.org/ffmpeg-all.html#Format-Options}{ffmpeg.org}
+sections 19 and 21. See also \nameref{sub:modifying_ffmpeg_cinelerra}.
+
+Render presets in \CGG{} should work Out Of the Box. You can still configure the \textit{Global Options} and \textit{Private Options} manually. Finding the combination of parameters that best suits your needs, or simply finding working (\textit{legal}) combinations, requires studying each codec in depth. You can start by looking in Wikipedia until you get to download and study the \textit{white papers} of the codecs of interest. In any case, you must then start a long experimental phase, trying presets with different configurations or creating new ones, until you get satisfactory results. If you create new presets it is a good idea to make them known on the mailing list ({\small \url{https://lists.cinelerra-gg.org/mailman/listinfo/cin}}) or on the MantisBT Bug Tracker ({\small \url{https://www.cinelerra-gg.org/bugtracker/my_view_page.php}}) so that they can be integrated into subsequent versions of \CGG{}. For an introduction see \nameref{sec:overview_formats}.
+
+\section{Some Specific Rendering}%
+\label{sec:some_specific_rendering}
+
+\noindent The next few pages relate to rendering for specific common
+cases.
+
+\subsection{FFmpeg Common H.264 Rendering}%
+\label{sub:ffmpeg_h264_rendering}
+
+Because H.264 is so widely used, the method in \CGG{} Infinity is
+outlined below.  These setup steps make it easy to just get started.
+
+\begin{itemize}
+       \item File $\rightarrow$ Render
+       \item File Format $\rightarrow$ FFMPEG + mp4
+       \item Video Wrench $\rightarrow$ Preset $\rightarrow$ h264.mp4 +
+       bitrate: 6000000 (or whatever) + OK
+       \item Audio Wrench $\rightarrow$ Preset $\rightarrow$ h265.mp4 +
+       bitrate: 224000 (or whatever) + OK
+       \item Set your target path in: Render $\rightarrow$ Select a file to
+       render to
+       \item Set your timeline in: Render $\rightarrow$ Render range +
+       click Project
+       \item Set your insertion strategy: Replace project (or whatever)
+       \item Press OK to start rendering.
+\end{itemize}
+
+\subsection{Lossless Rendering}%
+\label{sub:loseeless_rendering}
+\index{rendering!lossless}
+
+Lossless means that in the compression of a file, all of the
+original data, every single bit, can be recovered when the file is
+uncompressed.  This is different than \textit{lossy compression}
+where some data is permanently deleted so that when uncompressed,
+all of the original data can not be exactly recovered.  Lossy is
+generally used for video and sound, where a certain amount of
+information loss will not be detected by most users or the playback
+hardware does not reproduce it anyway -- it is a trade-off between
+file size and image/sound quality.  The files created will be more
+than 10 times larger than usual.  Most players will not be able to
+decode lossless as the bitrate will overwhelm the device.
+
+For x264 lossless compression to work, the only color model allowed
+here is yuv420p.  Any other specification will be converted to
+yuv420p and the data will be modified.  Also, keep in mind that the
+YUV color model has to be converted to RGB, which also modifies the
+data.
+
+To use x264 lossless rendering -- choose File format of ffmpeg, m2ts
+in the Render window.  Click on the Video wrench, which brings up
+the Video Preset window and scroll down in the Compression filebox
+and choose \texttt{lossless.m2ts}.  \textit{Preset=medium} is the
+default, but can be varied from \textit{ultrafast} (least amount of
+compression, but biggest file size) to \textit{veryslow} (most
+amount of compression, but still HUGE) in the parameter box where
+you see $qp=0$.  This option is also available for bluray creation.
+
+\subsection{Two-pass Encoding with FFmpeg}%
+\label{sub:two_pass_encoding_ffmpeg}
+\index{rendering!ffmpeg two-pass encoding}
+
+In \CGG{} for two-pass, you need to run ffmpeg twice, with the same
+settings, except for designating the options of pass~1 for the first
+pass and then pass~2.  In pass~1, a logfile that ffmpeg needs for
+the second pass is created.  In pass~1 the audio codec should be
+specified that will be used in pass~2.  For more information on
+ffmpeg 2-pass, check
+\href{https://trac.ffmpeg.org/wiki/Encode/H.264}{ffmpeg.org}.
+Different libraries may have different requirements and you will
+probably have to determine this by looking online at ffmpeg or
+looking directly at that code.
+
+This 2 line ffmpeg 2-pass operation can be functionally duplicated
+in \CGG{} in the steps below them:
+
+\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}
+
+\begin{enumerate}
+       \item After you have completed your editing, do a Save Session with
+       \texttt{File $\rightarrow$ Save as}\dots Before starting, be sure
+       your session is ready for batch render. That is, positioned at the
+       beginning and nothing selected.
+       \item Bring up \texttt{File $\rightarrow$ Batch Render}\dots where
+       you will do the setup.
+       \item Click on the \textit{Delete} box to remove old jobs
+       highlighted in the bottom listbox.
+       \begin{itemize}
+               \item For the \textit{File Format} choose ffmpeg and mp4 for the
+               type.
+               \item Set \textit{Output path} to the path and filename for the
+               render output file.
+               \item Click on \textit{Use Current EDL} to use the designated EDL
+               Path file.
+               \item Click on \textit{New} and you will see a new highlighted job
+               show up in the listbox at the bottom.
+               \item Use the Audio wrench to set bitrate to $128000$ ($128k$ as
+               in ffmpeg example above).
+               \item Click checkmark OK\@.  Open the video tools with the video
+               wrench.
+               \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}[style=sh]
+                       flags +pass1
+                       passlogfile /tmp/"{temporary log file name}.log"
+               \end{lstlisting} Click checkmark OK.
+       \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}[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.
+\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; 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}[style=sh]
+               x265-params=pass=1:stats=/tmp/{temporary-log-file-name}.log
+       \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}[style=sh]
+               cin_stats_filename /tmp/{temporary-log-file-name}.log
+               flags +pass1 (or flags +pass2 for the second pass)
+       \end{lstlisting}
+\end{description}
+
+\textit{NOTE:} for vp9, the best Pixels is \textit{gbrp}
+
+\subsection{Use case: High Efficiency Video Coding (HEVC)}%
+\label{sub:use_case_hevc}
+
+An example of video profile based on CRF, a quality-controlled
+variable bitrate, instead of fixed quality scale (ABR).  HEVC
+(H.265) was developed as a successor to AVC (H.264) to more
+efficiently compress the future large amounts of data from 2/4/8k
+videos.  In comparison to AVC, an average saving of around 30
+percent can be assumed for the same quality.  Because HEVC is not
+bound to any size format, it is suitable for virtually any image
+size.
+
+The following example is HD and FullHD oriented and produces a
+picture quality similar to the Blu-ray with some limitations.  As
+container Matroska (\texttt{.mkv}) is used, but also mp4 and others
+are possible.
+
+\begin{lstlisting}[style=sh]
+       matroska libx265
+       
+       # CRF 16 creates a balanced compromise
+       # between quality and file size.
+       crf=16
+       
+       # Preset changes encoding speed and generally
+       # degrades the overall result. Medium (default)
+       # always fits.
+       preset=medium
+       
+       # Additional parameters that are passed on to the codec.
+       # me=star improves the search for very fast
+       # movements, but slows down the encoding.
+       #x265-params=me=star
+       
+       # Keyint does FFmpeg automatically, otherwise
+       # the setting must match the frame rate.
+       #keyint_min=25
+       
+       # Profile does FFmpeg automatically.
+       #profile=high
+       
+       # Source sRBG and retention of color space.
+       # 720/1080=bt709 if no profile set. Useful
+       # for formats smaller than 720 if no lossy
+       # conversion is desired.
+       colorspace=bt709
+       color_trc=bt709
+       color_primaries=bt709
+       
+       # Output in 10 bit, prevents 8-bit step formation
+       pixel_format=yuv420p
+\end{lstlisting}
+
+\noindent \textit{NOTE:}
+
+A CRF of 16 delivers satisfactory results in most cases. However, if
+the video material is really \emph{grainy}, a CRF~16 can lead to
+unwanted large files.  In this case, a trial export of perhaps one
+minute should be performed. The resulting bit rate can be used to
+correct the CRF to 17,\,18,\,19\ldots -- remember, a CRF of $0$ (zero)
+means lossless, the higher the number the stronger the lossy
+compression. The approximate calculation of the final file size can
+be extrapolated from the sample export.
+
+The color space information must be used explicitly so that it can
+be included in the video. \CGG{} or FFmpeg does not write it by
+itself. Without this information the players (e.\,g.\
+\href{https://mpv.io/}{mpv}) stick to the dimensions of the video
+and take the assumed color model from a table. With videos in the
+dimensions from 720 to 1080 this is bt709. For smaller dimensions,
+e.\,g.\ DVD, bt601 is assumed and for 4k and above it is
+bt2020. Normally this is not a problem, but if you want to export a
+FullHD without color loss to a smaller size like 576 for example,
+you have to inform the encoder as well as the decoder of the
+player. This also applies if the videos are to be loaded on video
+platforms, where they are then converted into videos of different
+sizes. It is a security measure to prevent false colors, such as the
+color profiles in digital photos and the copies made from them.
+
+The HEVC tuning has not been considered here, because it is is
+rarely used and requires background knowledge.
+
+Further links:
+\begin{itemize}
+       \item \href{http://x265.readthedocs.org/en/default/}{x265
+               Documentation}
+       \item \href{http://x265.readthedocs.org/en/latest/cli.html}{x265
+               Command Line Options}
+       \item \href{http://x265.readthedocs.org/en/latest/presets.html}{x265
+               Presets/Tuning}
+\end{itemize}
+
+
+\subsection{YouTube with \CGG{}}%
+\label{sub:youtube_with_cinelerra}
+\index{rendering!youtube preset}
+
+To create a youtube or dailymotion video, you can easily follow the steps below.  You will have to learn a lot more about \CGG{} to take full advantage of its capabilities and make some really special videos, but this is just to get a start and to see the possibilities.
+
+\begin{enumerate}
+       \item Start \CGG{}; usually you can do this by clicking on \CGG{} icon or key in \texttt{{cin\_path}/bin/cin}.
+       \item In the Program window on the lower left side of your screen, left mouse click the \textit{File} pulldown.
+       \item You will see \textit{Load files} as the second choice so left mouse click this and find your video file to
+       load, highlight it, and check the green checkmark in the lower left hand corner to get it loaded.
+       \item Edit your video in the Program window using the basic commands of:
+       \begin{itemize}
+               \item play and then stop using the space bar
+               \item move the mouse and then left click to move the insertion (location) pointer
+               \item cut a section out by holding down the left mouse and drag, then key in “x” to cut or “c” to copy
+               \item paste a copy or cut section by moving the insertion pointer, then key in “v”
+       \end{itemize}
+       \item Add a title by highlighting the \textit{Video Effects} in the right hand side Resources window; then
+       highlighting the \textit{Title} icon and dragging it to the Program window video track and dropping.
+       \item Click on the middle icon button (looks like a magnifying glass) on the brown colored Title bar to
+       bring up the Title window bottom text box and key in a title.
+       \item Use the \textit{File} pulldown to select \textit{Render} to create the desired video.  In the \textit{Render} window just next to the empty box to the right of the \textit{ffmpeg} file format, click on the down arrow shown there
+       to see the choices and pick \textit{youtube}.  Then move back up to key in the path and filename to render
+       to.  It will pick all of the defaults automatically for you so then just click on the green checkmark to
+       have it start.  There is a progress bar in the main window, very bottom of the right hand side.
+       \item Key in “q” in the main window to get out of \CGG{} and yes or no to save your edit session.
+\end{enumerate}
+
+Youtube will allow the upload of the resulting rendered file as named.  However, Dailymotion requires that the file be named with an acceptable extension so you must rename the output file to have the extension of .webm instead of .youtube
+
+There are currently 6 specific variations within the ffmpeg (file format) / youtube (file type) for different video options.  You see these when you click on the wrench to the right of the word Video and then the Compression down arrow in the Video Preset window.  The first 3 are based on Webm/Vp9\protect\footnote{credit by Frederic Roenitz} and contain basic comments of usage and where to find more information.
+
+The first 3 below, plus any of the VP9 files under the file type of \textit{webm} are the recommended options to use because they are freely usable in any circumstance.
+
+\begin{center}
+       \begin{tabular}{l p{8cm}}
+               sd.youtube & Standard Definition use with default audio/Opus stereo.youtube \\
+               hd.youtube & High Definition “ “ \\
+               uhd.youtube & Ultra High Definition “ “ \\
+       \end{tabular}
+\end{center}
+
+For more details and options on VP9, see: {\small\url{https://developers.google.com/media/vp9}}
+
+Alternatives based on h264 and for non-commercial use are listed below.  For Dailymotion, these must be renamed to have a different extension of .mp4 instead of .youtube before uploading.
+
+\begin{center}
+       \begin{tabular}{l p{8cm}}
+               sd\_h264.youtube & Standard Definition – must change to audio stereo\_with\_h264.youtube \\
+               hd\_h264.youtube & High Definition -          “ “ \\
+               uhd\_u264.youtube & Ultra High Definition - “ “ \\
+       \end{tabular}
+\end{center}
+
+These same steps have been verified to work for creating Dailymotion videos -- however, the created files must be renamed before uploading to change the youtube extension to webm instead for Dailymotion.
+
+\subsection{VP9 parameters}%
+\label{sub:vp9_parameters}
+\index{rendering!VP9 parameters}
+
+\textsc{VP9}\protect\footnote{credit Frederic Roenitz} is a video codec licensed under the BSD license and is
+considered open source,
+% Sisvel Announces AV1 Patent Pool, March 10, 2020
+% https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=139636
+%  Webm / VP9 is a media file format which is free to use under the
+%  BSD license and is open-source; thus there are no licensing
+%  issues to be concerned about.
+the \textsc{Webm} container is based on \textsc{Matroska} for video
+and \textsc{Opus} for audio. There are some common \textsc{VP9} rendering
+options files that support creation of video for YouTube,
+Dailymotion, and other online video services.
+
+YouTube easy startup steps are documented above.
+
+Below is one of the \textsc{VP9} rendering options file with documentation for specifics:
+
+\textbf{webm libvpx-vp9}
+
+from {\small \url{https://developers.google.com/media/vp9/settings/vod/}}
+
+1280x720 (24, 25 or 30 frames per second)
+
+Bitrate (bit rate)
+
+\textsc{VP9} supports several different bitrate modes:
+
+\textit{mode:}
+
+\begin{tabular}{p{6cm} p{10cm}}
+       Constant Quantizer (Q) & Allows you to specify a fixed quantizer value; bitrate will vary \\
+       Constrained Quality (CQ) & Allows you to set a maximum quality level. Quality may vary within bitrate parameters\\
+       Variable Bitrate (VBR) & Balances quality and bitrate over time within constraints on bitrate\\
+       Constant Bitrate (CBR) & Attempts to keep the bitrate fairly constant while quality varies\\
+\end{tabular}
+
+CQ mode is recommended for file-based video (as opposed to streaming). The following FFMpeg command-line parameters are used for CQ mode:
+
+\textit{FFMpeg}:
+
+\begin{center}
+       \begin{tabular}{{p{4cm} p{10cm}}}
+               -b:v <arg> & Sets target bitrate (e.g. 500k)\\
+               -minrate <arg> & Sets minimum bitrate.\\
+               -maxrate <arg> & Sets maximum bitrate.\\
+               -crf <arg> & sets maximum quality level. Valid values are 0-63, lower numbers are higher quality.\\
+       \end{tabular}
+\end{center}
+
+\textit{Note 1}: Bitrate is specified in kbps, or kilobits per second. In video compression a kilobit is generally assumed to be 1000 bits (not 1024).
+
+\textit{Note 2:} Other codecs in FFMpeg accept the \textit{-crf} parameter but may interpret the value differently. If you are using \textit{-crf} with other codecs you will likely use different values for VP9.
+
+\texttt{bitrate=1024k}\\
+\texttt{minrate=512k}\\
+\texttt{maxrate=1485k}\\
+\texttt{crf=32}
+
+\textit{Tiling} splits the video into rectangular regions, which allows multi-threading for encoding and decoding. The number of tiles is always a power of two. 0=1 tile; 1=2; 2=4; 3=8; 4=16; 5=32\\
+\texttt{tile-columns=2}
+
+(modified from {\small \url{https://trac.ffmpeg.org/wiki/EncodingForStreamingSites}})
+
+To use a 2 second \textit{GOP} (Group of Pictures), simply multiply your output frame rate $\times$ 2. For example, if your input is \textit{-framerate 30}, then use \textit{-g 60}.\\
+\texttt{g=240}
+
+number of \textit{threads} to use during encoding\\
+\texttt{threads=8}
+
+\textit{Quality} may be set to good, best, or realtime\\
+\texttt{quality=good}
+
+\textit{Speed}: this parameter has different meanings depending upon whether quality is set to good or realtime. Speed settings 0-4 apply for VoD in good and best, with 0 being the highest quality and 4 being the lowest. Realtime valid values are 5-8; lower numbers mean higher quality\\
+\texttt{speed=4}
+
+\subsection{Piping Video to a Command Line}%
+\label{sub:piping_video_command_line}
+\index{rendering!command line}
+
+You can pipe a video to any command line on the computer, such as
+ffmpeg.  This can be especially useful with raw video files.  Next
+is an example usage.
+
+\begin{enumerate}
+       \item on a terminal window create a named pipe file, for example:
+       \begin{lstlisting}[style=sh]
+               mknod /tmp/piper.yuv p
+       \end{lstlisting} load your video and do your editing
+       \item set up your Render (\texttt{Shift-R}), you can choose a raw
+       format such as \textit{yuv} or \textit{rgb}
+       \item for the filename \textit{Select a file to render to}, use the
+       named pipe as created in step 1 (\texttt{/tmp/piper.yuv})
+       \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}[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}[style=sh]
+       ffmpeg -f yuv4mpegpipe -i /tmp/piper.y4m -vcodec libx264 /tmp/test.mp4
+\end{lstlisting}
+
+\subsection{Faststart Option for MOV type files}%
+\label{sub:faststart_option_mov0}
+
+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.
+
+\section{About Image Sequences}%
+\label{sec:about_image_sequences}
+\index{image sequence}
+
+\CGG{} supports image sequences with both decoding and encoding.
+
+\CGG{} by default uses ffmpeg as encoding/decoding engine but we can disable it to have the specific internal engine available. See \nameref{sec:ffmpeg_early_probe_explanation} on how to switch between engines. With the internal engine we can create and load sequences of OpenEXR; PNG; TIFF; TGA; GIF; PPM and JPEG. With ffmpeg we can create and load DPX sequences or create a custom preset for any kind of image. Using these formats results in great timeline efficiency and high video quality at the cost of taking up a lot of space because they are uncompressed (or with lossless compression).
+By rendering, you will get as many still images as there are frames in the project, plus a \textit{file-list} (or \textit{TOC}) that indexes the images. A good practice is to create a folder to contain the images (for example \texttt{/tmp/img\_seq/}) and then open the rendering window in \CGG{} and set a serial and increasing number as the name (for example: \texttt{/tmp/img\_seq/image \%05d.png}). \textit{image} is a generic name chosen at will; $\%$ creates a progressive sequence of distinct images; $05d$ indicates how many digits the image number will be, in this case 5 digits to go from $00000$ to $99999$.
+Once we have our folder of images, if we want to import it in a project just load the file-list, which includes the link to all the files of the sequence.
+To learn more about using and creating a preset with ffmpeg of an image sequence, see \nameref{sec:ffmpeg_image2_streams} and/or \nameref{sec:image_sequence_creation}.
+
+\section{Data storage formulas}%
+\label{sec:data_storage_formulas}
+\index{data storage}
+
+If we are dealing with large projects and poorly compressed formats, we will get large files that are difficult to manage and take up a lot of space on the HDD. We present some simple formulas to be able to calculate the space that will be occupied and the data rates we have to deal with:
+
+\begin{description}
+       \item[Frame size] 
+       
+       \[ \dfrac{Width \times Height [pixels] \times BitDepth [bits/pixel] \times Color}{8 [bit/Byte]} \]      
+       \[= ... [MB/frame] \]
+       \item[File size] 
+       
+       \[ Frame size [MB/frame] \times frames [frame] = ... [MB] \]
+       \item[Data Rate] 
+       
+       \[ Frame size [MB/frame] \times fps [frame/sec] = ... [MB/sec] \]
+       \item[Data in 1 Hour] 
+       
+       \[ \dfrac{Data Rate [MB/sec] \times 3600 [sec]}{1024MB/GB}  = ... [GB] \]       
+\end{description}
+
 \section{Batch Rendering}%
 \label{sec:batch_rendering}
+\index{batch rendering}
 
-Batch Rendering automates the rendering of audio/video files in that
+Batch Rendering as implemented in \CGG{} is considered to be more of
+an advanced feature and careful usage is advised.  It automates the
+rendering of audio/video files in that
 you can establish a set of job parameters, save them, and use them
-repeatedly.  It also allows for \CGG{} to be run by external
-programs, with no need for the user to manually interact with the
-user interface (figure~\ref{fig:batch01}).
-
-If you want to render many projects to media files without having to
-constantly set up the render dialog for each one, batch rendering is
-a more efficient method of rendering.  In the Batch Render menu, you
-specify one or more \CGG{} project XML files, the EDL, to render and
-unique output files for each. (The EDL is the Edit Decision List or
-the set of changes to be applied to the project and media files.)
-Then \CGG{} loads each project file and renders it
-automatically. The project XML files, combined with the settings for
-rendering an output file, are called a batch.  This allows a large
-amount of media to be processed without user intervention.
+repeatedly (figure~\ref{fig:batch01}).  It also allows for \CGG{} to
+be run by external programs, with no need for the user to manually
+interact with the user interface.
 
 \begin{figure}[htpb] \centering
-  \includegraphics[width=0.8\linewidth]{batch01.png}
-  \caption{Example of the Batch Render menu}
-  \label{fig:batch01}
+       \includegraphics[width=1.0\linewidth]{batch01.png}
+       \caption{Example of the Batch Render menu}
+       \label{fig:batch01}
 \end{figure}
 
+If you want to render many projects \index{project} to media files without having to
+constantly set up the render dialog for each one, batch rendering is
+a more efficient method of rendering. To use this feature you need to 
+understand certain concepts.
+
+\begin{enumerate}
+       \item  You must define a list of Batches (\textit{Job} \index{job}) before starting the rendering. This is created using the \textit{New} button and displayed in \textit{Batches to Render} dialog.
+       \item Each batch consists of a source project already created in \CGG{}, e.g. \texttt{aaa.xml}, to which we assign the rendering parameters.
+       \begin{itemize}
+               \item to associate \texttt{aaa.xml} to the batch we use the \textit{EDL Path} input field.
+               \item we decide a name and path for the output file.
+               \item let's set the \textit{File Format} of the output file.
+               \item We configure the file with the Audio/Video \textit{wrench}.
+               \item we decide whether to create different files for each \textit{label} and whether to use a \textit{Render farm}.
+       \end{itemize}
+       \item Created the first batch, we will see it appear in the dialog \textit{Batches to Render}.
+       \item Using the \textit{New} button again we create a second batch for another source project (\texttt{bbb.xml}) and configure it at will.
+       \item We continue with the source projects \texttt{ccc.xml}, \texttt{ddd.xml}, etc. until we run out of projects that we want to render in batch.
+       \item Note that each batch has its own name, path and rendering parameters.
+       \item Now we have our \textit{Job}, a list of batches. We can still configure it or modify it if we want to change something. In addition we can delete a batch from the list or we can disable it in the \textit{Enabled} field so that it is not taken into account during rendering, but without deleting it.
+       \item Finally we start batch rendering with the \textit{Start} button.
+\end{enumerate}
+
+Let's see in detail how to set the Batch Rendering.
+
 The first thing to do when preparing to do batch rendering is to
 create one or more \CGG{} projects to be rendered and save them as a
-normal project, such as \texttt{ProjectA.xml}.  The batch renderer
+normal project, such as \texttt{aaa.xml}.  The batch renderer
 requires a separate project file for every batch to be rendered.
 You can use the same \CGG{} project file if you are rendering to
 different output files, as in an example where you might be creating
 the same output video in different file formats.
 
-To create a project file which can be used in batch render, set up
-your project and define the region to be rendered either by
-highlighting it, setting in/out points around it, or positioning the
-insertion point before it. Then save the project as usual to your
-\texttt{project.xm}l file. Define as many projects as needed this
-way.  The batch renderer takes the active region from the EDL file
-for rendering. If we have not set active regions, it is better to
-bring the insertion point to the beginning of the timeline to avoid
-possible problems with the rendering.
+You do not have to render an entire projects. We can limit ourselves to an \textit{active region} \index{active region} that we can set through a selection in Cut and Paste mode, with labels or In/Out Points. Or the rendering will start from the Insert Point position until the end of the project. Remember: if we want to render the entire project (and not just one active region) it is important to bring the Insertion Point to the beginning of the timeline. This is the only way we are sure to include the whole project.
 
 With all the \CGG{} xml project files prepared with active regions,
 go to \texttt{File $\rightarrow$ Batch Render}. This brings up the
@@ -182,12 +771,12 @@ called \textit{Batches to render}.  Above this are the configuration
 parameters for a single batch; a batch is simply a pairing of a
 project file with a choice of output file and render settings.
 
-Set the \textit{Output path}, \textit{File format}, \textit{Audio},
+It may be advisable to start with a \textit{Delete} so you don't have any problems. Set the \textit{Output path}, \textit{File format}, \textit{Audio},
 \textit{Video}, and \textit{Create new file at each label}
 parameters as if you were rendering a single file.  These parameters
 apply to only one batch.  In addition to the standard rendering
 parameters, you must select the \textit{EDL Path} to be the project
-file (such as \texttt{ProjectA.xml}) that will be used in the batch
+file (such as \texttt{aaa.xml}) that will be used in the batch
 job.  In this case, \textit{EDL Path} is not related in anyway with
 the EDL files as created by \texttt{File/Export EDL}.  In batch
 render mode the program will not overwrite an existing output file
@@ -195,18 +784,18 @@ and will simply fail, so make sure that no files with the same name
 as the output files exist before starting.
 
 If the batches to render list is empty or nothing is highlighted,
-click \texttt{New} to create a new batch. The new batch will contain
-all the parameters you just set.  Repeatedly press the \texttt{New}
+click \textit{New} to create a new batch. The new batch will contain
+all the parameters you just set.  Repeatedly press the \textit{New}
 button to create more batches with the same parameters.  When you
 highlight any batch, you can edit the configuration on the top of
 the batch render window. The highlighted batch is always
 synchronized to the information displayed.  You can easily change
 the order in which the batch jobs are rendered, by clicking and
-dragging a batch to a different position.  Hit \texttt{Delete} to
+dragging a batch to a different position.  Hit \textit{Delete} to
 permanently remove a highlighted batch. In the list box is a column
 which enables or disables the batch with an \texttt{X} meaning the
 batch job is enabled and will be run.  This way batches can be
-skipped without being deleted.  Click on the \texttt{Enabled} column
+skipped without being deleted.  Click on the \textit{Enabled} column
 in the list box to enable or disable a batch.
 
 The description of each of the columns in the batch list are as
@@ -216,80 +805,94 @@ follows:
 \item[Enabled:] an X in this column means the batch job will be run.
 \item[Labeled:] an \texttt{X} in this column goes hand in hand with
   create new file at each label.
+\item[Farmed:] to use or not the render farm.
 \item[Output:] path and filename for the generated output.
 \item[EDL:] the path and filename of the source EDL for the batch
   job.
 \item[Elapsed:] the amount of time taken to render the batch if
   finished.  If field is empty, it did not run.
-\end{description} To start rendering from the first enabled batch,
-hit \texttt{Start}.  Once rendering, the main window shows the
+\end{description} 
+
+The \texttt{File $\rightarrow$ Batch Render} pulldown brings up the
+Batch Render window to be used for batch rendering as well as DVD/BD
+creation.  There are some additional buttons that can save time and
+mistakes.  These are described next.
+
+\begin{description}
+       \item[Save Jobs] when you have set up the batch jobs the way you
+       want and you think you may have to run them more than once, it is
+       beneficial to save the jobs for later use so you easily run them
+       again.  It is recommended to use a filename with .rc as the extension
+       so that it is obvious that it is a list of batch jobs to be run.
+       \item[Load Jobs] reload a previous set of saved jobs.  This can come
+       in handy if you did not have the time to render them when you
+       originally set them up, if you need to rerun, or if you got
+       interrupted.
+\end{description}
+
+To start rendering from the first enabled batch,
+hit \textit{Start}.  Once rendering, the main window shows the
 progress of the batch. After each batch finishes, the elapsed column
 in the batch list is updated and the next batch is rendered until
 all the enabled batches are finished.  The currently rendering batch
 is always highlighted red.  To stop rendering before the batches are
-finished without closing the batch render dialog, hit \texttt{Stop}.
+finished without closing the batch render dialog, hit \textit{Stop}.
 To stop rendering before the batches are finished and close the
-batch render dialog, hit \texttt{Close}.  Or you can exit the batch
+batch render dialog, hit \textit{Close}.  Or you can exit the batch
 render dialog whether or not anything is being rendered, by hitting
-\texttt{Close}.
+\textit{Close}.
 
 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,
+jobs, you can click the button \textit{Save Jobs} and choose a file
+to save your batch render list to.  It is recommended that you use
+a filename with the extension of .rc in order to make it obvious that
+this is a list of batch jobs to render. 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}[style=sh]
-{path_to_cinelerra}/cin -r batchjob.xml
+{path_to_cinelerra}/cin -r batchjob.rc
 \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.
-
-\subsection{Command Line Rendering}%
-\label{sub:command_line_rendering}
-
-The command line rendering method consists of a way to load the
-current set of batch rendering jobs and process them without a
-GUI\@. This is useful if you want to do rendering on the other side
-of a low bandwidth network and you have access to a high powered
-computer located elsewhere. Setting up all the parameters for this
-operation is somewhat difficult. That is why the command line aborts
-if any output files already exist.
-
-To perform rendering from the command line, first run \CGG{} in
-graphical mode. Go to \texttt{File $\rightarrow$ Batch
-  Render}. Create the batches you intend to render in the batch window
-and close the window. This saves the batches in a file. Set up the
-desired render farm attributes in \texttt{Settings $\rightarrow$
-  Preferences} and quit out of \CGG{} if you want to use the Render
-Farm capability.  These settings are used the next time command line
-rendering is used to process the current set of batch jobs without a
-GUI\@.
+\texttt{batchjob.rc}. \textbf{Warning} this file will be modified
+so if you use any filename that is not a legitimate list of batch jobs to
+render, that file will be overwritten and its previous contents destroyed.
+When invoked with these parameters, \CGG{} will start up and run the
+rendering jobs in the list contained in that file starting at the defined
+\textit{active region}, without creating its usual windows. If you do not
+specify a filename, the default will be \$HOME/.bcast5/batchrender.rc.
+Possible messages you might see where you started up the job are as follows.
+\begin{description}
+\item[The following files exist: - filename - Won't overwrite existing files] that batch job will not run in order to prevent writing over previous run.
+\item["filename" No such file or directory] the specified batch job file does not exist.
+\item["filename": Permission denied] the specified batch job file does not have write permission so can not be updated.
+\item[Render::run: filename] the batch job with the name of filename will be processed.
+\item[** rendered 0 frames in 0.000 secs, 0.000 fps] either you used a file that is not a list of batch jobs or the batch jobs within the file were not enabled.
+\end{description}
 
-On the command line run:
+\subsection{Advanced features}%
+\label{sub:advanced_features}
+\index{batch rendering!more options}
 
-\begin{lstlisting}[style=sh]
-cin -r
-\end{lstlisting}
+\textbf{Warning}: \textit{Save to EDL path} overwrites the current EDL thus destroying the original contents.
 
-\subsection{More about Save/Use EDL and Save/Load Jobs}%
-\label{sub:more_save_use_edl_jobs}
-
-The \texttt{File $\rightarrow$ Batch Render} pulldown brings up the
-Batch Render window to be used for batch rendering as well as DVD/BD
-creation.  There are some additional buttons that can save time and
-mistakes.  These are described next.
+Although the operation of Batch Rendering in \CGG{} is similar to that of other NLEs, there is one big difference that we need to take into account. The render setup is not done on a project-by-project basis, which are then brought into the Batch window to be rendered automatically. The setup must be done in the Batch rendering window, where various projects are loaded and set up. In the case of similar projects, derived from a single EDL with some variation, this mode offers the possibility of altering the projects without having to open each individual project, make the changes, set up the rendering, save and import into the Batch window. The procedure is to select the batch we want to modify in the Batches to render window; operate on the currently open timeline (even if it does not correspond to the one we want to modify) making the desired changes and then press the \textit{Save to EDL path} button. Thus the chosen batch, while retaining its original name, will now contain the modified project. Since this possibility destroys the original EDL overwriting it with the modified one, you must be very careful. This procedure is convenient in case the batches are similar, i.e. they are variations of the same EDL, where we want to experiment with other effects, other output formats or when trying out various cuts of a DVD/BD before the final production. It might also be useful to use an \textit{active region} of the timeline, so as to speed up rendering times but still have an indicative result for comparison. Instead operating on different projects, we can do a \textit{save as...} of the project on the timeline to have a new EDL with a new name and then replace it with the batch selected in the joblist using the \textit{Use Current EDL} button. The new project (with its name) overwrites the original project.
 
 The \textit{Save to EDL Path} and \textit{Use Current EDL} buttons
 can be valuable tools for advanced usage or for developers doing
 testing.  Description of how you can expect them to work will help
-to illustrate how to take advantage of their capabilities.
+to illustrate how to take advantage of their capabilities (figure~\ref{fig:batch-advanced}):
+
+\begin{figure}[htpb] \centering
+       \includegraphics[width=0.7\linewidth]{batch-advanced.png}
+       \caption{New Buttons with Unsafe GUI in batchrender}
+       \label{fig:batch-advanced}
+\end{figure}
+
 
 \begin{description}
-\item[Save to EDL Path] if you have made a change to the EDL, use
+\item[Save to EDL Path] Warning: this function overwrites the contents of the original EDL with new data, keeping the name of the original. If we don't know exactly what we're doing we may lose the original project. 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
@@ -311,8 +914,8 @@ to illustrate how to take advantage of their capabilities.
   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
+  \texttt{original\_name.xml}. To have this functionality we have to enable the checkbox in \texttt{Settings $\rightarrow$ Preferences $\rightarrow$ Appearance} tab; section \textit{Dangerous:} and unchecked (default) \textit{Unsafe GUI in batchrender}.
+\item[Use Current EDL] Warning: this function overwrites the contents of the original EDL with new project. If we don't know exactly what we're doing we may lose the original project. 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 with
   another name (in order to preserve the original name in case you
@@ -326,15 +929,7 @@ to illustrate how to take advantage of their capabilities.
   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 run them more than once, it is
-  beneficial to save the jobs for later use so you easily run them
-  again.
-\item[Load Jobs] reload a previous set of saved jobs.  This can come
-  in handy if you did not have the time to render them when you
-  originally set them up, if you need to rerun, or if you got
-  interrupted.
-\item[Warn if Jobs/Session mismatched] After you set up your render
+\item[Warn if Jobs/Session mismatched] Warning: It is better to keep this function unchecked because it is only needed in case of changes on the original EDL. By default it is hidden and is shown only if we enable the checkbox in \texttt{Settings $\rightarrow$ Preferences $\rightarrow$ Appearance} tab; section \textit{Dangerous:} and checked \textit{Unsafe GUI in batchrender}. After you set up your render
   and press Start, the program checks to see if the current EDL
   session matches your Batch Render job.  If the EDL has been changed
   since the batch job was created, it warns you so that you have the
@@ -342,37 +937,70 @@ to illustrate how to take advantage of their capabilities.
   Otherwise, you can dismiss that warning box, disable the warning
   message by unchecking the box and use the original values.  If you
   never want to be warned about the mismatches, leave the box
-  unchecked (figure~\ref{fig:batch02}).
+  unchecked (figure~\ref{fig:batch02}). It is advisable to keep it unchecked because it can cause problems.
 \end{description}
 
 \begin{figure}[htpb] \centering
-  \includegraphics[width=0.8\linewidth]{batch02.png}
-  \caption{Batch render with the 4 ghosted buttons on the right side
-    + the Warning message below}
-  \label{fig:batch02}
+       \includegraphics[width=0.9\linewidth]{batch02.png}
+       \caption{Batch render with the 4 ghosted buttons on the right side
+               + the Warning message below}
+       \label{fig:batch02}
 \end{figure}
 
+A very clear tutorial on these features can be found \href{https://linuxvideoediting.blogspot.com/2021/01/save-edl-path-use-current-edl-in-cinelerra-gg.html}{here}\protect\footnote{credit Igor Vladimirsky}; in Russian but easily translatable with DeepL or similar.
+
+\subsection{Command Line Rendering}%
+\label{sub:command_line_rendering}
+\index{rendering!command line}
+
+The command line rendering method consists of a way to load the
+current set of batch rendering jobs and process them without a
+GUI\@. This is useful if you want to do rendering on the other side
+of a low bandwidth network and you have access to a high powered
+computer located elsewhere. Setting up all the parameters for this
+operation is somewhat difficult. That is why the command line aborts
+if any output files already exist.
+
+To perform rendering from the command line, first run \CGG{} in
+graphical mode. Go to \texttt{File $\rightarrow$ Batch Render}.
+Create the batches you intend to render in the batch window and
+close the window.  This automatically saves the batches in a file 
+with the name of \$HOME/.bcast5/batchrender.rc. Set up the
+desired render farm attributes in \texttt{Settings $\rightarrow$
+  Preferences} and quit out of \CGG{} if you want to use the Render
+Farm capability.  These settings are used the next time command line
+rendering is used to process the current set of batch jobs without a
+GUI\@.  It is important to remember that the rendering will begin at
+the defined \textit{active region} saved when the project was saved. 
+
+On the command line run:
+
+\begin{lstlisting}[style=sh]
+cin -r
+\end{lstlisting}
+
 \section{Background Rendering}%
 \label{sec:background_rendering}
+\index{background rendering}
 
 Background rendering causes temporary output to be rendered
 constantly while the timeline is being modified. The temporary
 output is displayed during playback whenever possible. This is
 useful for transitions and previewing effects that are too slow to
-display in real time. If a Render Farm is enabled, the render farm
+display in real time. If a Render Farm \index{render farm} is enabled, the render farm
 is used for background rendering. This gives you the potential for
 real-time effects if enough network bandwidth and CPU nodes exist.
 
 Background rendering is enabled in the \texttt{Performance} tab of
 the \texttt{Preferences} window. It has one interactive function
-\texttt{Settings $\rightarrow$ Toggle background rendering}. This
+\texttt{Settings $\rightarrow$ Toggle background rendering} \index{background rendering!toggle}. This
 sets the point where background rendering starts up to the position
 of the insertion point. If any video exists, a red bar appears in
 the time ruler showing what has been background rendered
 (figure~\ref{fig:back-ren02}).
 
 \begin{figure}[htpb] \centering
-  \includegraphics[width=0.8\linewidth]{back-ren02.png}
+  \includegraphics[width=1.0\linewidth]{back-ren02.png}
   \caption{Settings Background Rendering}
   \label{fig:back-ren02}
 \end{figure}
@@ -383,7 +1011,7 @@ right before the effect to preview it in real time and full frame
 rates (figure~\ref{fig:back-ren}).
 
 \begin{figure}[htpb] \centering
-  \includegraphics[width=0.8\linewidth]{back-ren.png}
+  \includegraphics[width=1.0\linewidth]{back-ren.png}
   \caption{Timeline with the top red bar}
   \label{fig:back-ren}
 \end{figure}
@@ -407,28 +1035,41 @@ rates (figure~\ref{fig:back-ren}).
   path. Since hundreds of thousands of image files are usually
   created, ls commands will not work in the background rendering
   directory. The browse button for this option normally will not work
-  either, but the configuration button for this option works.
+  either, but the configuration button for this option works. The
+  default value will be /tmp/brender .
 \item[File format] The file format for background rendering has to
   be a sequence of images. The format of the image sequences
   determines the quality and speed of playback. JPEG generally works
-  well.
+  well and is the default.
 \end{description}
+Tip: If you have rendered your whole project with \textit{File format}
+set to JPEG and there are no missing numbers in the sequence, you can
+create a video from that sequence outside of \CGG{}.
+For example, if using the default output so that your files are named
+/tmp/brender000000, /tmp/brender000001, ... in a window, you would type:
+
+\begin{lstlisting}[style=sh]
+ffmpeg -f image2 -i /tmp/brender0%5d -c:v copy brender.mov
+\end{lstlisting}
+which would create the video file brender.mov -  be sure to delete
+existing brender files before creating a new sequence to ensure there
+are no missing numerical values in the sequence.
 
 \section{Render Farm Usage}%
 \label{sec:render_farm_usage}
+\index{render farm}
 
 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.
-
+gain. With \CGG{} installed on all nodes, the master node and the clients communicate via a network port that you specify.
+The Master node is the one of the instance of \CGG{} that we normally start with its gui; the other nodes are the instances of \CGG{} that we decide to start in parallel from the terminal to create the Render farm (clients).
 \CGG{} can distribute the rendering tasks over the network to the
-other computers of the Render Farm.  The render farm software tries
+other computers of the Render Farm; or among all threads of a multicore CPU.  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
+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
@@ -443,6 +1084,7 @@ script.
 The following steps are just a guideline to start your render farm.
 It is assumed that you already have the master and client nodes
 communication, shared filesystem, permissions and usernames synched.
+Let's take the example of a network with 2 PCs: the master and the client. On the client we set 5 tasks; on the master we set 2 tasks.
 
 \begin{enumerate}
 \item On the master computer, use \texttt{Settings} $\rightarrow$
@@ -453,37 +1095,37 @@ communication, shared filesystem, permissions and usernames synched.
   \item in the \textit{Hostname} box, keyin your hostname or ip
     address such as 192.168.1.12 or \textit{localhost};
   \item enter in a port number such as 401--405 (only a root user
-    can use privileged ports) or $1025$ and click on \textit{Add Nodes};
+    can use privileged ports) or $10650...$ for non-root and click on \textit{Add Nodes}. To find a range of free ports to use you can look at the file \texttt{/etc/services};
   \item you will see something like the following in the Nodes
     listbox to the right:\newline
     \begin{tabular}{lllc} On & Hostname & Port & Framerate
       \\\midrule
-      X & 192.168.1.12 & 401 & 0.0 \\
-      X & 192.168.1.12 & 402 & 0.0 \\
-      X & 192.168.1.12 & 403 & 0.0 \\
-      X & 192.168.1.12 & 404 & 0.0 \\
-      X & 192.168.1.12 & 405 & 0.0 \\
-      X & localhost & 406 & 0.0 \\
-      X & localhost & 407 & 0.0 \\
+      X & 192.168.1.12 & 10650 & 0.0 \\
+      X & 192.168.1.12 & 10651 & 0.0 \\
+      X & 192.168.1.12 & 10652 & 0.0 \\
+      X & 192.168.1.12 & 10653 & 0.0 \\
+      X & 192.168.1.12 & 10654 & 0.0 \\
+      X & localhost & 10655 & 0.0 \\
+      X & localhost & 10656 & 0.0 \\
     \end{tabular}
-  \item set the Total number of jobs to create;
+  \item set the Total number of jobs to create. This number only pertains to client nodes, so we do not need to consider the master node;
   \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:
+\item For external network nodes, now we must join the nodes created to instances of \CGG{}. On the client computers ($192.168.1.12$), on the terminal, start 5 background  \CGG{} tasks via:
 \begin{lstlisting}[style=sh]
 cd {path_to_cinelerra}
-cin -d 401 cin -d 402
+cin -d 10650 cin -d 10651
 ...
-cin -d 405
+cin -d 10654
 \end{lstlisting}
-\item On the master node (localhost), start the 2 background \CGG{}
-  tasks via:
+In practice, at each instance that we start, the cursor will be positioned in a new line ready to enter the next command, without exiting the task. If we have several PCs on the network, repeat these steps for each new client (with its own ip address).
+\item Similarly, on the terminal, we must join the local nodes (internal to the Master node) created to instances of \CGG{}. On the Master node (localhost), start the 2 background \CGG{}  tasks via:
 \begin{lstlisting}[style=sh]
 cd {path_to_cinelerra}
-cin -d 406
-cin -d 407
+cin -d 10655
+cin -d 10656
 \end{lstlisting}
+Similar to the previous point, the cursor positions itself in a new line ready to enter the next command, without exiting the task.
 \item When your video is ready, setup a render job via \texttt{File
     $\rightarrow$ Render} or \texttt{File $\rightarrow$ Batch Render}
   and check OK.
@@ -497,18 +1139,19 @@ cin -d 407
   Scripts icon.
 \item If you plan on doing more rendering, you can just leave the
   master/client jobs running to use again and avoid having to restart
-  them.  Or you can kill them when you no longer are using them.
+  them. You can also close the terminal, but the jobs will remain active until you turn off the PC. Or you can kill them when you no longer are using them.
 \end{enumerate}
 
 \subsection{Render Farm Menu and Parameter Description}%
 \label{sub:render_farm_parameter_description}
+\index{render farm!parameters}
 
 Below we describe the Performance tab for configuring a render farm
 (figure~\ref{fig:farm}).
 
 \begin{figure}[htpb] \centering
-  \includegraphics[width=0.8\linewidth]{farm.png}
-  \caption{Settings $\rightarrow$ Preferences, Performance tab, menu
+  \includegraphics[width=1.0\linewidth]{farm.png}
+  \caption{Settings: Preferences: Performance tab, menu
     to set up your Render Farm}
   \label{fig:farm}
 \end{figure}
@@ -533,7 +1176,7 @@ Below we describe the Performance tab for configuring a render farm
   existing node or enter a new node.
 \item[Port] keyin the port number of an existing or new node here.
   You can also type in a range of port numbers using a hyphen, for
-  example $1501-1505$ when you need to add many.
+  example $10650-10799$ when you need to add many.
 \item[Apply Changes] this will allow you to edit an existing node
   and to then commit the changes to hostname and port. The changes
   will not be committed if you do not click the OK button.
@@ -597,6 +1240,7 @@ render farm session to restart with a good balance.
 
 \subsection{Detailed Setup Description}%
 \label{sub:detailed_setup_description}
+\index{render farm!setup}
 
 {\color{red} CAUTION }, any exact command lines worked as of
 $01/2018$ on a Fedora system.  These can change over time and on
@@ -698,7 +1342,7 @@ umount <path>
     node, start \CGG{} by clicking on the icon or by typing the
     following command on the terminal screen:
     \texttt{/{cinelerra\_path}/cin}.
-  \item Use the file pulldown \texttt{Settings $\rightarrow$
+  \item Use the \textit{File} pulldown \texttt{Settings $\rightarrow$
       Preferences}, the Performance tab, to set up your Render Farm
     options in the Render Farm pane.
   \item Check the \textit{Use render farm} option.  By default, once
@@ -746,12 +1390,6 @@ RenderFarmClient::main_loop: Session started from 127.0.0.1
 \end{lstlisting} As it completes its jobs, you will should see:
 \begin{lstlisting}[style=sh]
 RenderFarmClientThread::run: Session finished
-\end{lstlisting} A quick way to start a sequence of clients is to
-  use:
-\begin{lstlisting}[style=sh,mathescape]
-for 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
@@ -780,13 +1418,26 @@ done
 \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
+  just above FF), if the files were rendered using ffmpeg (see \nameref{sec:menu_bar_shell_commands}).
+  
+  If you want to remain within the open project in \CGG{}, you can load these files 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.
+  
+  Finally if you want to use ffmpeg from terminal externally to \CGG{} you can go to the directory where the rendered files are, it creates a text file \texttt{list.txt} containing the list of all our files:
+  \begin{lstlisting}[style=sh]
+       file 'name.webm001'
+       file 'name.webm002'
+       ...
+       file 'name.webm00n'
+  \end{lstlisting}
+  and finally give the command
+  \begin{lstlisting}[style=sh]
+       ffmpeg -f concat -i list.txt -c copy output.webm
+  \end{lstlisting}
 \end{description}
 
 \subsection{Quick and Easy Render Farm Setup – The Buddy System
@@ -813,7 +1464,7 @@ want to bother setting up NFS for a shared disk.
   add the plugins, such as a Title, etc.
 \item Check for a set of unused ports in \texttt{/etc/services}
   file, if username is root usually $401-425$ are available; if
-  non-root, then $1024-1079$.
+  non-root, then $10650-10799$.
 \item On the master computer, in \texttt{Settings $\rightarrow$
     Preferences, Performance} tab:
   \begin{itemize}
@@ -831,33 +1482,35 @@ want to bother setting up NFS for a shared disk.
 /{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}.
+  files, for example \texttt{/tmp/myoutput.webm}.
 \item The client nodes output results will be on their local
   \texttt{/tmp} filesystems so you will have to again use
   \textit{rsh/ftp} or \textit{usb sneaker net} to move them over to
   the main computer.  File names will be the render job output file
   name with port number tacked on
-  (e.g. \texttt{/tmp/hb.mp4001...mp4005}).
+  (e.g. \texttt{/tmp/hb.webm001...webm005}).
 \item Load the files by concatenate to existing track on the master
   node or use RenderMux shell script.
 \end{enumerate}
 
 \subsection{Multi-core Computers Render Farm Setup}%
 \label{sub:multi_core_render_farm_setup}
+\index{render farm!multi core CPU}
 
 If you are lucky enough to have a computer with a large cpu core
 count, setting up a render farm can really take advantage of using
-all of the cpus. This is much faster than the default automatic
+all of the cores at 100\%. This is much faster than the default automatic
 threading capability. Since you don’t need to communicate with other
 computers, you will not have to be concerned about TCP communication
-or shared disks/files. When you are going to be doing other work
+or shared disks/files; only localhost nodes. On the terminal we will open many instances of \CGG{} by connecting them to the jobs created. The number of such jobs can be the total number of CPU threads (-1) or not. When you are going to be doing other work
 simultaneously while rendering a large job, you will want to leave
-some of the cpus available for that.  Be sure to set Project SMP
-cpus” in the Settings→Preferences, Performance tab to your CPU
+some of the cpus available for that.  Be sure to set \textit{Project SMP
+cpus} in the \texttt{Settings $\rightarrow$ Preferences, Performance} tab to your CPU
 count.
 
 \subsection{Troubleshooting Tips and Warnings}%
 \label{sub:troubleshhoting_tips_warnings}
+\index{render farm!troubleshooting}
 
 \noindent If you have problems running the Render Farm.  Here is a
 list of items to check.
@@ -884,7 +1537,7 @@ list of items to check.
   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 the $400+$ range.
+  $10650$ and above must be used instead of the $401+$ range.
 \item The master and client jobs on the ports do not go away so if
   you want to stop them, you will have to kill them via: \texttt{kill
     PID\#}.
@@ -914,7 +1567,7 @@ list of items to check.
   time.  You can adjust the timer in \texttt{Settings $\rightarrow$
     Preferences, Performance} tab.
 \item When you get the message \texttt{RenderFarmClient::main\_loop:
-    bind port 400: Address already in use}, use a different port.
+    bind port 400: Address already in use}, use a different port. See \texttt{/etc/services} for free ports.
 \item A message of \texttt{RenderFarmServerThread::open\_client:
     unknown host abcompany} means that the hostname of abcompany is not
   in \texttt{/etc/hosts} so you will have to add it or use the ip
@@ -933,7 +1586,7 @@ for your setup.
   may want to share these files with the clients on a shared
   filesystem. More information on index files configuration is
   outlined in~\ref{sub:index_file_section}.
-\item Or, one of the convenient features of Cinelerra is the
+\item Or, one of the convenient features of \CGG{} is the
   redirection of the path via \texttt{CIN\_CONFIG} as in:
 \begin{lstlisting}[style=sh]
 CIN_CONFIG="/<shared_file_pathname>/<filename_such_as_.bcast5>" cin
@@ -950,406 +1603,6 @@ you should use a firewall to maintain the safety of all of the
 computers.  The ports have to be reachable for the intranet but you
 do not want the ports to be open to the outside.
 
-\section{Some Specific Rendering}%
-\label{sec:some_specific_rendering}
-
-\noindent The next few pages relate to rendering for specific common
-cases.
-
-\subsection{FFmpeg Common H.264 Rendering}%
-\label{sub:ffmpeg_h264_rendering}
-
-Because H.264 is so widely used, the method in \CGG{} Infinity is
-outlined below.  These setup steps make it easy to just get started.
-
-\begin{itemize}
-\item File $\rightarrow$ Render
-\item File Format $\rightarrow$ FFMPEG + mp4
-\item Video Wrench $\rightarrow$ Preset $\rightarrow$ h264.mp4 +
-  bitrate: 6000000 (or whatever) + OK
-\item Audio Wrench $\rightarrow$ Preset $\rightarrow$ h265.mp4 +
-  bitrate: 224000 (or whatever) + OK
-\item Set your target path in: Render $\rightarrow$ Select a file to
-  render to
-\item Set your timeline in: Render $\rightarrow$ Render range +
-  click Project
-\item Set your insertion strategy: Replace project (or whatever)
-\item Press OK to start rendering.
-\end{itemize}
-
-\subsection{Lossless Rendering}%
-\label{sub:loseeless_rendering}
-
-Lossless means that in the compression of a file, all of the
-original data, every single bit, can be recovered when the file is
-uncompressed.  This is different than \textit{lossy compression}
-where some data is permanently deleted so that when uncompressed,
-all of the original data can not be exactly recovered.  Lossy is
-generally used for video and sound, where a certain amount of
-information loss will not be detected by most users or the playback
-hardware does not reproduce it anyway -- it is a trade-off between
-file size and image/sound quality.  The files created will be more
-than 10 times larger than usual.  Most players will not be able to
-decode lossless as the bitrate will overwhelm the device.
-
-For x264 lossless compression to work, the only color model allowed
-here is yuv420p.  Any other specification will be converted to
-yuv420p and the data will be modified.  Also, keep in mind that the
-YUV color model has to be converted to RGB, which also modifies the
-data.
-
-To use x264 lossless rendering -- choose File format of ffmpeg, m2ts
-in the Render window.  Click on the Video wrench, which brings up
-the Video Preset window and scroll down in the Compression filebox
-and choose \texttt{lossless.m2ts}.  \textit{Preset=medium} is the
-default, but can be varied from \textit{ultrafast} (least amount of
-compression, but biggest file size) to \textit{veryslow} (most
-amount of compression, but still HUGE) in the parameter box where
-you see $qp=0$.  This option is also available for bluray creation.
-
-\subsection{Extra “cin\_” Options for Render with FFmpeg}%
-\label{sub:extra_cin_option_ffmpeg}
-
-There are several special parameters that can be used in the ffmpeg
-options file to pass values to the codecs that are not normally
-available.  They're called Global Options. These are explained
-below.
-
-\paragraph{cin\_pix\_fmt} The Render menus allows you to choose the
-codec input pixel format (figure~\ref{fig:yuv420}).  The Pixels
-selection provides the available pixel format options for the chosen
-codec type; valid choices vary for the different file types.  This
-list represents the formats that the codec advertises.  It is not
-always complete, and it may include options that are not legal with
-all parameter configurations.
-
-\begin{figure}[htpb] \centering
-  \includegraphics[width=0.6\linewidth]{yuv420.png}
-  \caption{Render \& Video Preset menus displaying Pixel choices}
-  \label{fig:yuv420}
-\end{figure}
-
-\begin{itemize}
-\item The \textit{Bitrate}, \textit{Quality}, and \textit{Pixels}
-  fields are only updated when the Video Options are reloaded.  This
-  occurs when you either change the ffmpeg file format, or video
-  presets compression fields.
-\item If the video options preset has \textit{cin\_pix\_fmt}
-  defined, its value will be loaded as the default.  If you override
-  the default, the value you specify will be used.
-\item If the video options preset does not have
-  \textit{cin\_pix\_fmt}, the default pixel format will be computed by
-  ffmpeg (\textit{avcodec\_find\_best\_pix\_fmt\_of\_list}), using the
-  session format as the source choice.  The \textit{best} is usually
-  the format which is most similar in color and depth.
-\item If no choices are available, yuv420p for video will be used.
-\item You can also specify ffmpeg pixel formats which are not in the
-  list.  The list is provided by ffmpeg as input selection, but is
-  more like suggestions than fact.  For example, the raw formats can
-  take almost any format, but the rawvideo codec actually specifies no
-  legal formats.
-\end{itemize}
-
-\noindent Some option files provide \textit{cin\_pix\_fmt} to
-suggest a choice for good quality output or to prevent parameter
-errors when the other provided parameters conflict with the
-\textit{best} pixel format.  This is the case in
-\texttt{faststart\_h264.mp4} where the \textit{profile=high}
-parameter dictates pixel format must be \texttt{yuv420p}.
-
-\paragraph{cin\_bitrate} If you specify the bitrate, you can not
-specify the quality.\\ Example: \textit{cin\_bitrate=2000000}
-
-\paragraph{cin\_quality} If you specify the quality, you can not
-specify the bitrate.\\ Example: \textit{cin\_quality=7}
-
-\paragraph{cin\_stats\_filename} This parameter is useful for 2 pass
-operations.\\ Example: \texttt{cin\_stats\_filename
-  /tmp/cin\_video\_vp9\_webm}
-
-\paragraph{cin\_sample\_fmt} For audio the preset sample format
-default is computed in a similar way as stated above for video or
-can be set with the \textit{cin\_sample\_fmt} parameter
-(figure~\ref{fig:audio}).  If no choices are provided, s16 will be
-used.\\ Example: \textit{cin\_sample\_fmt=s16}
-
-\begin{figure}[htpb] \centering
-  \includegraphics[width=0.55\linewidth]{audio.png}
-  \caption{Render menu showing where Samples is}
-  \label{fig:audio}
-\end{figure}
-
-\paragraph{Private Options} (muxers). In the window of the
-\textit{wrench} in addition to the \textit{View} button, which
-allows more global options and changes to the formats, there is an
-additional \textit{Format} button that allows you to modify the
-Private Options, i.e.\ relating to specific muxing formats. More
-information on all these options can be found at
-\href{https://ffmpeg.org/ffmpeg-all.html#Format-Options}{ffmpeg.org}
-sections 19 and 21.
-
-\subsection{Two-pass Encoding with FFmpeg}%
-\label{sub:two_pass_encoding_ffmpeg}
-
-In \CGG{} for two-pass, you need to run ffmpeg twice, with the same
-settings, except for designating the options of pass~1 for the first
-pass and then pass~2.  In pass~1, a logfile that ffmpeg needs for
-the second pass is created.  In pass~1 the audio codec should be
-specified that will be used in pass~2.  For more information on
-ffmpeg 2-pass, check
-\href{https://trac.ffmpeg.org/wiki/Encode/H.264}{ffmpeg.org}.
-Different libraries may have different requirements and you will
-probably have to determine this by looking online at ffmpeg or
-looking directly at that code.
-
-This 2 line ffmpeg 2-pass operation can be functionally duplicated
-in \CGG{} in the steps below them:
-
-\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}
-
-\begin{enumerate}
-\item After you have completed your editing, do a Save Session with
-  \texttt{File $\rightarrow$ Save as}\dots Before starting, be sure
-  your session is ready for batch render. That is, positioned at the
-  beginning and nothing selected.
-\item Bring up \texttt{File $\rightarrow$ Batch Render}\dots where
-  you will do the setup.
-\item Click on the \textit{Delete} box to remove old jobs
-  highlighted in the bottom listbox.
-  \begin{itemize}
-  \item For the \textit{File Format} choose ffmpeg and mp4 for the
-    type.
-  \item Set \textit{Output path} to the path and filename for the
-    render output file.
-  \item Click on \textit{Use Current EDL} to use the designated EDL
-    Path file.
-  \item Click on \textit{New} and you will see a new highlighted job
-    show up in the listbox at the bottom.
-  \item Use the Audio wrench to set bitrate to $128000$ ($128k$ as
-    in ffmpeg example above).
-  \item Click checkmark OK\@.  Open the video tools with the video
-    wrench.
-  \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}[style=sh]
-flags +pass1
-passlogfile /tmp/"{temporary log file name}.log"
-\end{lstlisting} Click checkmark OK.
-  \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}[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.
-\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; 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}[style=sh]
-x265-params=pass=1:stats=/tmp/{temporary-log-file-name}.log
-\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}[style=sh]
-cin_stats_filename /tmp/{temporary-log-file-name}.log
-flags +pass1 (or flags +pass2 for the second pass)
-\end{lstlisting}
-\end{description}
-
-\textit{NOTE:} for vp9, the best Pixels is \textit{gbrp}
-
-\subsection{Use case: High Efficiency Video Coding (HEVC)}%
-\label{sub:use_case_hevc}
-
-An example of video profile based on CRF, a quality-controlled
-variable bitrate, instead of fixed quality scale (ABR).  HEVC
-(H.265) was developed as a successor to AVC (H.264) to more
-efficiently compress the future large amounts of data from 2/4/8k
-videos.  In comparison to AVC, an average saving of around 30
-percent can be assumed for the same quality.  Because HEVC is not
-bound to any size format, it is suitable for virtually any image
-size.
-
-The following example is HD and FullHD oriented and produces a
-picture quality similar to the Blu-ray with some limitations.  As
-container Matroska (\texttt{.mkv}) is used, but also mp4 and others
-are possible.
-
-\begin{lstlisting}[style=sh]
-matroska libx265
-
-# CRF 16 creates a balanced compromise
-# between quality and file size.
-crf=16
-
-# Preset changes encoding speed and generally
-# degrades the overall result. Medium (default)
-# always fits.
-preset=medium
-
-# Additional parameters that are passed on to the codec.
-# me=star improves the search for very fast
-# movements, but slows down the encoding.
-#x265-params=me=star
-
-# Keyint does FFmpeg automatically, otherwise
-# the setting must match the frame rate.
-#keyint_min=25
-
-# Profile does FFmpeg automatically.
-#profile=high
-
-# Source sRBG and retention of color space.
-# 720/1080=bt709 if no profile set. Useful
-# for formats smaller than 720 if no lossy
-# conversion is desired.
-colorspace=bt709
-color_trc=bt709
-color_primaries=bt709
-
-# Output in 10 bit, prevents 8-bit step formation
-pixel_format=yuv420p
-\end{lstlisting}
-
-\noindent \textit{NOTE:}
-
-A CRF of 16 delivers satisfactory results in most cases. However, if
-the video material is really \emph{grainy}, a CRF~16 can lead to
-unwanted large files.  In this case, a trial export of perhaps one
-minute should be performed. The resulting bit rate can be used to
-correct the CRF to 17,\,18,\,19\ldots -- remember, a CRF of $0$ (zero)
-means lossless, the higher the number the stronger the lossy
-compression. The approximate calculation of the final file size can
-be extrapolated from the sample export.
-
-The color space information must be used explicitly so that it can
-be included in the video. \CGG{} or FFmpeg does not write it by
-itself. Without this information the players (e.\,g.\
-\href{https://mpv.io/}{mpv}) stick to the dimensions of the video
-and take the assumed color model from a table. With videos in the
-dimensions from 720 to 1080 this is bt709. For smaller dimensions,
-e.\,g.\ DVD, bt601 is assumed and for 4k and above it is
-bt2020. Normally this is not a problem, but if you want to export a
-FullHD without color loss to a smaller size like 576 for example,
-you have to inform the encoder as well as the decoder of the
-player. This also applies if the videos are to be loaded on video
-platforms, where they are then converted into videos of different
-sizes. It is a security measure to prevent false colors, such as the
-color profiles in digital photos and the copies made from them.
-
-The HEVC tuning has not been considered here, because it is is
-rarely used and requires background knowledge.
-
-Further links:
-\begin{itemize}
-\item \href{http://x265.readthedocs.org/en/default/}{x265
-    Documentation}
-\item \href{http://x265.readthedocs.org/en/latest/cli.html}{x265
-    Command Line Options}
-\item \href{http://x265.readthedocs.org/en/latest/presets.html}{x265
-    Presets/Tuning}
-\end{itemize}
-
-\subsection{Piping Video to a Command Line}%
-\label{sub:piping_video_command_line}
-
-You can pipe a video to any command line on the computer, such as
-ffmpeg.  This can be especially useful with raw video files.  Next
-is an example usage.
-
-\begin{enumerate}
-\item on a terminal window create a named pipe file, for example:
-\begin{lstlisting}[style=sh]
-mknod /tmp/piper.yuv p
-\end{lstlisting} load your video and do your editing
-\item set up your Render (\texttt{Shift-R}), you can choose a raw
-  format such as \textit{yuv} or \textit{rgb}
-\item for the filename \textit{Select a file to render to}, use the
-  named pipe as created in step 1 (\texttt{/tmp/piper.yuv})
-\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}[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}[style=sh]
-ffmpeg -f yuv4mpegpipe -i /tmp/piper.y4m -vcodec libx264 /tmp/test.mp4
-\end{lstlisting}
-
-\subsection{Faststart Option for MOV type files}%
-\label{sub:faststart_option_mov0}
-
-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.
-
 %%% Local Variables:
 %%% mode: latex
 %%% TeX-master: "../CinelerraGG_Manual"