\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*{Macros}
\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{Macro Definition 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 \-\_\-\-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 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 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 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 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 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 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 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 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 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 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 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} 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}
