proxy examples from IgorB and a few other changes
[goodguy/cin-manual-latex.git] / parts / Advanced.tex
index 332852dcd6870f830d8e738cddbf4c63fc78ac62..723f67c8e54df7f47152027bdfcd2c24bb347248 100644 (file)
@@ -3,11 +3,19 @@
 
 \section{Proxy}%
 \label{sec:proxy}
+\index{proxy}
 
-Working with videos that have large image geometry can greatly impede editing.  Instead you can substitute \textit{proxies} which will create smaller video image files from the original file that can then be edited more quickly.   When you are done working on this smaller scale, you will need to bring up the Proxy settings menu again, and change the Scale factor back to the Original size so that all of your edits/work take affect on that original higher quality video on the timeline.  
+Proxies was introduced to allow for a smoother timeline experience. Full HD and everything from 4K size up are usually very large in file size. In addition, some commonly used codecs (e.g. h264/5) are very compressed and interframe type, so they are more stressful for timeline playback. These files cause performance problems on weaker PCs. As a solution the developers have introduced proxies to reduce the file size. Reduced means to minimize the resolution/dimension, as usually not the full resolution is needed, because the compositor usually takes only a fraction of the computer screen. Therefore the scaling factor, which indicates how much the original resolution should be reduced. 
+There is also the \textit{proxy 1:1} \index{proxy!1:1} that maintains the original resolution but still allows you to act on the codec (lowering the bit rate, for example). See also next section: \ref{sec:transcode}.
+When rendering, the original setting will be used to avoid loss of image quality.  
 
-To use this feature, select \texttt{Settings $\rightarrow$ Proxy settings} and change the Scale factor from Original size to your downsized choice.  You can choose ffmpeg as the File Format and a choice of various codecs associated with that.  A good choice is the default of mpeg which can usually be quite fast.  In addition, to modify values for that codec, click on the wrench icon.  When you have completed your choices, just click OK, and then the video tracks will be rendered. This may take some time, but previous proxy renders will be reused.  
-The proxy videos will be added to your assets in a separate Proxy folder, and the video track edits will use the proxies.
+To use the proxy in a classic way, i.e. as a scaling, select \texttt{Settings $\rightarrow$ Proxy settings} and change the Scale factor from Original size to your downsized choice.  You can choose ffmpeg as the File Format \index{file format} and a choice of various codecs associated with that.  A good choice is the default of mpeg which can usually be quite fast.  In addition, to modify values for that codec, click on the wrench icon.
+
+We can use the \textit{Proxy 1:1} in two ways: setting "1" as \textit{Scale factor}, or check the \textit{Rescaled to project size (FFMPEG only)}  button. In this mode we don't have scaling, i.e. downsize, but only variations of the codec parameters that allow to maintain the original resolution. The advantage is that you can use filters that require the original size to work well. NB: if we set any scaling, by activating the \textit{Rescaled to project size (FFMPEG only)} button we automatically lose scaling and enter Proxy 1:1 mode.
+
+When you have completed your choices, just click OK, and then the video tracks will be rendered. This may take some time, but previous proxy renders will be reused.
+
+The proxy videos will be added to your assets in a separate Proxy folder \index{proxy!folder}, and the video track edits will use the proxies.
 The assets in both the Media folder and Proxy folder will look proxied when dragged to the Viewer although the scale may be different.
 Proxy downsizing renders all loaded tracks, but only work on the $1^{st}$ video layer of any multi-layer media.  Rendered proxy media is saved in the same directory as the original media.
 However, if you proxy your session, the clips do not get proxied to the Proxy folder, but if you Drag and Drop the clip from the Clip folder to the Viewer or the Timeline, you will see that it too is proxied.  
@@ -16,49 +24,47 @@ And you can save your project either as proxied or not.
 
 Because Proxy works on the original media in all circumstances, when you resize the
 media in the Resources window, it does not actually resize the media but puts it in
-a "buffer" in that format. This might lead to some confusion for the user who
+a \textit{buffer} in that format. This might lead to some confusion for the user who
 expects this resizing to be maintained when disabling Proxy for that media. However,
 that does not happen because the resize is only in a buffer and not in the original
-media. This result is different than in the case of media "edits", like cuts or
-adding plugins because this information is not in a buffer but rather part of the
-copy "Editing Decision List" (EDL).
+media. This result is different than in the case of media \textit{edits}, like cuts or adding plugins because this information is not in a buffer but rather part of the
+copy \textit{Editing Decision List} (EDL).
 
-You can also nest clips while in a proxied state, but you can not drag the proxied nested clips
-to the viewer or the timeline.
+You can also nest clips while in a proxied state, but you can not drag the proxied nested clips to the viewer or the timeline.
 If you create proxies for Nested clips they will be saved in \texttt{\$HOME/Videos} unless you modify that in
 \texttt{Settings $\rightarrow$ Preferences, Interface} tab, \textit{Nested Proxy Path}. 
 
-There are two ways that the proxy files can be used, with or without input scaling. When the proxy is done without rescaling, the Mask, Camera and Projector automations are re-scaled accordingly. In this situation, the entire project will be re-sized so that the session is in the resized geometry.  Not all plugins are useful when the project is rescaled, because the keyframe data must be in the original geometry.  In this case, you can use the rescaler, by enabling \textit{Use scaler (FFMPEG only)}. This has the added advantage that the project size does not change and the proxy media is down-scaled as usual and up-scaled on read-in, which means the project editing is done in full scale.   Since decoding is done on smaller video, there is a time savings, but all rendering is done full scale.  The main reason for using \textit{scaler} is that it does not change the image coordinate data, so that automation and plugin parameters will be in the original project geometry.   This is not as fast as the first option, but is a performance gain, and may be needed if you are using plugins that need coordinate data such as the Title plugin.  As noted, the scaler only works on ffmpeg video formats.
+Let's examine in detail how Proxy and Proxy 1:1 modes work: when the proxy is done with downsize, the Mask, Camera and Projector automations are scaled accordingly. In this situation, the entire project will be re-sized so that the session is in the resized geometry. Not all plugins are useful when the project is scaled, because the keyframe data must be in the original geometry.  In this case, you can use the il Proxy 1:1, by enabling \textit{Scale factor}=1. This has the added advantage that the project size does not change. The main reason for using \textit{Proxy 1:1} is that it does not change the image coordinate data, so that automation and plugin parameters will be in the original project geometry (e.g. Title plugin).
 
-In the upper right hand corner of the main window, there is a toggle button to easily switch back and forth when you have a proxied file on the timeline.  The icon is to the left of the FF icon.  It will have the letter “P” as the icon for Proxy or if \textit{Using Scaler}, the letter “S”. \quad \includegraphics[height=\baselineskip]{proxy-01.png} \quad This quick switch is especially useful when editing and you need to see a better image temporarily.
+In the upper right hand corner of the main window, there is a toggle button to easily switch back and forth when you have a proxied file on the timeline.  The icon is to the left of the FF icon.  It will have the letter “Ps” as the icon for Proxy. \quad \includegraphics[height=\baselineskip]{proxy-01.png} \quad This quick switch is especially useful when editing and you need to see a better image temporarily.
+The "P" is green when the proxy is active and red when it is disabled. The "s" is white when in \textit{Proxy 1:1} mode and red when downsize.
 
 \begin{figure}[htpb]
        \centering
-       \includegraphics[width=0.5\linewidth]{proxy-02.png}
+       \includegraphics[width=0.8\linewidth]{proxy-02.png}
        \caption{Proxy settings dialog}
        \label{fig:proxy-02}
 \end{figure}
 
-Screencast in figure~\ref{fig:proxy-02} shows the Use scaler checked so you can still use plugins and the original project size is kept.  The Scale factor pull-down gives you available size options.  Note the new media dimensions shown (partially covered).  If the size is an odd number, 1 is added to make the dimensions both even numbers.
+Screencast in figure~\ref{fig:proxy-02} shows the use scaled checked so you can still use plugins and the original project size is kept.  The Scale factor pull-down gives you available size options.  Note the new media dimensions shown (partially covered).  If the size is an odd number, 1 is added to make the dimensions both even numbers.
 
-In the case of the scaler checkbox, it will retain that setting for ease of use.
+To go back to the original media for good, simply take the Scale factor to Off. However, if we decide to reuse the proxies, these, which have not been deleted from the Hard Disk but only from the project, will still be used without making new rendering. To completely cancel the created proxies we will have to delete them manually from the Hard Disk.
 
-There is also a convenient \textit{Beep on done volume} dial included so that you can work on other tasks until there is an audible notify of completion.  The default volume is set to 0 for no audible notify.
+There is also a convenient \textit{Beep on done volume} bar included so that you can work on other tasks until there is an audible notify of completion.  The default volume is set to 0 for no audible notify.
 
-A good choice for proxy settings with 1080p source video is:
+A good choice for classic proxy settings with 1080p source video is:
 
 \begin{lstlisting}[numbers=none]
 Scale Factor:  1/4
-Use Scaler:    unchecked
 File Format:   FFMPEG - mpeg
 Video Preset:
 Compression:   mpeg.mpeg
-Bitrate:       1800000
+Bitrate:       2000000
 Quality:       -1
 Pixels:                yuv420p
 \end{lstlisting}
 
-If you get errors for some videos, such as those with strange variable bit rate or some types of files made on a smartphone, a usually reliable alternative is to change the following parameters:
+If you get errors for some videos, such as those with strange variable bit rate or some types of files made on a smartphone, an usually reliable alternative is to change the following parameters:
 
 \begin{lstlisting}[numbers=none]
 File Format:   FFMPEG - mov
@@ -66,21 +72,85 @@ Video Preset:
 Compression:   mov.mov
 \end{lstlisting}
 
-Or if you want small files with high image quality, a File Format of m2ts is optimal.  For example a 1 GB file can be reduced to 50 MB with scale $\frac{1}{2}$. 
+Or if you want small files with high image quality, a File Format of \texttt{m2ts} is optimal.  For example a 1 GB file can be reduced to 50 MB with scale $\frac{1}{2}$. 
+
+Checking the \textit{Creation of proxy on media loading} results in any additional media loads to be automatically proxy scaled.  However, single frame media such as PNG or JPEG \textit{stills}, can not be scaled to \textit{stream} media.  If this type of media exists, you should \textit{Proxy 1:1}.
 
-Checking the \textit{Auto proxy/scale media loads} results in any additional media loads to be automatically proxy scaled.  However, single frame media such as PNG or JPEG \textit{stills}, can not be scaled to \textit{stream} media.  If this type of media exists, you should \textit{use scaler}.
+If you get error messages \index{proxy!error} when creating proxies, check the Video wrench settings.  These usually default to values that are expected to work correctly for the \textit{File Format} and codec you selected but they can be changed and may result in errors.  If you get an error message of \textit{check\_frame\_rate failed} followed by \textit{Error making proxy} in the popup Errors window, do just that and check the Frame rate value by going to the Resources window, Media folder, and use the right mouse button for the Info option for that specific media in question.  You can change the frame rate in this window to a more codec acceptable value.  Different codecs may have different legal values.
 
-If you get error messages when creating proxies, check the Video wrench settings.  These usually default to values that are expected to work correctly for the \textit{File Format} and codec you selected but they can be changed and may result in errors.  If you get an error message of \textit{check\_frame\_rate failed} followed by \textit{Error making proxy} in the popup Errors window, do just that and check the Frame rate value by going to the Resources window, Media folder, and use the right mouse button for the Info option for that specific media in question.  You can change the frame rate in this window to a more codec acceptable value.  Different codecs may have different legal values.
+More specific information on which plugins need to use \textit{Proxy 1:1}. is provided here next. If the keyframe data uses coordinate data that is absolute, then the Factor scale = 1 should be used.  If the data is normalized (like always $0-100\%$) then the proxy can be done with downsize (i.e. classic \textit{Proxy}).  The session geometry format, shown in \texttt{Settings $\rightarrow$ Format} as $width \times height$, is changed if scale factor $\neq$ 1 is used to cause all of the data to be in the reduced format.  If this affects the plugin operation, then \textit{Proxy 1:1} should be used.  Examples of plugins that need the \textit{Proxy 1:1} are: Title, AutoScale, Scale, ScaleRatio, and Translate.  Most others are safe to use with downsize.
 
-More specific information on which plugins need to use scaler is provided here next.  If the keyframe data uses coordinate data that is absolute, then the scaler should be used.  If the data is normalized (like always $0-100\%$) then the proxy can be done without the scaler.  The session geometry format, shown in \texttt{Settings $\rightarrow$ Format} as $width \times height$, is changed if the scaler is not used to cause all of the data to be in the reduced format.  If this affects the plugin operation, then scaler should be used.  Examples of plugins that need the scaler are: Title, AutoScale, Scale, ScaleRatio, and Translate.  Most others are safe to use without scaling.
+\subsection{Proxies with Alpha channel}%
+\label{sub:proxies_alpha_channel}
+
+Next are some examples of tested and working configurations that maintain the alpha channel:
+
+\begin{lstlisting}[numbers=none]
+Proxy #1
+       Scale factor: 1/4
+       Rescaled to project size (FFMEG only) = unchecked
+       File Format: FFMPEG | qt
+       Video Preset-->
+               Compression: png.qt
+               Bitrate: 0
+               Quality: -1
+               Pixels: rgba (or rgba64be)
+       
+       
+Proxy #2
+       Scale factor: 1/4
+       Rescaled to project size (FFMEG only) = unchecked
+       File Format: FFMPEG | qt
+       Video Preset-->
+               Compression: magicyuv.qt
+               Bitrate: 0
+               Quality: -1
+               Pixels: yuva444p
+       
+       
+Proxy #3
+       Scale factor: 1/4
+       Rescaled to project size (FFMEG only) = unchecked
+       File Format: FFMPEG | qt
+       Video Preset-->
+               Compression: openjpeg.qt
+               Bitrate: 0
+               Quality: -1
+               Pixels: yuva420p
+       
+       
+Proxy #4
+       Scale factor: 1/4
+       Rescaled to project size (FFMEG only) = unchecked
+       File Format: FFMPEG | pro
+       Video Preset-->
+               Compression: prores_4444.pro
+               prores_4444xq.pro
+               Bitrate: 0
+               Quality: -1
+               Pixels: yuva444p10le
+       
+       
+Proxy #5
+       Scale factor: 1/4
+       Rescaled to project size (FFMEG only) = unchecked
+       File Format: FFMPEG | mkv
+       Video Preset-->
+               Compression: user_ffvhuff.mkv
+               Bitrate: 0
+               Quality: -1
+               Pixels: yuva4--p
+                                  yuva4--p--le
+\end{lstlisting}
 
 \section{Transcode}%
 \label{sec:transcode}
+\index{transcode}
 
-Transcode, an option under the \textit{Settings} pulldown right next to the Proxy settings option, is a type of full resolution \textbf{1:1 Proxy}.
+Transcode, an option under the \textit{Settings} pulldown right next to the Proxy settings option, is a type of full resolution \textbf{1:1 Proxy} \index{proxy!1:1}.
 The process of transcoding works directly from the resource; it is independent of the timeline. 
 All of the loaded asset media will be converted, that is, rendered in the selected format and loaded onto the timeline. 
-Menu choices besides the usual File Format and File Type include: \textit{Tag suffix} (to add to media filename), \textit{Remove originals from project}, \textit{Into Nested Proxy directory} (an option to have the file saved here instead of the location of the original media), and \textit{Beep on done} volume.
+Menu choices besides the usual File Format \index{file format} and File Type include: \textit{Tag suffix} (to add to media filename), \textit{Remove originals from project}, \textit{Into Nested Proxy directory} (an option to have the file saved here instead of the location of the original media), and \textit{Beep on done} volume.
 
 The settings of the project have an effect, for example the dimensions are taken into account. The resulting files are also larger than if they were created directly with ffmpeg.
 Transcode works for videos with or without audio and even single frame files, like png's.
@@ -89,13 +159,16 @@ Multiple stream media will only transcode the first stream (this would be like t
 You will get an error message if you already have a transcoded file in the selected format with the same suffix name and try to transcode it again with a different selection made -- you will have to delete that file first. An example would be
 an already converted file that has both video and audio and now you request video only. 
 
-The BIGGEST gain from using this is if you have media that is not \textit{seekable}, that is, you can play it from the beginning but can not move to another spot and have the audio or video play correctly. A video file with no keyframes makes seeking next to impossible, but then a Transcode generally adds these keyframes. 
+The BIGGEST gain from using this is if you have media that is not \textit{seekable} \index{seek}, that is, you can play it from the beginning but can not move to another spot and have the audio or video play correctly. A video file with no keyframes makes seeking next to impossible, but then a Transcode generally adds these keyframes. This is particularly useful for the \texttt{mkv} container, which often has seek problems.
+
+Another important function of Transcode is being able to convert the project's media into a high-quality \textit{mezzanine} codec \index{mezzanine codec} (sometimes also called \textit{intermediate} codec \index{digital intermediate}), which makes timeline work lighter and more efficient. In fact such codecs (ffv1, ProRes, DNxHD, OpenEXR, huffyuv, etc) are generally little or not at all compressed; the type of compression is intraframe --more suitable for editing, and the image quality (4:2:2 up; 10-bit color up; floating point; etc) is suitable for \textit{Color Correction}, \textit{Chroma Key} and \textit{Rotoscoping}. The use of mezzanine codecs leads to very large files, so you need to make sure you have enough storage space.
 
 
 \section{OpenEDL}%
 \label{sec:openedl}
+\index{openEDL}
 
-To edit EDL that is included with your project as Clips, Nested
+To edit EDL \index{EDL} that is included with your project as Clips, Nested
 Clips, Referenced File, or Xml you can use the option \textit{Open
        EDL} in the Resources window for the highlighted media.  Then
 with a simple button click you can return to your main timeline project.
@@ -104,13 +177,13 @@ plugins added to it before it was nested, you can edit those plugin
 parameter values. Previously to make any changes to these types of
 EDL you had to remake the whole clip from scratch.  The program is 
 actually "opening" the file as it currently exists for that particular
-media so that it can be edited separately from the project EDL.  
+media so that it can be edited separately from the project EDL. In other NLEs the term \textit{sub-timeline} is used.
 
-Here is how this works. In the Clip or Media folder or on a timeline
+Here is how this works. In the Clip \index{clip !older} or Media folder \index{media folder} or on a timeline
 EDL edit, the option \textit{Open EDL} for the highlighted clip or
 nested clip is available so that when you choose this option, that
 EDL will be brought up on the timeline superseding the current EDL
-that exists on the timeline.  Now, once the clip is open on the
+that exists on the timeline \index{timeline}.  Now, once the clip is open on the
 timeline, you can edit it however you want. The previous timeline
 EDL is \textit{pushed onto a stack} so it can be recalled by
 \textit{popping the stack} with a click of the left mouse button in
@@ -146,7 +219,7 @@ An example of a typical set of steps to follow is:
 You can follow the same steps as above by first using the option
 \textit{Nest to media} in the Clip folder which nests the clip and
 moves it out of the Clip folder to the Media folder.  Then use
-\textit{Open EDL} on the Nested EDL in the media folder.  When you
+\textit{Open EDL} on the Nested EDL \index{nested EDL} in the media folder.  When you
 Open EDL and edit the changes, those changes will take affect on any
 and all occurrences of that nested clip on the current and/or
 original timeline. The option to unnest that clip and put that back
@@ -205,7 +278,7 @@ so, highlight the clip name in Resources, click on Info and type in
 a new name.
 
 For additional safety, the \textit{Open EDL} feature includes
-additional backup capabilities. Automatically \CGG{} saves a backup
+additional backup capabilities. Automatically \CGG{} saves a backup \index{backup}
 when certain changes are made or you can always use the shortcut `b'
 to do one yourself, although keep in mind it will be overwritten
 whenever \CGG{} wants to do another backup.  Now there is a shortcut
@@ -229,8 +302,9 @@ See a real-world workflow at appendix \nameref{sec:workflow_openedl_nested_clips
 
 \section{File by Reference}%
 \label{sec:file_by_reference}
+\index{file by reference}
 
-It is sometimes handy to have EDL assets not as a copy, but as a
+It is sometimes handy to have EDL \index{EDL} assets not as a copy, but as a
 reference that is automatically updated into your project.  Suppose
 you have several short videos that at the end have the same credits
 which include the current year such as 2019.  But now it is 2020 and
@@ -247,7 +321,7 @@ global master project.  It is for \textbf{advanced usage only}.
 
 Up until the addition of this feature, \CGG{} has always used copies
 and no direct reference in order to ensure original data is never
-compromised.  In the usual case, subprojects as xmls are copied into
+compromised (No Destructive editing).  In the usual case, subprojects as xmls are copied into
 a master project where subprojects had been inserted, so that if you
 change something in a subproject or delete a subproject, it would
 have no affect on the master project.  But now with \textit{File by
@@ -302,11 +376,12 @@ Here is a step by step example of how you can use \textit{File by
 
 \section{Trimming}%
 \label{sec:trimming}
+\index{trim}
 
 With some edits on the timeline it is possible to do trimming. By
-trimming you shrink or grow the edit boundaries by dragging them. In
+trimming you shrink or grow the edit boundaries (\textit{head} or \textit{tail}) by dragging them. In
 drag and drop mode or cut and paste mode, move the cursor over an
-edit boundary until it changes shape. The drag handle shows as a
+edit boundary until it changes shape. The drag handle \index{drag handles} shows as a
 left or right facing fat arrow when you cursor near the clip start
 or end.  If the cursor faces left, the dragging operation affects
 the beginning of the edit. If the cursor faces right, the dragging
@@ -346,7 +421,7 @@ A description of the fundamental/common terminology for choices
 follows.
 
 \begin{description}
-       \item[All Edits (ripple)] shorten or lengthen the start or end
+       \item[All Edits (ripple)] \index{trim!ripple} shorten or lengthen the start or end
        of a single piece of media while moving all media to the right of
        that clip up or down on the timeline correspondingly.  Timeline
        duration is modified.  In a drag \textit{All Edits} operation, the
@@ -356,25 +431,25 @@ follows.
        it forward or cuts data from the end of the edit if you move it
        backward. All the following edits shift. If you drag the end of the
        edit past the start of the edit, the edit is deleted.
-       \item[One Edit (roll)] move the in and out point of a single
+       \item[One Edit (roll)] \index{trim!roll} move the in and out point of a single
        clip without changing the timeline duration. In a drag \textit{One
                Edit} operation, nothing is cut or pasted. If you move the beginning
        or end of the edit forward, the source reference in the edit shifts
        forward. If you move the beginning or end of the edit backward, the
        source reference shifts backward. The edit remains in the same spot
        in the timeline but the source shifts.
-       \item[Src Only (slip)] move the in and out point of a single
+       \item[Src Only (slip)] \index{trim!slip} move the in and out point of a single
        clip without changing the timeline duration. In a drag \textit{Src
                Only} operation, nothing is cut or pasted. If you move the beginning
        or end of the edit forward, the source reference in the edit shifts
        forward. If you move the beginning or end of the edit backward, the
        source reference shifts backward. The edit remains in the same spot
        in the timeline but the source shifts.
-       \item[Slide] a single clip is moved but retains its current in
+       \item[Slide] \index{trim!slide} a single clip is moved but retains its current in
        and out point; however the out point of the clip to the left changes
        and the in point of the clip to the right also changes.  Timeline
        duration remains the same.
-       \item[Edge Left/Right] moves the edge of the clips.
+       \item[Edge Left/Right] \index{trim!edge} moves the edge of the clips.
        \item[No effect] no changes are made.  You might want to use
        this choice to prevent accidental movements.
 \end{description}
@@ -444,7 +519,7 @@ options (figure~\ref{fig:trim-color}).
        \label{fig:trim-color}
 \end{figure}
 
-\paragraph{How to do a J-cut or L-cut} A J-cut is a split edit film
+\paragraph{How to do a J-cut or L-cut} A J-cut \index{J-cut/L-cut} is a split edit film
 editing technique in which the audio from a following scene overlaps
 the picture from the preceding scene, so that the audio portion of
 the later scene starts playing before its picture as a lead-in to
@@ -469,7 +544,7 @@ creates an L-cut.
 
 \subsection{Split View in Compositor Using the Drag Handle with Trim}%
 \label{sub:split_view_compositor_using_drag_trim}
-
+\index{trim!split view}
 The Trim Feature using the drag handle provides some good ways to
 view your video while editing.  The playback position in the
 compositor is updated live and the view in the compositor can be
@@ -537,9 +612,11 @@ using \textit{drag handles} at the boundary between the edits
 
 \section{Nesting clips and assets}%
 \label{sec:nesting_clips_and_assets}
+\index{nested EDL}
 
 \subsection{Nested Assets}%
 \label{sub:nested_assets}
+\index{nested assets}
 
 A nested asset is an EDL session that
 embeds an existing EDL session, all tracks, all plugins, editing,
@@ -574,6 +651,7 @@ periodically delete any index files which are no longer in use.
 
 \subsection{Nested Clips}%
 \label{sub:nested_clips}
+\index{nested clips}
 
  It is also possible to create
 \textit{clips} and convert them to \textit{nested edl}.  This is
@@ -607,7 +685,7 @@ tab, Nested Proxy Path.
 
 \begin{itemize}
        \item The creation of the nested clip is based on the settings in \texttt{Settings $\rightarrow$ Format}. Be sure that the number of audio tracks and channels is the same as we want to have in the nested clip. In addition, it is better to make each audio track independent from the others (which could be linked in more than one channel) using the option: \texttt{Audio $\rightarrow$ Map 1:1}
-       \item You can do any editing on the nested clip once it is loaded to the timeline. For example we can start an OpenEDL session to make the changes. Once out of the OpenEDL session it may be that the changes made are not visible in the original nested clip. You can fix this by doing RMB on the nested clip in the \textit{Resources/Media} window and choosing \texttt{Rebuild index}. This process may take some time depending on the size of
+       \item You can do any editing on the nested clip once it is loaded to the timeline. For example we can start an OpenEDL \index{openEDL} session to make the changes. Once out of the OpenEDL session it may be that the changes made are not visible in the original nested clip. You can fix this by doing RMB on the nested clip in the \textit{Resources/Media} window and choosing \texttt{Rebuild index}. This process may take some time depending on the size of
 the media; because of the additional time required to do this, it is not done automatically in order to allow the user to make the decision as to when they are done editing enough and need to see the exact results
 in order to save time.
        \item Because of the way the timeline thumbnails are displayed, after editing using OpenEDL of a
@@ -645,6 +723,8 @@ capability of nesting.
 
 \section{Multi-Camera / Mixer}%
 \label{sec:multicamera_mixer}
+\index{multi-camera}
+\index{mixers}
 
 Use the Mixer Viewer to see multiple media playing simultaneously in re-sizable mini-viewers.  This can be used in various ways and is useful to edit videos shot by multiple cameras from different viewpoints that were simultaneously recorded in order to create a single good video.  Everything will have to be initially synced so you can decide which one of the camera angles is best suited at any time. 
 
@@ -667,9 +747,9 @@ Figure~\ref{fig:multicam01} shows 9 media sources in the left corner, the compos
        \item From the \textit{File} pulldown, create a \textit{New project} with the desired format for Audio and Video output (or you can just use the default).
        \item \texttt{File $\rightarrow$ Load} the media files you want to work with using \textit{Create new resources only}.
        \item In the Resources window, with  the Media folder, highlight the list of media you want to \textit{Mix}. This is done using a ctrl or shift mouse button press as you would in a standard listbox selection.
-       \item Right click the mouse on the media selection and choose \textit{open mixers}. This opens multiple mixer viewer windows, one for each media item that was highlighted.  You can
+       \item Right click the mouse on the media selection and choose \textit{open mixers} \index{mixers!open mixers}. This opens multiple mixer viewer \index{mixers!viewer} windows, one for each media item that was highlighted.  You can
        do them 1 at a time instead.  This also adds the source media tracks to the main window.
-       \item Now use the timeline to play and you will see all viewers/cameras playing.  Stop when you get to the
+       \item Now use the timeline \index{timeline} to play and you will see all viewers/cameras playing.  Stop when you get to the
        end of the \textit{good} camera playback.
        \item Simply double click the \textit{good} mixer viewer and from where you first started playing to the playback insertion pointer is the source section, which will be pasted in the destination video/audio tracks at the top of the new project.
        \item Repeat steps 6-7.  Start playing again, stop when you want, double click the desired mini-viewer!
@@ -695,7 +775,7 @@ Figure~\ref{fig:multicam01} shows 9 media sources in the left corner, the compos
 \subsubsection*{But, I want to use only the first set of audio tracks\dots}%
 \label{ssub:but_use_only_first_audio}
 
-There are many cases where you may want to compose using media from several different tracks while using the the same audio tracks as associated from a specific viewer.  Since mixer source tracks can be updated any time by using a mixer toggle, this makes it possible to do this.  
+There are many cases where you may want to compose using media from several different tracks while using the the same audio tracks as associated from a specific viewer.  Since mixer source tracks can be updated any time by using a mixer toggle \index{mixers!toggle}, this makes it possible to do this.  
 
 Procedure to update the mixer audio source track list:
 
@@ -716,7 +796,7 @@ When you double click a mixer viewer window, it operates an \textit{overwrite} p
        \item \textit{Dst tracks} should be playable and armed in the main window patchbay gui.
 \end{itemize}
 
-Each mixer viewer maintains a list of the tracks which will be used as src. This list is made visible selecting the window with the left mouse button.  When the mixer viewer is selected, a highlight is drawn around the media image.  All track patchbay \textit{mixer} toggles are updated to reflect the src tracks included in the selected viewer src track list. The track patchbay toggles can be used to manage the list.
+Each mixer viewer maintains a list of the tracks which will be used as src. This list is made visible selecting the window with the left mouse button.  When the mixer viewer is selected, a highlight is drawn around the media image.  All track patchbay \textit{mixer} toggles are updated to reflect the src tracks included in the selected viewer src track list. The \textit{play track} patchbay toggles can be used to manage the list.
 
 \begin{itemize}[noitemsep]
        \item \textit{Turning on} a toggle (pointing up) includes the track in the src track list.
@@ -746,7 +826,7 @@ The mixer viewer configuration is saved with the session data.  When a saved ses
 \subsubsection*{Using Proxy with \textit{Open Mixers}}%
 \label{ssub:using_proxy_open_mixers}
 
-The best way to use proxy with your multiple cameras is to follow the steps below:
+The best way to use proxy \index{proxy} with your multiple cameras is to follow the steps below:
 
 \begin{enumerate}
        \item Load media with insertion strategy of \textit{create resources only}.
@@ -755,7 +835,15 @@ The best way to use proxy with your multiple cameras is to follow the steps belo
        \item Choose the size and other options you want and click the checkmark OK. If you choose the option \textit{Beep when done} you will hear a short beep if all media is already proxied or a longer beep when all proxies have been created.
        \item When your editing is complete, use \textit{Settings} pulldown and proxy to \textit{original size}.
 \end{enumerate}
-Instead of Open Mixers, you can Insert Mixers with new tracks at the timeline insertion point.
+Instead of Open Mixers, you can Insert Mixers \index{mixers!insert mixers} with new tracks at the timeline insertion point.
+
+\subsubsection*{Options available in the \textit{Mixer Windows}}%
+\label{ssub:options_available_with_mixers}
+\index{mixers!viewer RMB options}
+
+There are several options you will see in each Mixer viewer \index{mixers!viewer} that help with using them. These
+are shown in figure~\ref{fig:mixer-playable}. To use these, RMB in the desired mixer window,
+and choose one of the options as described here.
 
 \begin{figure}[htpb]
        \centering
@@ -764,17 +852,10 @@ Instead of Open Mixers, you can Insert Mixers with new tracks at the timeline in
        \label{fig:mixer-playable}
 \end{figure}
 
-\subsubsection*{Options available in the \textit{Mixer Windows}}%
-\label{ssub:options_available_with_mixers}
-
-There are several options you will see in each Mixer window that help with using them. These
-are shown in figure~\ref{fig:mixer-playable}. To use these, RMB in the desired mixer window,
-and choose one of the options as described here.
-
 \begin{enumerate}
        \item Fullscreen / Windowed - will bring up a fullscreen display of that window or revert to the original size.
        \item Resize Window - allows for resizing the window to a choice of different sizes.
-       \item Tile Mixers - makes it easy to get all of the mixers nicely tiled to a standard size.
+       \item Tile Mixers \index{mixers!tile mixers} - makes it easy to get all of the mixers nicely tiled to a standard size.
        This is also available in the \textit{Window} pulldown.
        \item Playable - enabled by default so that you will see a checkmark next to it in the 
        popup.  The benefit of making a mixer window not playable is to save cpu time. When a specific
@@ -791,9 +872,29 @@ and choose one of the options as described here.
        \end{verbatim}
 \end{enumerate}
 
+\subsubsection*{Mixers pulldown}%
+\label{ssub:mixers_pulldown}
+
+From Program windows menu we can access the \texttt{windows $\rightarrow$ mixers...} there are several entries available (see figure~\ref{fig:mixers-pulldown}):
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=0.5\linewidth]{mixers-pulldown.png}
+       \caption{Mixers...  pulldown}
+       \label{fig:mixers-pulldown}
+\end{figure}
+
+\begin{description}
+       \item[Mixer Viewer:] \index{mixers!viewer} (Shift-M) opens a new empty \textit{Mixer 1} window, which will then be associated with a track. We can open as many Mixers as we like.
+       \item[Drag Tile mixers:] \index{mixers!drag tile mixers} (Alt-t) the default size of a mixer window is related to the std size of the \textit{Viewer} window. If we want to modify it at our convenience, we can build a window of the desired size with the \textit{Drag Tile mixers} function and then automatically order our mixers within it with the right click of the mouse.
+       \item[Align mixers:] \index{mixers!align mixers} see \nameref{sub:audio_video_sync_waveform}
+       \item[Mix masters:] \index{mixers!mix masters} this feature makes it very easy to get into the multi-camera mixer mode after tracks have already been set up and edited. Before this addition, you could only \textit{Open Mixers} from original media assets in the \textit{Resources} window.
+       \item[Entries:] If the mixers of several sources have been opened, the entries of each assets will appear, useful for recalling a specific mixer window.
+\end{description}
 
 \subsection{Recover Mixer Windows}%
 \label{sub:recover_mixer_windows}
+\index{mixers!recover mixer window}
 
 It is a hazard that you might accidentally \textit{undo} (\texttt{z or Ctrl-z}) too far and lose your mixer windows.  Here are the steps to recover.  It is recommended that you make a backup of your project before performing the recovery steps just in case there are other problems.
 
@@ -821,13 +922,16 @@ Repeat steps 2 through 7 for each of the mixer viewers you need going down the p
 
 Sometimes the association does not stick initially.  If not, highlight the mixer viewer with the problem, change the mixer arrows to point up, and reassociate.
 
-\section{Audio/Video sync via Waveforms/Timecodes}%
+% For html, make sure using below is different from via in subsection
+\section{Audio/Video sync using Waveforms/Timecodes}%
 \label{sec:audio_video_sync}
+\index{audio/video sync}
 
 \subsection{Audio/Video sync via Waveform}%
 \label{sub:audio_video_sync_waveform}
+\index{audio/video sync via waveform}
 
-Multi-camera footage of a single event can have various shots starting and ending at different times. So when the footage start times are different, you can use the mixer audio to synchronize the clips on the timeline. The program algorithm attempts to find and align automatically the waveforms of the media.
+Multi-camera \index{multi-camera} footage of a single event can have various shots starting and ending at different times. So when the footage start times are different, you can use the mixer audio to synchronize the clips on the timeline. The program algorithm attempts to find and align automatically the waveforms of the media.
 
 Synchronizing multiple camera videos based on audio tracks can be done with \CGG{} easily enough with the \texttt{Window $\rightarrow$ Mixers$\dots$ $\rightarrow$  Align mixers} option.  Align mixers brings up a window displaying your mixers, the currently selected Master Track, and a list of all of the Audio Tracks (figure~\ref{fig:mixer-align01}).  There is a limit of 32 audio tracks per each mixer (that should be enough!)
 
@@ -931,6 +1035,8 @@ The Mixer with the master track generally does not move, everything else will be
 
 \subsection{Align Timecodes}%
 \label{sub:align_timecodes}
+\index{audio/video sync via timecodes}
+\index{align timecodes}
 
 Align Timecodes is especially useful in the case where you create video with multiple cameras capable of recording a timecode in the metadata of each file.  Let’s say we have recorded three videos at the same time at a concert with each camera set up at unique positions and at different angles.   All of the cameras start recording at various times but were synchronized with the same master clock (\textit{Timecode Sync Generator} or \textit{Jam Sync timecode}) so that the recordings are timestamped with that synchronized time.  For example, the 3 cameras have embedded metadata as follows: \quad \textbf{camera 1} = 00:00:00:01 \quad \textbf{camera 2} = 00:00:10:07 \quad \textbf{camera 3} = 00:00:17:22
 
@@ -941,7 +1047,7 @@ Align Timecodes is especially useful in the case where you create video with mul
        \label{fig:timecode-01}
 \end{figure}
 
-Timecode synchronization is performed by the program when you choose the option \textit{Align Timecodes} and works in 2 steps. The first automatic step is to locate the earliest timecode and the second step is to align the edits on the armed tracks using that time on the timeline. 
+Timecode synchronization is performed by the program when you choose the option \textit{Align Timecodes} and works in 2 steps. The first automatic step is to locate the earliest timecode \index{timecode} and the second step is to align the edits on the armed tracks using that time on the timeline. 
 
 When you load in the three files to different tracks, they'll be placed on a timeline that starts from $00:00:00:00$ as usual. But, by middle mouse clicking (MMB) on any of the video tracks, you can view the timecode embedded at that point in that file.
 
@@ -1041,3 +1147,56 @@ ffmpeg -i originalfile.mp4 -metadata timecode="14:36:08:29" -c copy newfile.mp4
 # where "-c copy" just copies the video/audio to the following output filename
 \end{lstlisting}
 
+\section{Subtitles}%
+\label{sec:subtitles}
+\index{subtitles}
+
+\CGG{} can create subtitles directly in the timeline with the Subtitle tool. Subtitles are added by using the main window pulldown   \texttt{File $\rightarrow$ Subtitle} (Alt-y)  which brings up a window allowing you to type the filename of a previously generated text file containing the desired words/lines, the script.  After entering the filename, click \texttt{Load} to read in your script.  By creating a script file ahead of time, it lets you easily add dialog that was already written out and carefully edited for spelling and proper grammar.
+
+The file must be plain text; a .srt or .sub can also be used, but only the text lines will be used and not the timecodes or comments. The format of the script/text input file has specific requirements as listed below:
+
+\begin{itemize}
+       \item Lines can be any length but they will be broken up to fit according to some criteria below.
+       \begin{itemize}
+               \item Running text used as script lines will be broken into multiple lines.
+               \item The target line length is 60 characters.
+               \item Punctuation may be flagged to create an early break.
+               \item Single carriage return ends an individual script line.
+               \item Double carriage return indicates the end of a entry and helps to keep track of where you are.
+       \end{itemize}
+       \item The "\textit{=}" sign in column 1 indicates a comment seen in the script text to assist you in location.
+       \item An "\textit{*}" at the beginning of the line is a comment and not a script line.
+       \item \textit{Whitespace} at either the beginning of a script line or the end will be removed.
+\end{itemize}
+
+Figure~\ref{fig:subtitle01} shows the Subtitle window you will see.
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=0.8\linewidth]{subtitle01.png}
+       \caption{Subtitle window}
+       \label{fig:subtitle01}
+\end{figure}
+
+To put the subtitles onto your media, first add a subtitle track via the pulldown  \texttt{Tracks $\rightarrow$ Add subttl} (Shit-Y). In the Subtitle window, note that there are 2 major textboxes.  There is the \textit{Script Text} textbox showing the current entry of text from your input file and there is the \textit{Line Text} textbox showing the currently active text.  In your subtitle track, select a timeline region (in/out or drag select with hairline cursor/highlight or via labels or the \textit{selection start/length/end time} textboxes in the Zoom Panel) to indicate the region where you want the active Line Text to be pasted.  Then click the \texttt{Paste} button in the Subtitle window to paste the line onto the subtitle track.  Silence will be added to the subtitle track in the places in the media where there are gaps.
+
+Editing in the Line Text box can be used to change the active script line. By double clicking the timeline over the subtitle track, you can reselect the active script line.  The subtitle text will be reloaded into the Line Text box and can be edited and re-pasted as the new active subtitle text.  You can also highlight multiple lines in the Script Text box and paste them (using the usual window paste methodology) into the Line Text box.  After pasting to the timeline, the Line Text box will be updated with the next script line.  In addition, if you triple click a line in the \textit{Script Text} box, it will automatically become the current line in the \textit{Line Text} box.
+
+When you are finished, before clicking on \textit{Save}, you can specify the output format using the \textit{Format} drop-down button. You can choose between the classic \texttt{.udvd} (micro DVD) and the more universally supported \texttt{.srt} (subrip) and \texttt{.sub} (subviewer). The next step is to provide a legitimate filname in the \textit{Path} box; your current directory will be used if only a filename but no directory path is supplied.  The filename used will automatically have a "--" after it followed by the \textit{track label} and then \textit{udvd/srt/sub} extension added; any extension in the filename will be removed..  If you click OK before saving, the subtitle script position is saved with the session.  This is convenient for continuing where you left off.
+
+To reposition the script, use the slider or tumbler buttons:
+
+\textit{Slider} bar to move through the text entries quickly. \\
+\textit{Prev} or \textit{Next} buttons to go to the previous or next script line.
+
+Figure~\ref{fig:subtitle02} shows what the pasted subtitle script looks like in a portion of the main window.
+
+\begin{figure}[htpb]
+       \centering
+       \includegraphics[width=1.0\linewidth]{subtitle02.png}
+       \caption{Subtitles on timeline}
+       \label{fig:subtitle02}
+\end{figure}
+
+
+