summaryrefslogtreecommitdiff
path: root/doc/design/video_path.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/design/video_path.tex')
-rw-r--r--doc/design/video_path.tex41
1 files changed, 41 insertions, 0 deletions
diff --git a/doc/design/video_path.tex b/doc/design/video_path.tex
new file mode 100644
index 000000000..fb61294ea
--- /dev/null
+++ b/doc/design/video_path.tex
@@ -0,0 +1,41 @@
+\documentclass{article}
+\usepackage[explicit]{titlesec}
+\usepackage{lipsum,framed,color,xcolor}
+\definecolor{shadecolor}{rgb}{1,0.8,0.3}
+\titleformat{name=\subsection,numberless}{\ttfamily}{}{0em}{\colorbox{shadecolor}{\parbox{\dimexpr\textwidth-2\fboxsep\relax}{{#1}}}}\title{Video paths}
+\author{}
+\date{}
+\begin{document}
+\maketitle
+
+\emph{Encoder} calls \texttt{Player::pass()} repeatedly.
+
+\subsection*{Player::pass()}
+
+Look through all `pieces' (content, decoder, video/audio position) and
+find earliest last emission. Call \texttt{pass()} on earliest
+decoder.
+
+\subsection*{FFmpegDecoder::pass()}
+
+Decoder may or may not generate a frame. Adjust for gaps in PTS.
+(FFmpegDecoder does FFmpeg filtering here).
+
+\subsection*{VideoDecoder::video(image, same, frame)}
+
+The \emph{frame} parameter is the frame within the source. This
+handles 3D and emits \texttt{Video}, which is caught by
+\texttt{Player::process\_video}.
+
+\subsection*{Player::process\_video(piece, image, eyes, same, frame)}
+
+\begin{itemize}
+\item Trim
+\item Crop
+\item Scale
+\item Superposition of burnt-in subtitles.
+\end{itemize}
+
+Emits \texttt{Video} which is caught by \texttt{Encoder::process\_video}.
+
+\end{document}