Credit Andrea - correct HDR references
[goodguy/cin-manual-latex.git] / parts / Rendering.tex
index abf4ef539b1a0e35487fbdeb8277eb01724e4e84..136efccec8336b043402621d75c1cd80c1ff2310 100644 (file)
@@ -5,8 +5,7 @@
 To configure the render according to your needs and to obtain the desired output, you will need to check on what your settings are for these three items:
 
 \begin{enumerate}
-       \item \textbf{Timeline:} is the main starting point because, in addition to determining the range of frames that will be rendered, it is on the timeline that plugins and other editing/compositing features are applied, which will then be included in the rendered file. While the rendering is in progress some frames from the timeline are displayed in the Compositor window, but it has no bearing on the
-actual rendering process.
+       \item \textbf{Timeline:} is the main starting point because, in addition to determining the range of frames that will be rendered, it is on the timeline that plugins and other editing features are applied, which will then be included in the rendered file. 
        \item \textbf{Set Format:} is used to configure the fps, aspect ratio and frame size of the project     (= output). This can be found in the pulldown: \texttt{Settings $\rightarrow$ Format... (Shift + F)}.
        See: \nameref{cha:project_and_media_attributes}.
        \item \textbf{Render dialog:} this is under: \texttt{File $\rightarrow$ Render... (Shift + R)}. It contains all the rendering options that are documented in this chapter.
@@ -73,8 +72,14 @@ Use the \textit{File} pulldown and select Render to start the render dialog
   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}
+  error message. There are several hardware related formats that will
+  only work on specific computers that support that hardware/software
+  implementation and will result in an error message if not available.
+  Pick a different one.  This is especially relevant if using an AppImage
+  which is generated on a computer with few extra hardware implemented
+  features.
+More details on differing parameters of the format 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
@@ -223,8 +228,13 @@ used.\\ Example: \textit{cin\_sample\_fmt=s16}
 \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
+Private Options, i.e.\ relating to specific muxing formats. You can list private options available in a encoder with:
+
+\begin{lstlisting}[style=sh]
+       $ /path/to/cin/thirdparty/ffmpeg-X.Y/ffmpeg -h encoder='libcodec' (i.e. libx265)
+\end{lstlisting}
+
+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}.
 
@@ -234,7 +244,7 @@ Render presets in \CGG{} should work Out Of the Box. You can still configure the
 \label{sec:some_specific_rendering}
 
 \noindent The next few pages relate to rendering for specific common
-cases.
+cases. Also see: \small\url{https://gist.github.com/dexeonify/ed31c7d85fcf7297719e2ec4740fafda})
 
 \subsection{FFmpeg Common H.264 Rendering}%
 \label{sub:ffmpeg_h264_rendering}
@@ -562,9 +572,9 @@ considered open source,
 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.
+Dailymotion, and other online video services. YouTube easy startup steps are documented above.
 
-YouTube easy startup steps are documented above.
+Note: For VP9 and AV1 presets, two pass rendering is recommended, which provides higher quality.
 
 Below is one of the \textsc{VP9} rendering options file with documentation for specifics:
 
@@ -1119,7 +1129,7 @@ Let's take the example of a network with 2 PCs: the master and the client. On th
   \begin{itemize}
   \item check the \textit{Use render farm} box;
   \item in the \textit{Hostname} box, keyin your hostname or ip
-    address such as 192.168.1.12 or \textit{localhost};
+    address such as 192.168.1.12 or \textit{localhost} when using a single computer with a multicore CPU;
   \item enter in a port number such as 401--405 (only a root user
     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
@@ -1143,7 +1153,8 @@ Let's take the example of a network with 2 PCs: the master and the client. On th
 \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 10650 cin -d 10651
+cin -d 10650 
+cin -d 10651
 ...
 cin -d 10654
 \end{lstlisting}
@@ -1225,7 +1236,9 @@ Below we describe the Performance tab for configuring a render farm
   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.
+  computers can be used to render the results.  You should adjust
+  this for each different video if your work varies considerably in
+  time so that each task time is not too small.
 
   To start, if you have computers of similar speed, a good number
   for \textit{Total jobs to create} is the number of computers
@@ -1267,6 +1280,21 @@ render farm session to restart with a good balance.
 {path_to_cinelerra}/cin -h  # displays some of the options.
 \end{lstlisting}
 
+\subsection{Multi-core CPU Setup (Localhost)}%
+\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 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; only localhost nodes. On the terminal you will need to 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 \textit{Project SMP cpus} in the \texttt{Settings $\rightarrow$ Preferences, Performance} tab to your CPU
+count.  Follow the steps outlined in ~\ref{sub:basic_steps_start_render_farm}
+but skip the step "For external network nodes".
+
 \subsection{Detailed Setup Description}%
 \label{sub:detailed_setup_description}
 \index{render farm!setup}
@@ -1293,7 +1321,7 @@ line before using.
   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
+\item[Create a shared filesystem and mount using NFS] (only for Network) 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.
@@ -1522,20 +1550,6 @@ want to bother setting up NFS for a shared disk.
   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 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; 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 \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}
@@ -1582,6 +1596,9 @@ list of items to check.
   \textit{reset rates} to start over for new framerates.
 \item If jobs are split in a key section on the timeline, you may
   wish to \textit{use labels} to prevent this.
+\item Adjust the \textit{Total jobs to create} for different videos that
+  are considerably different in size.  You should not create so 
+  many jobs that each one is very small.
 \item For testing purposes, you may want to start a client in the
   foreground using \texttt{-f} instead of \texttt{-d}.
 \item If one of the client computers is unavailable, check to see if