-Possible steps:
-\begin{enumerate}
-\item Add signals to \texttt{Player}; remove \texttt{get\_*}
-\item Give player a \texttt{pass()} which calls decoders and sanitises
- output.
-\item Make transcoder attach to \texttt{Player} and pass output through to encoding.
-\item Make preview attach to \texttt{Player}, buffer the output and then fetch it from a UI thread.
-\end{enumerate}
+
+\section{Having a go}
+
+\begin{lstlisting}
+ class Decoder {
+ virtual void pass() = 0;
+ virtual void seek(ContentTime time, bool accurate) = 0;
+
+ signals2<void (ContentVideo)> Video;
+ signals2<void (ContentAudio, AudioStreamPtr)> Audio;
+ signals2<void (ContentTextSubtitle)> TextSubtitle;
+ };
+\end{lstlisting}
+
+or perhaps
+
+\begin{lstlisting}
+ class Decoder {
+ virtual void pass() = 0;
+ virtual void seek(ContentTime time, bool accurate) = 0;
+
+ shared_ptr<VideoDecoder> video;
+ shared_ptr<AudioDecoder> audio;
+ shared_ptr<SubtitleDecoder> subtitle;
+ };
+
+ class VideoDecoder {
+ signals2<void (ContentVideo)> Data;
+ };
+\end{lstlisting}
+
+Questions:
+\begin{itemize}
+\item Video / audio frame or \texttt{ContentTime}?
+\end{itemize}