From 476ef8b0024a6f2e00095df780d0a191019aec95 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 21 Feb 2017 23:30:35 +0000 Subject: [PATCH] Move / update some design docs. --- doc/design/audio_path.svg | 408 --------- doc/design/dcpomatic.svg | 1350 ----------------------------- doc/design/decoder_structures.tex | 36 +- doc/design/player_get_audio.svg | 399 --------- 4 files changed, 35 insertions(+), 2158 deletions(-) delete mode 100644 doc/design/audio_path.svg delete mode 100644 doc/design/dcpomatic.svg delete mode 100644 doc/design/player_get_audio.svg diff --git a/doc/design/audio_path.svg b/doc/design/audio_path.svg deleted file mode 100644 index c75d505b4..000000000 --- a/doc/design/audio_path.svg +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - AVPacket - AVFrame - AudioBuffers - Data type - FFmpegDecoder - AudioDecoder - Class - Player - avcodec_decode_audio4 - av_read_frame - deinterleave_audio - audio - Method - get_audio - Operation - Decode - Deinterleave - Resample - Run Processor - Gain - Channel remap - Mix - - - - - - - Data path - - - - diff --git a/doc/design/dcpomatic.svg b/doc/design/dcpomatic.svg deleted file mode 100644 index dc9cd9166..000000000 --- a/doc/design/dcpomatic.svg +++ /dev/null @@ -1,1350 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - Player - - get_video()get_audio() - Get video frame(s) at a time or asection of audio from a time range.Times are expressed as DCPTime. - - - - PlayerVideoFrame - - Video that has come out of a playerexcept with the bits still in theirraw form (we may want to combinethe bits on a remote machine, ormaybe not bother to combine themat all). Note: no timinginformation. - image() - Return image ready for the DCP(scaled, cropped, subtitled etc.) - - - - AudioBuffers - - Some audio data. Note: no timinginformation. - - - - - - - VideoDecoder - - get_video() - Get a video frame (specified as anindex) from this decoder's content. - - - - AudioDecoder - - get_audio() - Get some audio frames (specified asframe indices) from this decoder'scontent. - - - - Video frame indiceswithin content. - Player::dcp_to_content_video()Player::dcp_to_content_audio() - DCPTime - - - - Class - - method() - Method description - Class description. - - - - Playlist - - video_identifer() - Return a string which uniquelydescribes the content which affectsthe image. - List of content. - - - - has a - - - - AudioDecoderStream - - get() - Get some audio frames (specified asframe indices) from this stream'scontent. - Decoder for one stream of audio. - - - - - AudioDecoderStream - - get() - Get some audio frames (specified asframe indices) from this stream'scontent. - Decoder for one stream of audio. - - - - - AudioDecoderStream - - get() - Get some audio frames (specified asframe indices) from this stream'scontent. - Decoder for one stream of audio. - - - - - AudioDecoderStream - - get() - Get some audio frames (specified asframe indices) from this stream'scontent. - Decoder for one stream of audio. - - - - - - has many - - - diff --git a/doc/design/decoder_structures.tex b/doc/design/decoder_structures.tex index 64a7da752..594c66450 100644 --- a/doc/design/decoder_structures.tex +++ b/doc/design/decoder_structures.tex @@ -162,7 +162,7 @@ Questions: \begin{itemize} \item Add signals to \texttt{Player}. \begin{itemize} - \item \texttt{signal), DCPTime> Video;} + \item \texttt{signal), DCPTime)> Video;} \item \texttt{signal, DCPTime)> Audio;} \item \texttt{signal Subtitle;} \end{itemize} @@ -174,4 +174,38 @@ Questions: \item Remove \texttt{get} methods from \texttt{Player}; replace with \texttt{pass()} and \texttt{seek()}. \end{itemize} + +\section{Summary of work done in \texttt{back-to-pass}} + +The diff between \texttt{back-to-pass} and \texttt{master} as at 21/2/2017 can be summarised as: + +\begin{enumerate} +\item Remove \texttt{AudioDecoderStream}; no more need to buffer, and resampling is done in \texttt{Player}. +\item \texttt{AudioDecoder} is simple; basically counting frames. +\item All subtitles-during stuff is gone; no need to know what happens in a particular period as we just wait and see. +\item Pass reason stuff gone; not sure what it was for but seems to have been a contortion related to trying to find specific stuff. + \item \texttt{Player::pass} back, obviously. + \item \texttt{Player::get\_video}, \texttt{get\_audio} and + \texttt{get\_subtitle} more-or-less become \texttt{Player}'s + handlers for emissions from decoders; lots of buffering crap gone + in the process. + \item Add \texttt{Decoder::position} stuff so that we know what to \texttt{pass()} in \texttt{Player}. + \item Add \texttt{AudioMerger}; necessary as audio arrives at the + \texttt{Player} from different streams at different times. The + \texttt{AudioMerger} just accepts data, mixes and spits it out + again. +\item Obvious consumer changes: what was a loop over the playlist + length and calls to \texttt{get()} is now calls to \texttt{pass()}. + \item Maybe-seek stuff gone. + \item Some small \texttt{const}-correctness bits. +\end{enumerate} + +Obvious things to do: + +\begin{enumerate} +\item Ensure AudioMerger is being tested. +\item Ensure hardest-case in video / audio is being tested. +\item Look at symmetry of video/audio paths / APIs. +\end{enumerate} + \end{document} diff --git a/doc/design/player_get_audio.svg b/doc/design/player_get_audio.svg deleted file mode 100644 index fe7bdd5a3..000000000 --- a/doc/design/player_get_audio.svg +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - DCP time 0 - - - - time - - length - - - length_frames - out - - - dcp_to_content_audio(time) - Content - - in - - in->frame - - -- 2.30.2