\section{codec.\-h \-File \-Reference}
\label{codec_8h}\index{codec.\-h@{codec.\-h}}


\-The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} \-C \-A\-P\-I.  


{\ttfamily \#include $<$ogg/ogg.\-h$>$}\*
\subsection*{\-Data \-Structures}
\begin{DoxyCompactItemize}
\item 
struct {\bf th\-\_\-img\-\_\-plane}
\begin{DoxyCompactList}\small\item\em \-A buffer for a single color plane in an uncompressed image. \end{DoxyCompactList}\item 
struct {\bf th\-\_\-info}
\begin{DoxyCompactList}\small\item\em \-Theora bitstream information. \end{DoxyCompactList}\item 
struct {\bf th\-\_\-comment}
\begin{DoxyCompactList}\small\item\em \-The comment information. \end{DoxyCompactList}\item 
struct {\bf th\-\_\-quant\-\_\-ranges}
\begin{DoxyCompactList}\small\item\em \-A set of {\itshape qi\/} ranges. \end{DoxyCompactList}\item 
struct {\bf th\-\_\-quant\-\_\-info}
\begin{DoxyCompactList}\small\item\em \-A complete set of quantization parameters. \end{DoxyCompactList}\item 
struct {\bf th\-\_\-huff\-\_\-code}
\begin{DoxyCompactList}\small\item\em \-A \-Huffman code for a \-Theora \-D\-C\-T token. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{\-Defines}
\begin{DoxyCompactItemize}
\item 
\#define {\bf \-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-C\-O\-D\-E\-C\-\_\-\-H\-\_\-}~(1)
\item 
\#define {\bf \-T\-H\-\_\-\-N\-H\-U\-F\-F\-M\-A\-N\-\_\-\-T\-A\-B\-L\-E\-S}~(80)
\begin{DoxyCompactList}\small\item\em \-The number of \-Huffman tables used by \-Theora. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-N\-D\-C\-T\-\_\-\-T\-O\-K\-E\-N\-S}~(32)
\begin{DoxyCompactList}\small\item\em \-The number of \-D\-C\-T token values in each table. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}{\bf \-Return codes}\par
\begin{DoxyCompactItemize}
\item 
\#define {\bf \-T\-H\-\_\-\-E\-F\-A\-U\-L\-T}~(-\/1)
\begin{DoxyCompactList}\small\item\em \-An invalid pointer was provided. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-E\-I\-N\-V\-A\-L}~(-\/10)
\begin{DoxyCompactList}\small\item\em \-An invalid argument was provided. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-E\-B\-A\-D\-H\-E\-A\-D\-E\-R}~(-\/20)
\begin{DoxyCompactList}\small\item\em \-The contents of the header were incomplete, invalid, or unexpected. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-E\-N\-O\-T\-F\-O\-R\-M\-A\-T}~(-\/21)
\begin{DoxyCompactList}\small\item\em \-The header does not belong to a \-Theora stream. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-E\-V\-E\-R\-S\-I\-O\-N}~(-\/22)
\begin{DoxyCompactList}\small\item\em \-The bitstream version is too high. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-E\-I\-M\-P\-L}~(-\/23)
\begin{DoxyCompactList}\small\item\em \-The specified function is not implemented. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-E\-B\-A\-D\-P\-A\-C\-K\-E\-T}~(-\/24)
\begin{DoxyCompactList}\small\item\em \-There were errors in the video data packet. \end{DoxyCompactList}\item 
\#define {\bf \-T\-H\-\_\-\-D\-U\-P\-F\-R\-A\-M\-E}~(1)
\begin{DoxyCompactList}\small\item\em \-The decoded packet represented a dropped frame. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{\-Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef {\bf th\-\_\-img\-\_\-plane} {\bf th\-\_\-ycbcr\-\_\-buffer} [3]
\begin{DoxyCompactList}\small\item\em \-A complete image buffer for an uncompressed frame. \end{DoxyCompactList}\item 
typedef struct {\bf th\-\_\-comment} {\bf th\-\_\-comment}
\begin{DoxyCompactList}\small\item\em \-The comment information. \end{DoxyCompactList}\item 
typedef unsigned char {\bf th\-\_\-quant\-\_\-base} [64]
\begin{DoxyCompactList}\small\item\em \-A single base matrix. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{\-Enumerations}
\begin{DoxyCompactItemize}
\item 
enum {\bf th\-\_\-colorspace} \{ {\bf \-T\-H\-\_\-\-C\-S\-\_\-\-U\-N\-S\-P\-E\-C\-I\-F\-I\-E\-D}, 
{\bf \-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-M}, 
{\bf \-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-B\-G}, 
{\bf \-T\-H\-\_\-\-C\-S\-\_\-\-N\-S\-P\-A\-C\-E\-S}
 \}
\begin{DoxyCompactList}\small\item\em \-The currently defined color space tags. \end{DoxyCompactList}\item 
enum {\bf th\-\_\-pixel\-\_\-fmt} \{ \*
{\bf \-T\-H\-\_\-\-P\-F\-\_\-420}, 
{\bf \-T\-H\-\_\-\-P\-F\-\_\-\-R\-S\-V\-D}, 
{\bf \-T\-H\-\_\-\-P\-F\-\_\-422}, 
{\bf \-T\-H\-\_\-\-P\-F\-\_\-444}, 
\*
{\bf \-T\-H\-\_\-\-P\-F\-\_\-\-N\-F\-O\-R\-M\-A\-T\-S}
 \}
\begin{DoxyCompactList}\small\item\em \-The currently defined pixel format tags. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{\-Functions}
\begin{Indent}{\bf \-Basic shared functions}\par
\begin{DoxyCompactItemize}
\item 
const char $\ast$ {\bf th\-\_\-version\-\_\-string} (void)
\begin{DoxyCompactList}\small\item\em \-Retrieves a human-\/readable string to identify the library vendor and version. \end{DoxyCompactList}\item 
ogg\-\_\-uint32\-\_\-t {\bf th\-\_\-version\-\_\-number} (void)
\begin{DoxyCompactList}\small\item\em \-Retrieves the library version number. \end{DoxyCompactList}\item 
ogg\-\_\-int64\-\_\-t {\bf th\-\_\-granule\-\_\-frame} (void $\ast$\-\_\-encdec, ogg\-\_\-int64\-\_\-t \-\_\-granpos)
\begin{DoxyCompactList}\small\item\em \-Converts a granule position to an absolute frame index, starting at {\ttfamily 0}. \end{DoxyCompactList}\item 
double {\bf th\-\_\-granule\-\_\-time} (void $\ast$\-\_\-encdec, ogg\-\_\-int64\-\_\-t \-\_\-granpos)
\begin{DoxyCompactList}\small\item\em \-Converts a granule position to an absolute time in seconds. \end{DoxyCompactList}\item 
int {\bf th\-\_\-packet\-\_\-isheader} (ogg\-\_\-packet $\ast$\-\_\-op)
\begin{DoxyCompactList}\small\item\em \-Determines whether a \-Theora packet is a header or not. \end{DoxyCompactList}\item 
int {\bf th\-\_\-packet\-\_\-iskeyframe} (ogg\-\_\-packet $\ast$\-\_\-op)
\begin{DoxyCompactList}\small\item\em \-Determines whether a theora packet is a key frame or not. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf \-Functions for manipulating header data}\par
\begin{DoxyCompactItemize}
\item 
void {\bf th\-\_\-info\-\_\-init} ({\bf th\-\_\-info} $\ast$\-\_\-info)
\begin{DoxyCompactList}\small\item\em \-Initializes a \doxyref{th\-\_\-info}{p.}{structth__info} structure. \end{DoxyCompactList}\item 
void {\bf th\-\_\-info\-\_\-clear} ({\bf th\-\_\-info} $\ast$\-\_\-info)
\begin{DoxyCompactList}\small\item\em \-Clears a \doxyref{th\-\_\-info}{p.}{structth__info} structure. \end{DoxyCompactList}\item 
void {\bf th\-\_\-comment\-\_\-init} ({\bf th\-\_\-comment} $\ast$\-\_\-tc)
\begin{DoxyCompactList}\small\item\em \-Initialize a \doxyref{th\-\_\-comment}{p.}{structth__comment} structure. \end{DoxyCompactList}\item 
void {\bf th\-\_\-comment\-\_\-add} ({\bf th\-\_\-comment} $\ast$\-\_\-tc, char $\ast$\-\_\-comment)
\begin{DoxyCompactList}\small\item\em \-Add a comment to an initialized \doxyref{th\-\_\-comment}{p.}{structth__comment} structure. \end{DoxyCompactList}\item 
void {\bf th\-\_\-comment\-\_\-add\-\_\-tag} ({\bf th\-\_\-comment} $\ast$\-\_\-tc, char $\ast$\-\_\-tag, char $\ast$\-\_\-val)
\begin{DoxyCompactList}\small\item\em \-Add a comment to an initialized \doxyref{th\-\_\-comment}{p.}{structth__comment} structure. \end{DoxyCompactList}\item 
char $\ast$ {\bf th\-\_\-comment\-\_\-query} ({\bf th\-\_\-comment} $\ast$\-\_\-tc, char $\ast$\-\_\-tag, int \-\_\-count)
\begin{DoxyCompactList}\small\item\em \-Look up a comment value by its tag. \end{DoxyCompactList}\item 
int {\bf th\-\_\-comment\-\_\-query\-\_\-count} ({\bf th\-\_\-comment} $\ast$\-\_\-tc, char $\ast$\-\_\-tag)
\begin{DoxyCompactList}\small\item\em \-Look up the number of instances of a tag. \end{DoxyCompactList}\item 
void {\bf th\-\_\-comment\-\_\-clear} ({\bf th\-\_\-comment} $\ast$\-\_\-tc)
\begin{DoxyCompactList}\small\item\em \-Clears a \doxyref{th\-\_\-comment}{p.}{structth__comment} structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}


\subsection{\-Detailed \-Description}
\-The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} \-C \-A\-P\-I. \-You don't need to include this directly. 

\subsection{\-Define \-Documentation}
\index{codec.\-h@{codec.\-h}!\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-C\-O\-D\-E\-C\-\_\-\-H\-\_\-@{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-C\-O\-D\-E\-C\-\_\-\-H\-\_\-}}
\index{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-C\-O\-D\-E\-C\-\_\-\-H\-\_\-@{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-C\-O\-D\-E\-C\-\_\-\-H\-\_\-}!codec.h@{codec.\-h}}
\subsubsection[{\-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-C\-O\-D\-E\-C\-\_\-\-H\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-\_\-\-O\-\_\-\-T\-H\-E\-O\-R\-A\-\_\-\-C\-O\-D\-E\-C\-\_\-\-H\-\_\-}~(1)}\label{codec_8h_a15352a6a862d25ab00a8f06ea65ee75b}
\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-D\-U\-P\-F\-R\-A\-M\-E@{\-T\-H\-\_\-\-D\-U\-P\-F\-R\-A\-M\-E}}
\index{\-T\-H\-\_\-\-D\-U\-P\-F\-R\-A\-M\-E@{\-T\-H\-\_\-\-D\-U\-P\-F\-R\-A\-M\-E}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-D\-U\-P\-F\-R\-A\-M\-E}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-D\-U\-P\-F\-R\-A\-M\-E}~(1)}\label{codec_8h_ab10e7b64f17a02707fc9348ea9832d09}


\-The decoded packet represented a dropped frame. 

\-The player can continue to display the current frame, as the contents of the decoded frame buffer have not changed. \index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-E\-B\-A\-D\-H\-E\-A\-D\-E\-R@{\-T\-H\-\_\-\-E\-B\-A\-D\-H\-E\-A\-D\-E\-R}}
\index{\-T\-H\-\_\-\-E\-B\-A\-D\-H\-E\-A\-D\-E\-R@{\-T\-H\-\_\-\-E\-B\-A\-D\-H\-E\-A\-D\-E\-R}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-E\-B\-A\-D\-H\-E\-A\-D\-E\-R}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-E\-B\-A\-D\-H\-E\-A\-D\-E\-R}~(-\/20)}\label{codec_8h_af00f7ecc5242d12a717202537324a510}


\-The contents of the header were incomplete, invalid, or unexpected. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-E\-B\-A\-D\-P\-A\-C\-K\-E\-T@{\-T\-H\-\_\-\-E\-B\-A\-D\-P\-A\-C\-K\-E\-T}}
\index{\-T\-H\-\_\-\-E\-B\-A\-D\-P\-A\-C\-K\-E\-T@{\-T\-H\-\_\-\-E\-B\-A\-D\-P\-A\-C\-K\-E\-T}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-E\-B\-A\-D\-P\-A\-C\-K\-E\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-E\-B\-A\-D\-P\-A\-C\-K\-E\-T}~(-\/24)}\label{codec_8h_a6efb84e9c2213a8840003eee2847b27f}


\-There were errors in the video data packet. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-E\-F\-A\-U\-L\-T@{\-T\-H\-\_\-\-E\-F\-A\-U\-L\-T}}
\index{\-T\-H\-\_\-\-E\-F\-A\-U\-L\-T@{\-T\-H\-\_\-\-E\-F\-A\-U\-L\-T}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-E\-F\-A\-U\-L\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-E\-F\-A\-U\-L\-T}~(-\/1)}\label{codec_8h_a4d8d8e34fc5ec39ffa05d61a310a0407}


\-An invalid pointer was provided. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-E\-I\-M\-P\-L@{\-T\-H\-\_\-\-E\-I\-M\-P\-L}}
\index{\-T\-H\-\_\-\-E\-I\-M\-P\-L@{\-T\-H\-\_\-\-E\-I\-M\-P\-L}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-E\-I\-M\-P\-L}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-E\-I\-M\-P\-L}~(-\/23)}\label{codec_8h_a921c47accc17841f220af5a6afb79efe}


\-The specified function is not implemented. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-E\-I\-N\-V\-A\-L@{\-T\-H\-\_\-\-E\-I\-N\-V\-A\-L}}
\index{\-T\-H\-\_\-\-E\-I\-N\-V\-A\-L@{\-T\-H\-\_\-\-E\-I\-N\-V\-A\-L}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-E\-I\-N\-V\-A\-L}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-E\-I\-N\-V\-A\-L}~(-\/10)}\label{codec_8h_afbbd9f19fbf292aeb62a37792cecb870}


\-An invalid argument was provided. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-E\-N\-O\-T\-F\-O\-R\-M\-A\-T@{\-T\-H\-\_\-\-E\-N\-O\-T\-F\-O\-R\-M\-A\-T}}
\index{\-T\-H\-\_\-\-E\-N\-O\-T\-F\-O\-R\-M\-A\-T@{\-T\-H\-\_\-\-E\-N\-O\-T\-F\-O\-R\-M\-A\-T}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-E\-N\-O\-T\-F\-O\-R\-M\-A\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-E\-N\-O\-T\-F\-O\-R\-M\-A\-T}~(-\/21)}\label{codec_8h_a3dc08a00a9aba231be398f3e31726d9c}


\-The header does not belong to a \-Theora stream. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-E\-V\-E\-R\-S\-I\-O\-N@{\-T\-H\-\_\-\-E\-V\-E\-R\-S\-I\-O\-N}}
\index{\-T\-H\-\_\-\-E\-V\-E\-R\-S\-I\-O\-N@{\-T\-H\-\_\-\-E\-V\-E\-R\-S\-I\-O\-N}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-E\-V\-E\-R\-S\-I\-O\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-E\-V\-E\-R\-S\-I\-O\-N}~(-\/22)}\label{codec_8h_ac3a45ef2b24f75259258edc481e3a122}


\-The bitstream version is too high. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-N\-D\-C\-T\-\_\-\-T\-O\-K\-E\-N\-S@{\-T\-H\-\_\-\-N\-D\-C\-T\-\_\-\-T\-O\-K\-E\-N\-S}}
\index{\-T\-H\-\_\-\-N\-D\-C\-T\-\_\-\-T\-O\-K\-E\-N\-S@{\-T\-H\-\_\-\-N\-D\-C\-T\-\_\-\-T\-O\-K\-E\-N\-S}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-N\-D\-C\-T\-\_\-\-T\-O\-K\-E\-N\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-N\-D\-C\-T\-\_\-\-T\-O\-K\-E\-N\-S}~(32)}\label{codec_8h_a2a44f48084e76a58cae48fb5d47cd422}


\-The number of \-D\-C\-T token values in each table. 

\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-N\-H\-U\-F\-F\-M\-A\-N\-\_\-\-T\-A\-B\-L\-E\-S@{\-T\-H\-\_\-\-N\-H\-U\-F\-F\-M\-A\-N\-\_\-\-T\-A\-B\-L\-E\-S}}
\index{\-T\-H\-\_\-\-N\-H\-U\-F\-F\-M\-A\-N\-\_\-\-T\-A\-B\-L\-E\-S@{\-T\-H\-\_\-\-N\-H\-U\-F\-F\-M\-A\-N\-\_\-\-T\-A\-B\-L\-E\-S}!codec.h@{codec.\-h}}
\subsubsection[{\-T\-H\-\_\-\-N\-H\-U\-F\-F\-M\-A\-N\-\_\-\-T\-A\-B\-L\-E\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf \-T\-H\-\_\-\-N\-H\-U\-F\-F\-M\-A\-N\-\_\-\-T\-A\-B\-L\-E\-S}~(80)}\label{codec_8h_a49bf449eae33c5320f0c308f32c6ae42}


\-The number of \-Huffman tables used by \-Theora. 



\subsection{\-Typedef \-Documentation}
\index{codec.\-h@{codec.\-h}!th\-\_\-comment@{th\-\_\-comment}}
\index{th\-\_\-comment@{th\-\_\-comment}!codec.h@{codec.\-h}}
\subsubsection[{th\-\_\-comment}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\-\_\-comment} {\bf th\-\_\-comment}}\label{codec_8h_a96239eba5d663e3d9ccb40031b2dcfe4}


\-The comment information. 

\-This structure holds the in-\/stream metadata corresponding to the 'comment' header packet. \-The comment header is meant to be used much like someone jotting a quick note on the label of a video. \-It should be a short, to the point text note that can be more than a couple words, but not more than a short paragraph.

\-The metadata is stored as a series of (tag, value) pairs, in length-\/encoded string vectors. \-The first occurrence of the '=' character delimits the tag and value. \-A particular tag may occur more than once, and order is significant. \-The character set encoding for the strings is always \-U\-T\-F-\/8, but the tag names are limited to \-A\-S\-C\-I\-I, and treated as case-\/insensitive. \-See {\tt the \-Theora specification}, \-Section 6.\-3.\-3 for details.

\-In filling in this structure, \doxyref{th\-\_\-decode\-\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} will null-\/terminate the user\-\_\-comment strings for safety. \-However, the bitstream format itself treats them as 8-\/bit clean vectors, possibly containing null characters, and so the length array should be treated as their authoritative length. \index{codec.\-h@{codec.\-h}!th\-\_\-quant\-\_\-base@{th\-\_\-quant\-\_\-base}}
\index{th\-\_\-quant\-\_\-base@{th\-\_\-quant\-\_\-base}!codec.h@{codec.\-h}}
\subsubsection[{th\-\_\-quant\-\_\-base}]{\setlength{\rightskip}{0pt plus 5cm}typedef unsigned char {\bf th\-\_\-quant\-\_\-base}[64]}\label{codec_8h_a6a1426d16beef8a311d7f0e9d2e96326}


\-A single base matrix. 

\index{codec.\-h@{codec.\-h}!th\-\_\-ycbcr\-\_\-buffer@{th\-\_\-ycbcr\-\_\-buffer}}
\index{th\-\_\-ycbcr\-\_\-buffer@{th\-\_\-ycbcr\-\_\-buffer}!codec.h@{codec.\-h}}
\subsubsection[{th\-\_\-ycbcr\-\_\-buffer}]{\setlength{\rightskip}{0pt plus 5cm}typedef {\bf th\-\_\-img\-\_\-plane} {\bf th\-\_\-ycbcr\-\_\-buffer}[3]}\label{codec_8h_a343f7cfabad179cc4fe527cf06873f45}


\-A complete image buffer for an uncompressed frame. 

\-The chroma planes may be decimated by a factor of two in either direction, as indicated by \doxyref{th\-\_\-info\-::pixel\-\_\-fmt}{p.}{structth__info_a2301388ef3755c41ab12fd144c1fc54e}. \-The width and height of the \-Y' plane must be multiples of 16. \-They may need to be cropped for display, using the rectangle specified by \doxyref{th\-\_\-info\-::pic\-\_\-x}{p.}{structth__info_a5b3f834bcf141564e7bb14f49101870f}, \doxyref{th\-\_\-info\-::pic\-\_\-y}{p.}{structth__info_a8aacc575cab2dfe3735001c2ad32aa14}, \doxyref{th\-\_\-info\-::pic\-\_\-width}{p.}{structth__info_a5048edf77b141dd3e9a92ca85e317345}, and \doxyref{th\-\_\-info\-::pic\-\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b}. \-All samples are 8 bits. \begin{DoxyNote}{\-Note}
\-The term \-Y\-U\-V often used to describe a colorspace is ambiguous. \-The exact parameters of the \-R\-G\-B to \-Y\-U\-V conversion process aside, in many contexts the \-U and \-V channels actually have opposite meanings. \-To avoid this confusion, we are explicit\-: the name of the color channels are \-Y'\-Cb\-Cr, and they appear in that order, always. \-The prime symbol denotes that the \-Y channel is non-\/linear. \-Cb and \-Cr stand for \char`\"{}\-Chroma blue\char`\"{} and \char`\"{}\-Chroma red\char`\"{}, respectively. 
\end{DoxyNote}


\subsection{\-Enumeration \-Type \-Documentation}
\index{codec.\-h@{codec.\-h}!th\-\_\-colorspace@{th\-\_\-colorspace}}
\index{th\-\_\-colorspace@{th\-\_\-colorspace}!codec.h@{codec.\-h}}
\subsubsection[{th\-\_\-colorspace}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf th\-\_\-colorspace}}\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0}


\-The currently defined color space tags. 

\-See {\tt the \-Theora specification}, \-Chapter 4, for exact details on the meaning of each of these color spaces. \begin{Desc}
\item[\-Enumerator\-: ]\par
\begin{description}
\index{\-T\-H\-\_\-\-C\-S\-\_\-\-U\-N\-S\-P\-E\-C\-I\-F\-I\-E\-D@{\-T\-H\-\_\-\-C\-S\-\_\-\-U\-N\-S\-P\-E\-C\-I\-F\-I\-E\-D}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-C\-S\-\_\-\-U\-N\-S\-P\-E\-C\-I\-F\-I\-E\-D@{\-T\-H\-\_\-\-C\-S\-\_\-\-U\-N\-S\-P\-E\-C\-I\-F\-I\-E\-D}}\item[{\em 
\-T\-H\-\_\-\-C\-S\-\_\-\-U\-N\-S\-P\-E\-C\-I\-F\-I\-E\-D\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf}
}]\-The color space was not specified at the encoder. \-It may be conveyed by an external means. \index{\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-M@{\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-M}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-M@{\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-M}}\item[{\em 
\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-M\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397}
}]\-A color space designed for \-N\-T\-S\-C content. \index{\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-B\-G@{\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-B\-G}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-B\-G@{\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-B\-G}}\item[{\em 
\-T\-H\-\_\-\-C\-S\-\_\-\-I\-T\-U\-\_\-\-R\-E\-C\-\_\-470\-B\-G\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe}
}]\-A color space designed for \-P\-A\-L/\-S\-E\-C\-A\-M content. \index{\-T\-H\-\_\-\-C\-S\-\_\-\-N\-S\-P\-A\-C\-E\-S@{\-T\-H\-\_\-\-C\-S\-\_\-\-N\-S\-P\-A\-C\-E\-S}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-C\-S\-\_\-\-N\-S\-P\-A\-C\-E\-S@{\-T\-H\-\_\-\-C\-S\-\_\-\-N\-S\-P\-A\-C\-E\-S}}\item[{\em 
\-T\-H\-\_\-\-C\-S\-\_\-\-N\-S\-P\-A\-C\-E\-S\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e}
}]\-The total number of currently defined color spaces. \end{description}
\end{Desc}

\index{codec.\-h@{codec.\-h}!th\-\_\-pixel\-\_\-fmt@{th\-\_\-pixel\-\_\-fmt}}
\index{th\-\_\-pixel\-\_\-fmt@{th\-\_\-pixel\-\_\-fmt}!codec.h@{codec.\-h}}
\subsubsection[{th\-\_\-pixel\-\_\-fmt}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf th\-\_\-pixel\-\_\-fmt}}\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bc}


\-The currently defined pixel format tags. 

\-See {\tt the \-Theora specification}, \-Section 4.\-4, for details on the precise sample locations. \begin{Desc}
\item[\-Enumerator\-: ]\par
\begin{description}
\index{\-T\-H\-\_\-\-P\-F\-\_\-420@{\-T\-H\-\_\-\-P\-F\-\_\-420}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-P\-F\-\_\-420@{\-T\-H\-\_\-\-P\-F\-\_\-420}}\item[{\em 
\-T\-H\-\_\-\-P\-F\-\_\-420\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162}
}]\-Chroma decimation by 2 in both the \-X and \-Y directions (4\-:2\-:0). \-The \-Cb and \-Cr chroma planes are half the width and half the height of the luma plane. \index{\-T\-H\-\_\-\-P\-F\-\_\-\-R\-S\-V\-D@{\-T\-H\-\_\-\-P\-F\-\_\-\-R\-S\-V\-D}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-P\-F\-\_\-\-R\-S\-V\-D@{\-T\-H\-\_\-\-P\-F\-\_\-\-R\-S\-V\-D}}\item[{\em 
\-T\-H\-\_\-\-P\-F\-\_\-\-R\-S\-V\-D\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6}
}]\-Currently reserved. \index{\-T\-H\-\_\-\-P\-F\-\_\-422@{\-T\-H\-\_\-\-P\-F\-\_\-422}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-P\-F\-\_\-422@{\-T\-H\-\_\-\-P\-F\-\_\-422}}\item[{\em 
\-T\-H\-\_\-\-P\-F\-\_\-422\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa}
}]\-Chroma decimation by 2 in the \-X direction (4\-:2\-:2). \-The \-Cb and \-Cr chroma planes are half the width of the luma plane, but full height. \index{\-T\-H\-\_\-\-P\-F\-\_\-444@{\-T\-H\-\_\-\-P\-F\-\_\-444}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-P\-F\-\_\-444@{\-T\-H\-\_\-\-P\-F\-\_\-444}}\item[{\em 
\-T\-H\-\_\-\-P\-F\-\_\-444\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86}
}]\-No chroma decimation (4\-:4\-:4). \-The \-Cb and \-Cr chroma planes are full width and full height. \index{\-T\-H\-\_\-\-P\-F\-\_\-\-N\-F\-O\-R\-M\-A\-T\-S@{\-T\-H\-\_\-\-P\-F\-\_\-\-N\-F\-O\-R\-M\-A\-T\-S}!codec.\-h@{codec.\-h}}\index{codec.\-h@{codec.\-h}!\-T\-H\-\_\-\-P\-F\-\_\-\-N\-F\-O\-R\-M\-A\-T\-S@{\-T\-H\-\_\-\-P\-F\-\_\-\-N\-F\-O\-R\-M\-A\-T\-S}}\item[{\em 
\-T\-H\-\_\-\-P\-F\-\_\-\-N\-F\-O\-R\-M\-A\-T\-S\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb}
}]\-The total number of currently defined pixel formats. \end{description}
\end{Desc}

