Prevent conflict with lower and upper case for outlier cases
[goodguy/cin-manual-latex.git] / parts / Rendering.tex
index ca711f8ba6742adcd650a024c6918b9b83353161..e221c5778f0907ace8ad905c10c926ffde5b9379 100644 (file)
@@ -2,7 +2,7 @@
 \label{cha:rendering}
 \index{rendering}
 
-Rendering takes a section of the timeline \index{active region}, 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
@@ -13,7 +13,8 @@ in/out points are set, the affected region is rendered.  When no
 region is highlighted, everything after the insertion point is
 rendered.  By positioning the insertion point at the beginning of a
 track and unsetting all in/out points, the entire track is rendered.
-But you also have the choice to render \textit{one frame}.
+But you also have the choice to render \textit{one frame}. Reminder,
+\CGG{} does not do remuxing without rendering - see \nameref{sec:transcode}.
 
 \section{Single File Rendering}%
 \label{sec:single_file_rendering}
@@ -110,7 +111,9 @@ Use the \textit{File} pulldown and select Render to start the render dialog
   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:] \index{insertion strategy} select an insertion mode from the
@@ -172,7 +175,9 @@ all parameter configurations.
        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.
+       legal formats.  Note that if you want a very specific Bitrate you must
+       make sure there is not conflicting parameter values set such as Quality
+       or CRF.
 \end{itemize}
 
 \noindent Some option files provide \textit{cin\_pix\_fmt} to
@@ -183,7 +188,7 @@ errors when the other provided parameters conflict with the
 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}
+specify the quality or CRF.\\ Example: \textit{cin\_bitrate=2000000}
 
 \paragraph{cin\_quality} If you specify the quality, you can not
 specify the bitrate.\\ Example: \textit{cin\_quality=7}
@@ -213,6 +218,8 @@ 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}
 
@@ -506,10 +513,12 @@ There are currently 6 specific variations within the ffmpeg (file format) / yout
 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}}
+       \begin{tabular}{lp{8cm}}
+               \hline
                sd.youtube & Standard Definition use with default audio/Opus stereo.youtube \\
                hd.youtube & High Definition “ “ \\
                uhd.youtube & Ultra High Definition “ “ \\
+               \hline
        \end{tabular}
 \end{center}
 
@@ -518,10 +527,12 @@ For more details and options on VP9, see: {\small\url{https://developers.google.
 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}}
+       \begin{tabular}{lp{8cm}}
+               \hline
                sd\_h264.youtube & Standard Definition – must change to audio stereo\_with\_h264.youtube \\
                hd\_h264.youtube & High Definition -          “ “ \\
                uhd\_u264.youtube & Ultra High Definition - “ “ \\
+               \hline
        \end{tabular}
 \end{center}
 
@@ -559,11 +570,13 @@ Bitrate (bit rate)
 
 \textit{mode:}
 
-\begin{tabular}{p{6cm} p{10cm}}
+\begin{tabular}{p{6cm}p{10cm}}
+       \hline
        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\\
+       \hline
 \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:
@@ -571,11 +584,13 @@ CQ mode is recommended for file-based video (as opposed to streaming). The follo
 \textit{FFMpeg}:
 
 \begin{center}
-       \begin{tabular}{{p{4cm} p{10cm}}}
+       \begin{tabular}{p{4cm}p{10cm}}
+               \hline
                -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.\\
+               \hline
        \end{tabular}
 \end{center}
 
@@ -671,6 +686,39 @@ video/audio wrenches and choose \textit{faststart\_h264}.  With the
 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. There is also support for DPX sequences, but only in read and without rendering presets. 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}
@@ -960,7 +1008,9 @@ the \texttt{Preferences} window. It has one interactive function
 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}).
+(figure~\ref{fig:back-ren02}).  Because this creates a very large number 
+of files, a Shell Command script is available to delete them if in the
+default location.
 
 \begin{figure}[htpb] \centering
   \includegraphics[width=1.0\linewidth]{back-ren02.png}
@@ -998,12 +1048,28 @@ 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 .  Because using background
+  rendering creates a voluminous number of brender numbered files,
+  a Shell Command script is available to delete them if they are
+  in the default /tmp/brender format.
 \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}
@@ -1048,15 +1114,18 @@ Let's take the example of a network with 2 PCs: the master and the client. On th
     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 & 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 \\
+    \begin{tabular}{lllc}
+       \hline
+       On & Hostname & Port & Framerate\\
+        \hline
+        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 \\
+        \hline
     \end{tabular}
   \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.