\section{theoradec.\-h \-File \-Reference} \label{theoradec_8h}\index{theoradec.\-h@{theoradec.\-h}} \-The {\ttfamily libtheoradec} \-C decoding \-A\-P\-I. {\ttfamily \#include $<$stddef.\-h$>$}\* {\ttfamily \#include $<$ogg/ogg.\-h$>$}\* {\ttfamily \#include \char`\"{}codec.\-h\char`\"{}}\* \subsection*{\-Data \-Structures} \begin{DoxyCompactItemize} \item struct {\bf th\-\_\-stripe\-\_\-callback} \begin{DoxyCompactList}\small\item\em \-The striped decode callback data to pass to \doxyref{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}. \end{DoxyCompactList}\end{DoxyCompactItemize} \subsection*{\-Defines} \begin{DoxyCompactItemize} \item \#define {\bf \-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-T\-H\-E\-O\-R\-A\-D\-E\-C\-\_\-\-H\-\_\-}~(1) \end{DoxyCompactItemize} \begin{Indent}{\bf th\-\_\-decode\-\_\-ctl() codes}\par {\em \label{theoradec_8h_decctlcodes}% \-These are the available request codes for \doxyref{th\-\_\-decode\-\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}. \-By convention, these are odd, to distinguish them from the \doxyref{encoder control codes}{p.}{theoraenc_8h_encctlcodes}. \-Keep any experimental or vendor-\/specific values above {\ttfamily 0x8000}. }\begin{DoxyCompactItemize} \item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X}~(1) \begin{DoxyCompactList}\small\item\em \-Gets the maximum post-\/processing level. \end{DoxyCompactList}\item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L}~(3) \begin{DoxyCompactList}\small\item\em \-Sets the post-\/processing level. \end{DoxyCompactList}\item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-G\-R\-A\-N\-P\-O\-S}~(5) \begin{DoxyCompactList}\small\item\em \-Sets the granule position. \end{DoxyCompactList}\item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B}~(7) \begin{DoxyCompactList}\small\item\em \-Sets the striped decode callback function. \end{DoxyCompactList}\item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-B\-M\-O\-D\-E}~(9) \begin{DoxyCompactList}\small\item\em \-Enables telemetry and sets the macroblock display mode. \end{DoxyCompactList}\item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-V}~(11) \begin{DoxyCompactList}\small\item\em \-Enables telemetry and sets the motion vector display mode. \end{DoxyCompactList}\item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-Q\-I}~(13) \begin{DoxyCompactList}\small\item\em \-Enables telemetry and sets the adaptive quantization display mode. \end{DoxyCompactList}\item \#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-B\-I\-T\-S}~(15) \begin{DoxyCompactList}\small\item\em \-Enables telemetry and sets the bitstream breakdown visualization mode. \end{DoxyCompactList}\end{DoxyCompactItemize} \end{Indent} \subsection*{\-Typedefs} \begin{DoxyCompactItemize} \item typedef void($\ast$ {\bf th\-\_\-stripe\-\_\-decoded\-\_\-func} )(void $\ast$\-\_\-ctx, {\bf th\-\_\-ycbcr\-\_\-buffer} \-\_\-buf, int \-\_\-yfrag0, int \-\_\-yfrag\-\_\-end) \begin{DoxyCompactList}\small\item\em \-A callback function for striped decode. \end{DoxyCompactList}\end{DoxyCompactItemize} \begin{Indent}{\bf \-Decoder state}\par {\em \-The following data structures are opaque, and their contents are not publicly defined by this \-A\-P\-I. \-Referring to their internals directly is unsupported, and may break without warning. }\begin{DoxyCompactItemize} \item typedef struct {\bf th\-\_\-dec\-\_\-ctx} {\bf th\-\_\-dec\-\_\-ctx} \begin{DoxyCompactList}\small\item\em \-The decoder context. \end{DoxyCompactList}\item typedef struct {\bf th\-\_\-setup\-\_\-info} {\bf th\-\_\-setup\-\_\-info} \begin{DoxyCompactList}\small\item\em \-Setup information. \end{DoxyCompactList}\end{DoxyCompactItemize} \end{Indent} \subsection*{\-Functions} \begin{Indent}{\bf \-Functions for decoding}\par {\em \-You must link to {\ttfamily libtheoradec} if you use any of the functions in this section. \-The functions are listed in the order they are used in a typical decode. \-The basic steps are\-: \begin{DoxyItemize} \item \-Parse the header packets by repeatedly calling \doxyref{th\-\_\-decode\-\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}. \item \-Allocate a \doxyref{th\-\_\-dec\-\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle with \doxyref{th\-\_\-decode\-\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}. \item \-Call \doxyref{th\-\_\-setup\-\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} to free any memory used for codec setup information. \item \-Perform any additional decoder configuration with \doxyref{th\-\_\-decode\-\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}. \item \-For each video data packet\-: \begin{DoxyItemize} \item \-Submit the packet to the decoder via \doxyref{th\-\_\-decode\-\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}. \item \-Retrieve the uncompressed video data via \doxyref{th\-\_\-decode\-\_\-ycbcr\-\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}. \end{DoxyItemize} \item \-Call \doxyref{th\-\_\-decode\-\_\-free()}{p.}{group__decfuncs_gafb6684ad8ba507b71112bc9de148e7d0} to release all decoder memory. \end{DoxyItemize}}\begin{DoxyCompactItemize} \item int {\bf th\-\_\-decode\-\_\-headerin} ({\bf th\-\_\-info} $\ast$\-\_\-info, {\bf th\-\_\-comment} $\ast$\-\_\-tc, {\bf th\-\_\-setup\-\_\-info} $\ast$$\ast$\-\_\-setup, ogg\-\_\-packet $\ast$\-\_\-op) \begin{DoxyCompactList}\small\item\em \-Decodes the header packets of a \-Theora stream. \end{DoxyCompactList}\item {\bf th\-\_\-dec\-\_\-ctx} $\ast$ {\bf th\-\_\-decode\-\_\-alloc} (const {\bf th\-\_\-info} $\ast$\-\_\-info, const {\bf th\-\_\-setup\-\_\-info} $\ast$\-\_\-setup) \begin{DoxyCompactList}\small\item\em \-Allocates a decoder instance. \end{DoxyCompactList}\item void {\bf th\-\_\-setup\-\_\-free} ({\bf th\-\_\-setup\-\_\-info} $\ast$\-\_\-setup) \begin{DoxyCompactList}\small\item\em \-Releases all storage used for the decoder setup information. \end{DoxyCompactList}\item int {\bf th\-\_\-decode\-\_\-ctl} ({\bf th\-\_\-dec\-\_\-ctx} $\ast$\-\_\-dec, int \-\_\-req, void $\ast$\-\_\-buf, size\-\_\-t \-\_\-buf\-\_\-sz) \begin{DoxyCompactList}\small\item\em \-Decoder control function. \end{DoxyCompactList}\item int {\bf th\-\_\-decode\-\_\-packetin} ({\bf th\-\_\-dec\-\_\-ctx} $\ast$\-\_\-dec, const ogg\-\_\-packet $\ast$\-\_\-op, ogg\-\_\-int64\-\_\-t $\ast$\-\_\-granpos) \begin{DoxyCompactList}\small\item\em \-Submits a packet containing encoded video data to the decoder. \end{DoxyCompactList}\item int {\bf th\-\_\-decode\-\_\-ycbcr\-\_\-out} ({\bf th\-\_\-dec\-\_\-ctx} $\ast$\-\_\-dec, {\bf th\-\_\-ycbcr\-\_\-buffer} \-\_\-ycbcr) \begin{DoxyCompactList}\small\item\em \-Outputs the next available frame of decoded \-Y'\-Cb\-Cr data. \end{DoxyCompactList}\item void {\bf th\-\_\-decode\-\_\-free} ({\bf th\-\_\-dec\-\_\-ctx} $\ast$\-\_\-dec) \begin{DoxyCompactList}\small\item\em \-Frees an allocated decoder instance. \end{DoxyCompactList}\end{DoxyCompactItemize} \end{Indent} \subsection{\-Detailed \-Description} \-The {\ttfamily libtheoradec} \-C decoding \-A\-P\-I. \subsection{\-Define \-Documentation} \index{theoradec.\-h@{theoradec.\-h}!\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-T\-H\-E\-O\-R\-A\-D\-E\-C\-\_\-\-H\-\_\-@{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-T\-H\-E\-O\-R\-A\-D\-E\-C\-\_\-\-H\-\_\-}} \index{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-T\-H\-E\-O\-R\-A\-D\-E\-C\-\_\-\-H\-\_\-@{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-T\-H\-E\-O\-R\-A\-D\-E\-C\-\_\-\-H\-\_\-}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-T\-H\-E\-O\-R\-A\-D\-E\-C\-\_\-\-H\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-T\-H\-E\-O\-R\-A\-D\-E\-C\-\_\-\-H\-\_\-}~(1)}\label{theoradec_8h_a0d78767a326c34dbf84d5b845cba7b4a} \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X}~(1)}\label{theoradec_8h_ab31f251c9319f2140d247585d30b3d07} \-Gets the maximum post-\/processing level. \-The decoder supports a post-\/processing filter that can improve the appearance of the decoded images. \-This returns the highest level setting for this post-\/processor, corresponding to maximum improvement and computational expense. \begin{DoxyParams}[1]{\-Parameters} \mbox{\tt out} & {\em \-\_\-buf} & int\-: \-The maximum post-\/processing level. \\ \hline \end{DoxyParams} \begin{DoxyRetVals}{\-Return values} {\em \-T\-H\-\_\-\-E\-F\-A\-U\-L\-T} & {\itshape \-\_\-dec\-\_\-ctx\/} or {\itshape \-\_\-buf\/} is {\ttfamily \-N\-U\-L\-L}. \\ \hline {\em \-T\-H\-\_\-\-E\-I\-N\-V\-A\-L} & {\itshape \-\_\-buf\-\_\-sz\/} is not {\ttfamily sizeof(int)}. \\ \hline {\em \-T\-H\-\_\-\-E\-I\-M\-P\-L} & \-Not supported by this implementation. \\ \hline \end{DoxyRetVals} \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-G\-R\-A\-N\-P\-O\-S@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-G\-R\-A\-N\-P\-O\-S}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-G\-R\-A\-N\-P\-O\-S@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-G\-R\-A\-N\-P\-O\-S}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-G\-R\-A\-N\-P\-O\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-G\-R\-A\-N\-P\-O\-S}~(5)}\label{theoradec_8h_a1e870c654d35394f0d490045df04e0f5} \-Sets the granule position. \-Call this after a seek, before decoding the first frame, to ensure that the proper granule position is returned for all subsequent frames. \-If you track timestamps yourself and do not use the granule position returned by the decoder, then you need not call this function. \begin{DoxyParams}[1]{\-Parameters} \mbox{\tt in} & {\em \-\_\-buf} & {\ttfamily ogg\-\_\-int64\-\_\-t}\-: \-The granule position of the next frame. \\ \hline \end{DoxyParams} \begin{DoxyRetVals}{\-Return values} {\em \-T\-H\-\_\-\-E\-F\-A\-U\-L\-T} & {\itshape \-\_\-dec\-\_\-ctx\/} or {\itshape \-\_\-buf\/} is {\ttfamily \-N\-U\-L\-L}. \\ \hline {\em \-T\-H\-\_\-\-E\-I\-N\-V\-A\-L} & {\itshape \-\_\-buf\-\_\-sz\/} is not {\ttfamily sizeof(ogg\-\_\-int64\-\_\-t)}, or the granule position is negative. \\ \hline \end{DoxyRetVals} \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L}~(3)}\label{theoradec_8h_a87774c35e1a755a84e2d705b38ebef0d} \-Sets the post-\/processing level. \-By default, post-\/processing is disabled. \-Sets the level of post-\/processing to use when decoding the compressed stream. \-This must be a value between zero (off) and the maximum returned by \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X. \begin{DoxyParams}[1]{\-Parameters} \mbox{\tt in} & {\em \-\_\-buf} & int\-: \-The new post-\/processing level. 0 to disable; larger values use more \-C\-P\-U. \\ \hline \end{DoxyParams} \begin{DoxyRetVals}{\-Return values} {\em \-T\-H\-\_\-\-E\-F\-A\-U\-L\-T} & {\itshape \-\_\-dec\-\_\-ctx\/} or {\itshape \-\_\-buf\/} is {\ttfamily \-N\-U\-L\-L}. \\ \hline {\em \-T\-H\-\_\-\-E\-I\-N\-V\-A\-L} & {\itshape \-\_\-buf\-\_\-sz\/} is not {\ttfamily sizeof(int)}, or the post-\/processing level is out of bounds. \-The maximum post-\/processing level may be implementation-\/specific, and can be obtained via \doxyref{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-G\-E\-T\-\_\-\-P\-P\-L\-E\-V\-E\-L\-\_\-\-M\-A\-X}{p.}{theoradec_8h_ab31f251c9319f2140d247585d30b3d07}. \\ \hline {\em \-T\-H\-\_\-\-E\-I\-M\-P\-L} & \-Not supported by this implementation. \\ \hline \end{DoxyRetVals} \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-S\-T\-R\-I\-P\-E\-\_\-\-C\-B}~(7)}\label{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e} \-Sets the striped decode callback function. \-If set, this function will be called as each piece of a frame is fully decoded in \doxyref{th\-\_\-decode\-\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}. \-You can pass in a \doxyref{th\-\_\-stripe\-\_\-callback}{p.}{structth__stripe__callback} with \doxyref{th\-\_\-stripe\-\_\-callback\-::stripe\-\_\-decoded}{p.}{structth__stripe__callback_a977c725680a37e3446e459f063b1f4a5} set to {\ttfamily \-N\-U\-L\-L} to disable the callbacks at any point. \-Enabling striped decode does not prevent you from calling \doxyref{th\-\_\-decode\-\_\-ycbcr\-\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb} after the frame is fully decoded. \begin{DoxyParams}[1]{\-Parameters} \mbox{\tt in} & {\em \-\_\-buf} & \doxyref{th\-\_\-stripe\-\_\-callback}{p.}{structth__stripe__callback}\-: \-The callback parameters. \\ \hline \end{DoxyParams} \begin{DoxyRetVals}{\-Return values} {\em \-T\-H\-\_\-\-E\-F\-A\-U\-L\-T} & {\itshape \-\_\-dec\-\_\-ctx\/} or {\itshape \-\_\-buf\/} is {\ttfamily \-N\-U\-L\-L}. \\ \hline {\em \-T\-H\-\_\-\-E\-I\-N\-V\-A\-L} & {\itshape \-\_\-buf\-\_\-sz\/} is not {\ttfamily sizeof(th\-\_\-stripe\-\_\-callback)}. \\ \hline \end{DoxyRetVals} \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-B\-I\-T\-S@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-B\-I\-T\-S}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-B\-I\-T\-S@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-B\-I\-T\-S}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-B\-I\-T\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-B\-I\-T\-S}~(15)}\label{theoradec_8h_a7f43fec07486f8a5f00e92aab7d44a25} \-Enables telemetry and sets the bitstream breakdown visualization mode. \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-B\-M\-O\-D\-E@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-B\-M\-O\-D\-E}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-B\-M\-O\-D\-E@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-B\-M\-O\-D\-E}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-B\-M\-O\-D\-E}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-B\-M\-O\-D\-E}~(9)}\label{theoradec_8h_a8d5e0b9b4c8898f93f241acbeb7e7ffb} \-Enables telemetry and sets the macroblock display mode. \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-V@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-V}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-V@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-V}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-V}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-M\-V}~(11)}\label{theoradec_8h_a829285a03d24832c583f33c6357df8aa} \-Enables telemetry and sets the motion vector display mode. \index{theoradec.\-h@{theoradec.\-h}!\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-Q\-I@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-Q\-I}} \index{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-Q\-I@{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-Q\-I}!theoradec.h@{theoradec.\-h}} \subsubsection[{\-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-Q\-I}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-E\-C\-C\-T\-L\-\_\-\-S\-E\-T\-\_\-\-T\-E\-L\-E\-M\-E\-T\-R\-Y\-\_\-\-Q\-I}~(13)}\label{theoradec_8h_ae3e2f7674ad92fe67b63915d48c9df5b} \-Enables telemetry and sets the adaptive quantization display mode. \subsection{\-Typedef \-Documentation} \index{theoradec.\-h@{theoradec.\-h}!th\-\_\-dec\-\_\-ctx@{th\-\_\-dec\-\_\-ctx}} \index{th\-\_\-dec\-\_\-ctx@{th\-\_\-dec\-\_\-ctx}!theoradec.h@{theoradec.\-h}} \subsubsection[{th\-\_\-dec\-\_\-ctx}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\-\_\-dec\-\_\-ctx} {\bf th\-\_\-dec\-\_\-ctx}}\label{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} \-The decoder context. \index{theoradec.\-h@{theoradec.\-h}!th\-\_\-setup\-\_\-info@{th\-\_\-setup\-\_\-info}} \index{th\-\_\-setup\-\_\-info@{th\-\_\-setup\-\_\-info}!theoradec.h@{theoradec.\-h}} \subsubsection[{th\-\_\-setup\-\_\-info}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\-\_\-setup\-\_\-info} {\bf th\-\_\-setup\-\_\-info}}\label{theoradec_8h_ab71cd2657455cc27d6c0127c66a89f28} \-Setup information. \-This contains auxiliary information (\-Huffman tables and quantization parameters) decoded from the setup header by \doxyref{th\-\_\-decode\-\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} to be passed to \doxyref{th\-\_\-decode\-\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}. \-It can be re-\/used to initialize any number of decoders, and can be freed via \doxyref{th\-\_\-setup\-\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} at any time. \index{theoradec.\-h@{theoradec.\-h}!th\-\_\-stripe\-\_\-decoded\-\_\-func@{th\-\_\-stripe\-\_\-decoded\-\_\-func}} \index{th\-\_\-stripe\-\_\-decoded\-\_\-func@{th\-\_\-stripe\-\_\-decoded\-\_\-func}!theoradec.h@{theoradec.\-h}} \subsubsection[{th\-\_\-stripe\-\_\-decoded\-\_\-func}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf th\-\_\-stripe\-\_\-decoded\-\_\-func})(void $\ast$\-\_\-ctx, {\bf th\-\_\-ycbcr\-\_\-buffer} \-\_\-buf, int \-\_\-yfrag0, int \-\_\-yfrag\-\_\-end)}\label{theoradec_8h_a25dfc8713157545abd81eda476ca4b54} \-A callback function for striped decode. \-This is a function pointer to an application-\/provided function that will be called each time a section of the image is fully decoded in \doxyref{th\-\_\-decode\-\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}. \-This allows the application to process the section immediately, while it is still in cache. \-Note that the frame is decoded bottom to top, so {\itshape \-\_\-yfrag0\/} will steadily decrease with each call until it reaches 0, at which point the full frame is decoded. \-The number of fragment rows made available in each call depends on the pixel format and the number of post-\/processing filters enabled, and may not even be constant for the entire frame. \-If a non-\/{\ttfamily \-N\-U\-L\-L} {\itshape \-\_\-granpos\/} pointer is passed to \doxyref{th\-\_\-decode\-\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}, the granule position for the frame will be stored in it before the first callback is made. \-If an entire frame is dropped (a 0-\/byte packet), then no callbacks will be made at all for that frame. \begin{DoxyParams}{\-Parameters} {\em \-\_\-ctx} & \-An application-\/provided context pointer. \\ \hline {\em \-\_\-buf} & \-The image buffer for the decoded frame. \\ \hline {\em \-\_\-yfrag0} & \-The \-Y coordinate of the first row of 8x8 fragments decoded. \-Multiply this by 8 to obtain the pixel row number in the luma plane. \-If the chroma planes are subsampled in the \-Y direction, this will always be divisible by two. \\ \hline {\em \-\_\-yfrag\-\_\-end} & \-The \-Y coordinate of the first row of 8x8 fragments past the newly decoded section. \-If the chroma planes are subsampled in the \-Y direction, this will always be divisible by two. \-I.\-e., this section contains fragment rows {\ttfamily {\itshape \-\_\-yfrag0\/} ...{\itshape \-\_\-yfrag\-\_\-end\/} -\/1}. \\ \hline \end{DoxyParams}