Andrea-s formats and codecs improvements
authorGood Guy <good1.2guy@gmail.com>
Sun, 21 Nov 2021 22:13:16 +0000 (15:13 -0700)
committerGood Guy <good1.2guy@gmail.com>
Sun, 21 Nov 2021 22:13:16 +0000 (15:13 -0700)
CinelerraGG_Manual.tex
parts/Quickstart.tex
parts/Rendering.tex

index 8089d99e1b1ed6364fb5f9e91f001abfff9330c8..68495006cb65ada9307f902b5c2ac0443dbf576a 100644 (file)
@@ -53,7 +53,6 @@ svgnames,
 \addappheadtotoc
 \begin{appendices}
 \include{parts/Quickstart}
-\include{parts/Formats}
 \include{parts/Developer}
 \include{parts/AuxilaryPrograms}
 \include{parts/Real-World}
index 346eaabc4857cc9a2efcb84cfa65f60bc3f37d2d..aaefc14e2f8d54955e60acb9a2e916e0068979b8 100644 (file)
@@ -276,3 +276,173 @@ At this time, or even earlier if you think you might make a mistake or if you ar
 \label{sub:play_your_new_media}
 
 The file you created in the Render step should now be playable.  You can test this in \CGG{} most easily by going to the Resource window in the lower right corner, clicking on the Media folder, and dragging and dropping the last video to the Viewer window.  There is a separate set of transport buttons on the bottom on that screen to use for playing.
+
+\section{Overview on Formats and Codecs}%
+\label{sec:overview_formats}
+\index{format}
+\index{codec}
+
+
+Here is an overview of the formats (also called containers) and codecs that are used in \CGG{}, by ffmpeg and the internal engine. Roughly speaking these are divided into uncompressed codecs (or codecs with \textit{Intraframe} compression, which can be lossy or lossless) and compressed codecs of \textit{Interframe} type (LongGOP, almost always with lossy compression). The All-I (intraframe) codecs are suitable for editing because a cut or other operation on the timeline corresponds to the exact frame on which you are operating. The interframe types use Groups of Pictures (GOP) and a cut or other operation is accurate (and requires no further calculation) only if it coincides with the beginning of the GOP, and not with an internal frame. There is also color compression: Color Space \textit{bit-depth} and \textit{Chroma-Subsampling} for YUV models. In addition, heavy compression requires the system to do more encoding/decoding work on the timeline. High quality codecs have high bit rates and bit depths but this also affects the performance of the system, not to mention the increased disk space usage. Some formats implement both audio and video streams, others audio only or video only.  
+
+\subsection{FFmpeg Video Formats}%
+\label{sec:FFmpeg_video}
+
+FFmpeg supports hundreds of codecs and formats. Some are proprietary and cannot be implemented in FFmpeg or can be voluntarily compiled as non-free; others are proprietary but their use is free; finally there are the Open formats/codecs, fully supported and well documented. We are only describing here a selection of the most well-known and most frequently used ones.
+
+\subsubsection{High Quality}
+\label{ssub:ffmpeg_video_high_quality}
+
+High quality formats are also called Mezzanine codecs, Digital Intermediate, Preservation codecs or Editing codecs. These  have no compression or intraframe lossless or near-lossless compression and are suitable for editing, post-processing, mastering and archiving. They are also used for the interchange of files between different programs. They take up a lot of disk space and require a powerful system.
+
+\begin{description}
+       \item[MKV] Open, highly configurable and extensively documented. Can have seeking problems. Belongs to the Matroska family.
+       \newline    Presets: \textit{ffv1, ffvyuv}
+       \item[MXF] Created by Avid. It is probably the best and most advanced container for editing.
+       \newline    Presets: \textit{DNxHR, ffv1, AVC\_Intra\_100}
+       \item[MOV] Created by Apple. It is a suitable format for editing because it organizes the files within the container into hierarchically structured \textit{atoms} described in a header. This brings simplicity and compatibility with various software and does not require continuous encoding/decoding in the timeline.
+       \newline    Presets: \textit{DNxHR, ffv1, CineformHD, huffyuv}
+       \item[PRO] Different extension, but it is still mov. Prores is proprietary and there are no official encoders except the original Adobe one. The engine used by ffmpeg is the result of reverse engineering and, according to Adobe, does not guarantee the same quality and performance of the original\protect\footnote{https://support.apple.com/en-us/HT200321}.
+       \newline    Presets: \textit{ProRes}
+       \item[QT] Different extension, but it is always mov.
+       \newline    Presets: \textit{DNxHD, magicyuv, raw, utvideo}
+       \item[MP4] mostly used for General Purpose. It belongs to the large MPEG family.
+       \newline    Presets: \textit{AVC\_Intra\_100}
+       \item[RGB] Raw format.
+       \newline    Presets: \textit{raw}
+       \item[YUV] Raw format.
+       \newline    Presets: \textit{raw}
+       \item[AVI] Old and limited format (no multi streams, no subtitles, limited metadata) but with high compatibility.
+       \newline    Presets: \textit{ffv1}
+\end{description}
+
+\subsubsection{General Purpose}
+\label{ssub:ffmpeg_video_general_purpose}
+
+These are also called Delivery codecs. They are the most used and widespread being suitable for streaming, video sharing, watching TV, smartphones, plus more. Because of lossy compression type Interframe, they produce smaller files with variable quality. They are not suitable for editing, compositing and color correction. Further rendering of these formats worsens the quality exponentially. The most used codecs have hardware support (vaapi, vdpau, nvenc) that make them more efficient.
+
+\begin{description}
+       \item[MOV] Created by Apple. It is a suitable format for editing because it organizes the files within the container into hierarchically structured "atoms" described in a header. This brings simplicity and compatibility with various software and does not require continuous encoding/decoding in the timeline.
+       \newline Presets: \textit{Presets: mov}
+       \item[QT] Different exstension, but it is always mov.
+       \newline Presets: \textit{mjpeg, DV, Div, CinePack}
+       \item[MP4] The most popular. Many other formats belong to this family (MPEG);
+       \newline    h264 is actually x264, open, highly configurable and documented; h265/HEVC is actually x265, open, highly configurable and documented. x264-5 is for encoding only.
+       \newline Presets: \textit{h265, h265, mjpeg, mpeg2, obs2youtube}
+       \item[WEBM] Open; similar to mp4 but not as widespread (it is used by YouTube). In \CGG{} there are specific Presets with \texttt{.youtube} extension, but they are still webm.
+       \newline Presets:  \textit{VP8, VP9, AV1}
+       \item[MKV] Open, highly configurable and widely documented. It might have seeking problems. It belongs to the Matroska family.
+       \newline Presets:  \textit{Theora, VP8, VP9}
+       \item[AVI] Old and limited format (no multistreams, no subtitles, limited metadata) but with high compatibility.
+       \newline Presets:  \textit{asv, DV, mjpeg, xvid}
+       \item[MPG] Parent of the MPEG family, to which MP4 also belongs. Mpeg is used by \CGG{} as default for proxies and mpeg-2 is the standard for Video DVDs.
+       \newline Presets:  \textit{mpeg, mpeg2}
+\end{description}
+
+\subsubsection{Image Sequences}
+\label{ssub:ffmpeg_image_sequences}
+
+The image sequences can be uncompressed, with lossy or lossless compression but always Intraframe. They are suitable for post-processing that is compositing (VFX) and color correction.
+
+\begin{description}
+       \item[DPX] Film standard; uncompressed; high quality. \textit{Log} type.
+       \item[PNG] Uncompressed or lossless compression. Supports alpha channel.
+       \item[WEBP, TIFF, GIF, JPEG, ...] Variable compression, size and quality.
+\end{description}
+
+\subsubsection{Old Pro Formats}
+\label{ssub:ffmpeg_old_pro_formats}
+
+Some formats, though used in the past in the pro field, are disappearing with the evolution of technologies. DVD is becoming more and more niche, while Bluray is still widespread (also as a backup); DV/HDV remains only as a support for old Camcorders with magnetic tapes. DV is still a quality format, with intraframe compression; HDV is mpeg-2 compressed.
+
+\begin{description}
+       \item[AVI] old and limited format but with high compatibility.
+       \newline    Presets: \textit{DV\_pal, DV\_ntsc, mjpeg}
+       \item[QT] belongs to the Apple mov family.
+       \newline    Presets: \textit{DV, mjpeg}
+       \item[M2TS] format for Bluray (mpeg4). Bluray player devices need a standard Bluray disc structure (bdwrite) for playback\protect\footnote{\CGG{} offers specific functionality for creating DVDs/Blurays}.
+       \newline    Presets: \textit{AVC422, Lossless, Bluray, hevc}
+       \item[MP4] Belongs to the MPEG family. Motionjpeg has jpeg compression, then Intraframe, so it maintains good quality and fluidity in editing. It is now an old and limited codec.
+       \newline    Presets: \textit{mjpeg}
+\end{description}
+
+\subsection{FFmpeg Audio Formats}%
+\label{sub:FFmpeg_audio}
+
+Audio formats and codecs take much less resources and space than video ones, so they are often used without compression for maximum quality. However these are compressed formats and codecs widely used in streaming and sharing.
+
+\subsubsection{High Quality}
+\label{ssub:ffmpeg_audio_high_quality}
+
+\begin{description}
+       \item[FLAC] Open; used for storing music. It has lossless compression.
+       \newline    preset: \textit{flac}
+       \item[PCM] Raw format that encodes the signal with \textit{modified pulse modulation} (pcm). FFmpeg does not support pcm audio if you use mp4 as a container.
+       \newline    Presets: \textit{s8, s16, s24, s32}
+       \item[WAV] Raw format created by Microsoft. 32-bit addressing leading to the 4 GB recording limit. It is a widely used standard.
+       \newline    Presets: \textit{s24le, s32le}
+       \item[W64] Wave format created by Sony to override the 4GB recording limit. Poorly supported.
+       \newline    Presets: \textit{s16le, s24le, s32le}
+       \item[MKA] Open, highly configurable and documented. It belongs to the Matroska family. Uncompressed pcm type.
+       \newline    Presets: \textit{s16le, s24le, s32le}
+\end{description}
+
+\subsubsection{General Purpose}
+\label{ssub:ffmpeg_audio_general_purpose}
+
+\begin{description}
+       \item[MP3] Belongs to the MPEG family. The most widely used in streaming and sharing.
+       \newline   preset: \textit{mp3}
+       \item[OGG] Open, highly configurable and documented. It belongs to the Matroska family. Flac has lossless compression; opus is compressed but modern and of good quality, superior to mp3. Vorbis is compressed and dated, but lightweight and compatible.
+       \newline    Presets: \textit{flac, opus, vorbis}
+       \item[PRO] Created by Apple; compressed audio codec, competing with mp3.
+       \newline    Presets: \textit{acc256k}
+\end{description}
+
+\subsection{\CGG{} Internal Engine}%
+\label{sub:internal_engine}
+
+FFmpeg is the default engine, but you can also use its internal engine, which is limited in supported formats but efficient and of high quality.
+
+\subsubsection{Video general purpose}
+\label{ssub:internal_general_purpose}
+
+\begin{description}
+       \item[RAW DV] supports the DV standard.
+       \newline    Presets: \textit{dv}
+       \item[MPEG Video] highly configurable. Extension \texttt{.m2v}.
+       \newline    Presets: \textit{mpeg1, mpeg2}
+       \item[OGG Theora/Vorbis] Open, easily configurable. Theora for video, Vorbis for audio.
+       \newline    Presets: \textit{theora, vorbis}
+\end{description}
+
+\subsubsection{Image Sequences}
+\label{sub:internal_image_sequences}
+
+There are quite a few formats available.
+
+\begin{description}
+       \item[EXR Sequence] OpenEXR (Open Standard) is a competing film standard to DPX, but \textit{Linear} type.
+       \item[Ppm Sequence] is RGB Raw.
+       \item[Tga Sequence] is RGB(A) compressed or uncompressed.
+       \item[Tiff Sequence] is RGB(A) or RGB(A)-Float with various compression types.
+       \item[Jpg, gif Sequences] lossy compressed and limited formats.
+\end{description}
+
+\subsubsection{Audio general purpose}
+\label{sub:internal_audio_general_purpose}
+
+\begin{description}
+       \item[AC3] widely used multichannel standard (Dolby Digital). Format with lossy compression.
+       \newline    Presets: \textit{ac3}
+       \item[Apple/SGI AIFF] Created by Apple; is an uncompressed format (pcm type) or with 32/64-bit floating point compression.
+       \newline    Presets: \textit{aif}
+       \item[Sun/Next AU] created by Sun and used in Unix environment, now in disuse. It can be of pcm type or with lossy compression.
+       \newline    Presets: \textit{au}
+       \item[Flac] Open, lossless compression, very good quality.
+       \newline    preset: \textit{flac}
+       \item[Microsoft WAV]  created by Microsoft. It can have 16-24-32-bit linear or float compression.
+       \newline    Presets: \textit{wav}
+       \item[MPEG Audio] Very widespread standard. Extension \texttt{.mp3}.
+       \newline    Presets: \textit{mp3}
+\end{description}
index cfb1e59a71488fe00596f46888c8fd94231878fe..cbdcaf9095e2652b9dc33cf3ed472602559dd615 100644 (file)
@@ -215,6 +215,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}