summaryrefslogtreecommitdiff
path: root/doc/design/video_path.tex
blob: fb61294ea1004ee50f001ef529c3f4e67efb8374 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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}