From 7568c2d41576ba09700f3aa27d31886c632bf8ca Mon Sep 17 00:00:00 2001
From: Petter Reinholdtsen <pere@hungry.com>
Date: Mon, 17 Mar 2025 06:26:17 +0100
Subject: [PATCH] libtheora 1.2.0 release.

Updated download and documentation links and content for the
libtheora 1.2.0 release.
---
 doc/libtheora-1.2/annotated.html              |   90 +-
 doc/libtheora-1.2/bc_s.png                    |  Bin 677 -> 676 bytes
 doc/libtheora-1.2/bdwn.png                    |  Bin 0 -> 147 bytes
 doc/libtheora-1.2/classes.html                |   78 +-
 doc/libtheora-1.2/closed.png                  |  Bin 126 -> 132 bytes
 doc/libtheora-1.2/codec_8h.html               |  986 +++++++--
 doc/libtheora-1.2/codec_8h_source.html        |  454 ++--
 .../dir_0f91760d62c578de767c41a0aaae5482.html |   71 +
 .../dir_d44c64559bbebec7f509842c48db8b23.html |   61 +
 doc/libtheora-1.2/doc.png                     |  Bin 0 -> 746 bytes
 doc/libtheora-1.2/doxygen.css                 | 1467 +++++++++++--
 doc/libtheora-1.2/doxygen.png                 |  Bin 3942 -> 0 bytes
 doc/libtheora-1.2/doxygen.svg                 |   26 +
 doc/libtheora-1.2/dynsections.js              |  121 +
 doc/libtheora-1.2/files.html                  |   80 +-
 doc/libtheora-1.2/folderclosed.png            |  Bin 0 -> 616 bytes
 doc/libtheora-1.2/folderopen.png              |  Bin 0 -> 597 bytes
 doc/libtheora-1.2/functions.html              |  407 ++--
 doc/libtheora-1.2/functions_vars.html         |  407 ++--
 doc/libtheora-1.2/globals.html                |  633 ++----
 doc/libtheora-1.2/globals_defs.html           |  293 +--
 doc/libtheora-1.2/globals_enum.html           |   90 +-
 doc/libtheora-1.2/globals_eval.html           |  142 +-
 doc/libtheora-1.2/globals_func.html           |  297 +--
 doc/libtheora-1.2/globals_type.html           |  106 +-
 doc/libtheora-1.2/globals_vars.html           |   82 +-
 doc/libtheora-1.2/group__basefuncs.html       |  575 +----
 doc/libtheora-1.2/group__decfuncs.html        |  399 +---
 doc/libtheora-1.2/group__encfuncs.html        |  349 +--
 doc/libtheora-1.2/group__oldfuncs.html        | 1675 +-------------
 doc/libtheora-1.2/index.html                  |   86 +-
 doc/libtheora-1.2/jquery.js                   |   35 +
 doc/libtheora-1.2/menu.js                     |  135 ++
 doc/libtheora-1.2/menudata.js                 |   87 +
 doc/libtheora-1.2/modules.html                |   74 +-
 doc/libtheora-1.2/nav_f.png                   |  Bin 159 -> 153 bytes
 doc/libtheora-1.2/nav_g.png                   |  Bin 0 -> 95 bytes
 doc/libtheora-1.2/nav_h.png                   |  Bin 97 -> 98 bytes
 doc/libtheora-1.2/open.png                    |  Bin 118 -> 123 bytes
 doc/libtheora-1.2/splitbar.png                |  Bin 0 -> 314 bytes
 doc/libtheora-1.2/structth__comment.html      |  140 +-
 doc/libtheora-1.2/structth__huff__code.html   |  108 +-
 doc/libtheora-1.2/structth__img__plane.html   |  134 +-
 doc/libtheora-1.2/structth__info.html         |  361 +--
 doc/libtheora-1.2/structth__quant__info.html  |  160 +-
 .../structth__quant__ranges.html              |  122 +-
 .../structth__stripe__callback.html           |  106 +-
 doc/libtheora-1.2/structtheora__comment.html  |  141 +-
 doc/libtheora-1.2/structtheora__info.html     |  461 ++--
 doc/libtheora-1.2/structtheora__state.html    |  127 +-
 doc/libtheora-1.2/structyuv__buffer.html      |  213 +-
 doc/libtheora-1.2/sync_off.png                |  Bin 0 -> 853 bytes
 doc/libtheora-1.2/sync_on.png                 |  Bin 0 -> 845 bytes
 doc/libtheora-1.2/tab_a.png                   |  Bin 140 -> 142 bytes
 doc/libtheora-1.2/tab_b.png                   |  Bin 178 -> 169 bytes
 doc/libtheora-1.2/tab_h.png                   |  Bin 192 -> 177 bytes
 doc/libtheora-1.2/tab_s.png                   |  Bin 189 -> 184 bytes
 doc/libtheora-1.2/tabs.css                    |   60 +-
 doc/libtheora-1.2/theora_8h.html              | 1943 +++++++++++++++--
 doc/libtheora-1.2/theora_8h_source.html       |  584 +++--
 doc/libtheora-1.2/theoradec_8h.html           |  737 +++++--
 doc/libtheora-1.2/theoradec_8h_source.html    |  233 +-
 doc/libtheora-1.2/theoraenc_8h.html           | 1051 ++++++---
 doc/libtheora-1.2/theoraenc_8h_source.html    |  245 ++-
 downloads/index.shtml                         |   14 +-
 news/index.shtml                              |   34 +
 66 files changed, 8914 insertions(+), 7366 deletions(-)
 create mode 100644 doc/libtheora-1.2/bdwn.png
 create mode 100644 doc/libtheora-1.2/dir_0f91760d62c578de767c41a0aaae5482.html
 create mode 100644 doc/libtheora-1.2/dir_d44c64559bbebec7f509842c48db8b23.html
 create mode 100644 doc/libtheora-1.2/doc.png
 delete mode 100644 doc/libtheora-1.2/doxygen.png
 create mode 100644 doc/libtheora-1.2/doxygen.svg
 create mode 100644 doc/libtheora-1.2/dynsections.js
 create mode 100644 doc/libtheora-1.2/folderclosed.png
 create mode 100644 doc/libtheora-1.2/folderopen.png
 create mode 100644 doc/libtheora-1.2/jquery.js
 create mode 100644 doc/libtheora-1.2/menu.js
 create mode 100644 doc/libtheora-1.2/menudata.js
 create mode 100644 doc/libtheora-1.2/nav_g.png
 create mode 100644 doc/libtheora-1.2/splitbar.png
 create mode 100644 doc/libtheora-1.2/sync_off.png
 create mode 100644 doc/libtheora-1.2/sync_on.png

diff --git a/doc/libtheora-1.2/annotated.html b/doc/libtheora-1.2/annotated.html
index cabd199..aee8d04 100644
--- a/doc/libtheora-1.2/annotated.html
+++ b/doc/libtheora-1.2/annotated.html
@@ -1,50 +1,66 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: Data Structures</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="headertitle">
-<h1>Data Structures</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">Data Structures</div></div>
+</div><!--header-->
 <div class="contents">
-Here are the data structures with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="structth__comment.html">th_comment</a></td><td class="indexvalue">The comment information </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structth__huff__code.html">th_huff_code</a></td><td class="indexvalue">A Huffman code for a Theora DCT token </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structth__img__plane.html">th_img_plane</a></td><td class="indexvalue">A buffer for a single color plane in an uncompressed image </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structth__info.html">th_info</a></td><td class="indexvalue">Theora bitstream information </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structth__quant__info.html">th_quant_info</a></td><td class="indexvalue">A complete set of quantization parameters </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></td><td class="indexvalue">A set of <em>qi</em> ranges </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></td><td class="indexvalue">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structtheora__comment.html">theora_comment</a></td><td class="indexvalue">Comment header metadata </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structtheora__info.html">theora_info</a></td><td class="indexvalue">Theora bitstream info </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structtheora__state.html">theora_state</a></td><td class="indexvalue">Codec internal state and context </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td><td class="indexvalue">A YUV buffer for passing uncompressed frames to and from the codec </td></tr>
+<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structth__comment.html" target="_self">th_comment</a></td><td class="desc">The comment information </td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structth__huff__code.html" target="_self">th_huff_code</a></td><td class="desc">A Huffman code for a Theora DCT token </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structth__img__plane.html" target="_self">th_img_plane</a></td><td class="desc">A buffer for a single color plane in an uncompressed image </td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structth__info.html" target="_self">th_info</a></td><td class="desc">Theora bitstream information </td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structth__quant__info.html" target="_self">th_quant_info</a></td><td class="desc">A complete set of quantization parameters </td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structth__quant__ranges.html" target="_self">th_quant_ranges</a></td><td class="desc">A set of <em>qi</em> ranges </td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structth__stripe__callback.html" target="_self">th_stripe_callback</a></td><td class="desc">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a> </td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtheora__comment.html" target="_self">theora_comment</a></td><td class="desc">Comment header metadata </td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtheora__info.html" target="_self">theora_info</a></td><td class="desc">Theora bitstream info </td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtheora__state.html" target="_self">theora_state</a></td><td class="desc">Codec internal state and context </td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structyuv__buffer.html" target="_self">yuv_buffer</a></td><td class="desc">A YUV buffer for passing uncompressed frames to and from the codec </td></tr>
 </table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/bc_s.png b/doc/libtheora-1.2/bc_s.png
index e4018628b5b45cb4301037485a29d7d74ac22138..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 100644
GIT binary patch
delta 665
zcmV;K0%rZC1*8R#7k?fI1^@s65rAI}0007ONkl<ZcmeI5%WD%+6voe;xyj6=NhXt~
z4{e$zF*P<SZp4L@2Hd!iQY<tJD@e5{RU55hl&Talf{KWbN*6A=C`Gqz5#NvcXzNOC
zOH(I9n<#?l<k5ws2omoMCgj%s3y1G=&gJ~>y__>=_9%My{eRLXUpWx-eUjCm06>Xt
z+I1jc5)9aAVDb0VuL%I4g!%?1xA7bv@z>dYlf9SR@`nP>-O&$CG`J;+GqR^Y%Iat-
zfdBb{ADLXlS!q5>VhTWK``>Bah!Fa+(Q9WJ1_h_%>Rb`%y{!Y9MV(dVopvifMS$)i
zaOT$ALR^DcCVv+2*z+WIO)Kh>4n%IeDSh((I;U7~;thi{irTLOC$GOQ1%hV5Fzj`T
zIr2>XYJg@RHn=6L0W(Ktl++{Cb8Q>|C><;p`NL}}%9686ss)9wyaE790?VRr<Q9gM
zycKm{ehC1ua$O}Q2W=K^9CclK4gj!nHCxTbu&dhgm45*MSY@@6hDrH6$mr0;X8=G+
z)Y{(Qwd*s2Ixjp007}OklF(5p3GumwbQ{{=_XGeaP5WFnGwDNTY$5#u?K}UtG}&n4
z@jdri>oPg5caq)Gw6_$9Ry)c}7&C)vCO4_Ky1n;dAxVY-DeLPbE%wJ2)A|6jn;VNa
zbV*jeR)65})cj&*s5lRy$b&*W@2j<GZEpXZ$P|Z!4Q$_|`5gj>+e8bOBgqIgldUJl
zG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66A~!21vmF3H2{ngD
z;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpKoYWVNxtPI00000NkvXXu0mjfOd>TD

delta 666
zcmV;L0%iTA1*HX$7k?lK1^@s6FYr0g0007PNkl<ZcmeI*OGs307zgnG^PYER&KYOs
z%o(rcIF8epmx?y=EkYF9v<Q&|U1SiJ6joXmO<{#Z1{D!~-)FdJ;X<UgD$)I7<)u|Q
zikCBkjz$o9Jfn*k3BnYbVdm(v?X!6w`2WuHp2hR-sr|vn<$s<2bO7*=s@eh!C6pgH
zR%(?@+-wr~x5XbrMnG+y!~cjD-dmLK{0YD}s%pPdz?J($05DYIRTPU^xcFJs`jP?v
zb9R1@#scmv+i3tPfG&3o0)Ux_=6Cp90%KGW3~3Vy(E9&iyl;1B+xEL0;z%&0H6_5M
z|31X~TrRN5(tiTiDgaL~tSw`GLg3!}<SQR-bIXNR(bP2-);a)y&fk5P3@U7rsmJG*
zW5JMCxETO|PsLuvVdCu6Sa|U%wcHsng5&A3cydc-+T3_}v5J~+y)^<!5a?^MS7D6N
z9%{Pz#s~o5wmaKa;j~)@sPV?D%|NBYW^VT6*uSvNQhxx|E{CYBu0o{~*Iyb#nTX~~
zd@ij0vY#5Ry)c3^8H!Y&rAVQP8NG&%wmmn3px@)PnK)~hoY7y?k*m*=!!oPLA9}Ys
zRwicjLI4nUmmf|B?Kv4~R?b<M7L5%90M)fViH9zMQFwd40suvmv-$!62)oJ>6B-qV
zm?w#RWPfTl+MU>k+Q8#@KjqJJN`gRj(~)RmNrck9ht@LelPtVOwp(J;k!T=gC#%o(
z13-^E+g@aqc()pf{+j|0w)AH*Mq$54UjLv#jV$RYpz3Vjg$$=u>yj<w>fBQOhL=^@
z+#4#$l|{~}HZ-?1Yy{lI*$N}*YDC`<{+;>_#S@USZ+nzZ2><{907*qoM6N<$g4HoZ
AIsgCw

diff --git a/doc/libtheora-1.2/bdwn.png b/doc/libtheora-1.2/bdwn.png
new file mode 100644
index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452
GIT binary patch
literal 147
zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C<wUB513~7
zF-Lk{?g8$ijf`2F^ip|Vw7EpzIJxiU`6~>2wk~_T<sM_r%les%%^JdHy*A#$ew5wb
vr&wL1c8#4j*F5jfGT)c(PZrEb5O3m+yDrVre6KeTXbXd<tDnm{r-UW|3$!!q

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/classes.html b/doc/libtheora-1.2/classes.html
index d80c842..1626334 100644
--- a/doc/libtheora-1.2/classes.html
+++ b/doc/libtheora-1.2/classes.html
@@ -1,42 +1,60 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Alphabetical List</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Data Structure Index</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="headertitle">
-<h1>Data Structure Index</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">Data Structure Index</div></div>
+</div><!--header-->
 <div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Y">Y</a></div>
-<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structth__img__plane.html">th_img_plane</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__info.html">theora_info</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_Y"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Y&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structth__comment.html">th_comment</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__info.html">th_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__state.html">theora_state</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyuv__buffer.html">yuv_buffer</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structth__huff__code.html">th_huff_code</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__quant__info.html">th_quant_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__comment.html">theora_comment</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Y">Y</a></div>
+<div class="qindex"><a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_Y">Y</a></div>
+<div class="classindex">
+<dl class="classindex even">
+<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
+<dd><a class="el" href="structth__comment.html">th_comment</a></dd><dd><a class="el" href="structth__huff__code.html">th_huff_code</a></dd><dd><a class="el" href="structth__img__plane.html">th_img_plane</a></dd><dd><a class="el" href="structth__info.html">th_info</a></dd><dd><a class="el" href="structth__quant__info.html">th_quant_info</a></dd><dd><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></dd><dd><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></dd><dd><a class="el" href="structtheora__comment.html">theora_comment</a></dd><dd><a class="el" href="structtheora__info.html">theora_info</a></dd><dd><a class="el" href="structtheora__state.html">theora_state</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a id="letter_Y" name="letter_Y">Y</a></dt>
+<dd><a class="el" href="structyuv__buffer.html">yuv_buffer</a></dd></dl>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/closed.png b/doc/libtheora-1.2/closed.png
index b7d4bd9fef2272c74b94762c9e2496177017775e..98cc2c909da37a6df914fbf67780eebd99c597f5 100644
GIT binary patch
delta 102
zcmV-s0Ga=OgaMEwU`t6vK~#7F?cHq+Kp_Z*(MM~U$pSaPEnp^d>2z}grjWq#{_^k<
z0YK$zeE_O5fQ^L-P$j`%%l^MkvJEaeFhpymi^7`@cp?ebn<=3b5O~rx^#A|>07*qo
IM6N<$f|rOX*#H0l

delta 96
zcmZo+tec<`<?89;7*fIb_O2tZgCY-eK-b#LS&jM$Y!_PePT1=xHkWc$<=mU*m0@^)
zhIZNCAbt)uAJ&)4D;y>s7MjVWp=ECAagp<1j^;uU0fEn(IvIe#)78&qol`;+0I1v|
A!2kdN

diff --git a/doc/libtheora-1.2/codec_8h.html b/doc/libtheora-1.2/codec_8h.html
index b02ca0a..cf96f9a 100644
--- a/doc/libtheora-1.2/codec_8h.html
+++ b/doc/libtheora-1.2/codec_8h.html
@@ -1,321 +1,382 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: codec.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
+</div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Defines</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a>  </div>
-  <div class="headertitle">
-<h1>codec.h File Reference</h1>  </div>
-</div>
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle"><div class="title">codec.h File Reference</div></div>
+</div><!--header-->
 <div class="contents">
 
 <p>The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API.  
-<a href="#_details">More...</a></p>
-<code>#include &lt;ogg/ogg.h&gt;</code><br/>
-
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;ogg/ogg.h&gt;</code><br />
+</div>
 <p><a href="codec_8h_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
 Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html">th_img_plane</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A buffer for a single color plane in an uncompressed image.  <a href="structth__img__plane.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html">th_info</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream information.  <a href="structth__info.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html">th_comment</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The comment information.  <a href="structth__comment.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A set of <em>qi</em> ranges.  <a href="structth__quant__ranges.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html">th_quant_info</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A complete set of quantization parameters.  <a href="structth__quant__info.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html">th_huff_code</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A Huffman code for a Theora DCT token.  <a href="structth__huff__code.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">_O_THEORA_CODEC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a>&nbsp;&nbsp;&nbsp;(80)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of Huffman tables used by Theora.  <a href="#a49bf449eae33c5320f0c308f32c6ae42"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a>&nbsp;&nbsp;&nbsp;(32)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of DCT token values in each table.  <a href="#a2a44f48084e76a58cae48fb5d47cd422"></a><br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Return codes</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp800007e5fae550658ee577ca16693452"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">TH_EFAULT</a>&nbsp;&nbsp;&nbsp;(-1)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An invalid pointer was provided.  <a href="#a4d8d8e34fc5ec39ffa05d61a310a0407"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">TH_EINVAL</a>&nbsp;&nbsp;&nbsp;(-10)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An invalid argument was provided.  <a href="#afbbd9f19fbf292aeb62a37792cecb870"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">TH_EBADHEADER</a>&nbsp;&nbsp;&nbsp;(-20)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The contents of the header were incomplete, invalid, or unexpected.  <a href="#af00f7ecc5242d12a717202537324a510"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">TH_ENOTFORMAT</a>&nbsp;&nbsp;&nbsp;(-21)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The header does not belong to a Theora stream.  <a href="#a3dc08a00a9aba231be398f3e31726d9c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">TH_EVERSION</a>&nbsp;&nbsp;&nbsp;(-22)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The bitstream version is too high.  <a href="#ac3a45ef2b24f75259258edc481e3a122"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">TH_EIMPL</a>&nbsp;&nbsp;&nbsp;(-23)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The specified function is not implemented.  <a href="#a921c47accc17841f220af5a6afb79efe"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">TH_EBADPACKET</a>&nbsp;&nbsp;&nbsp;(-24)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">There were errors in the video data packet.  <a href="#a6efb84e9c2213a8840003eee2847b27f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">TH_DUPFRAME</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The decoded packet represented a dropped frame.  <a href="#ab10e7b64f17a02707fc9348ea9832d09"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> [3]</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A complete image buffer for an uncompressed frame.  <a href="#a343f7cfabad179cc4fe527cf06873f45"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structth__comment.html">th_comment</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">th_comment</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The comment information.  <a href="#a96239eba5d663e3d9ccb40031b2dcfe4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> [64]</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A single base matrix.  <a href="#a6a1426d16beef8a311d7f0e9d2e96326"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> { <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">TH_CS_UNSPECIFIED</a>, 
-<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">TH_CS_ITU_REC_470M</a>, 
-<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">TH_CS_ITU_REC_470BG</a>, 
-<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">TH_CS_NSPACES</a>
- }</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The currently defined color space tags. </p>
- <a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> { <br/>
-&nbsp;&nbsp;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">TH_PF_420</a>, 
-<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">TH_PF_RSVD</a>, 
-<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">TH_PF_422</a>, 
-<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">TH_PF_444</a>, 
-<br/>
-&nbsp;&nbsp;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">TH_PF_NFORMATS</a>
-<br/>
- }</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The currently defined pixel format tags. </p>
- <a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html">th_img_plane</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A buffer for a single color plane in an uncompressed image.  <a href="structth__img__plane.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html">th_info</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theora bitstream information.  <a href="structth__info.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html">th_comment</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment information.  <a href="structth__comment.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A set of <em>qi</em> ranges.  <a href="structth__quant__ranges.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html">th_quant_info</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A complete set of quantization parameters.  <a href="structth__quant__info.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html">th_huff_code</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A Huffman code for a Theora DCT token.  <a href="structth__huff__code.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:aaff54665be7ea0fb741419663c775fe3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#aaff54665be7ea0fb741419663c775fe3">OGG_THEORA_CODEC_HEADER</a>&#160;&#160;&#160;(1)</td></tr>
+<tr class="separator:aaff54665be7ea0fb741419663c775fe3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
 Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Basic shared functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb625c22fa07613c734f71c378fe32d7a"></a> </p>
+<tr><td colspan="2"><div class="groupText"><p >These functions return information about the library itself, or provide high-level information about codec state and packet type.</p>
+<p >You must link to <code>libtheoradec</code> if you use any of the functions in this section. </p>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">th_version_string</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves a human-readable string to identify the library vendor and version.  <a href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">th_version_number</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the library version number.  <a href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute frame index, starting at <code>0</code>.  <a href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">th_granule_time</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute time in seconds.  <a href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a> (ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a Theora packet is a header or not.  <a href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a> (ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a theora packet is a key frame or not.  <a href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a"></a><br/></td></tr>
+<tr class="memitem:a57a0637587e6f78a718d03c927f2c9fd"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a57a0637587e6f78a718d03c927f2c9fd">th_version_string</a> (void)</td></tr>
+<tr class="memdesc:a57a0637587e6f78a718d03c927f2c9fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a human-readable string to identify the library vendor and version.  <a href="codec_8h.html#a57a0637587e6f78a718d03c927f2c9fd">More...</a><br /></td></tr>
+<tr class="separator:a57a0637587e6f78a718d03c927f2c9fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab723a75c0f95b3eb817f7f769846016b"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ab723a75c0f95b3eb817f7f769846016b">th_version_number</a> (void)</td></tr>
+<tr class="memdesc:ab723a75c0f95b3eb817f7f769846016b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the library version number.  <a href="codec_8h.html#ab723a75c0f95b3eb817f7f769846016b">More...</a><br /></td></tr>
+<tr class="separator:ab723a75c0f95b3eb817f7f769846016b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a95b10e76fc4c05d0240ea2dfd9fd62bd"><td class="memItemLeft" align="right" valign="top">ogg_int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr class="memdesc:a95b10e76fc4c05d0240ea2dfd9fd62bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a granule position to an absolute frame index, starting at <code>0</code>.  <a href="codec_8h.html#a95b10e76fc4c05d0240ea2dfd9fd62bd">More...</a><br /></td></tr>
+<tr class="separator:a95b10e76fc4c05d0240ea2dfd9fd62bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a707e1e281de788af0df39ef00f3fb432"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a707e1e281de788af0df39ef00f3fb432">th_granule_time</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr class="memdesc:a707e1e281de788af0df39ef00f3fb432"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a granule position to an absolute time in seconds.  <a href="codec_8h.html#a707e1e281de788af0df39ef00f3fb432">More...</a><br /></td></tr>
+<tr class="separator:a707e1e281de788af0df39ef00f3fb432"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02f3f38261a9b39452d8a5e6f8737cc1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a> (ogg_packet *_op)</td></tr>
+<tr class="memdesc:a02f3f38261a9b39452d8a5e6f8737cc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines whether a Theora packet is a header or not.  <a href="codec_8h.html#a02f3f38261a9b39452d8a5e6f8737cc1">More...</a><br /></td></tr>
+<tr class="separator:a02f3f38261a9b39452d8a5e6f8737cc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afe95cfd06f0fef413266c9168a66248a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#afe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a> (ogg_packet *_op)</td></tr>
+<tr class="memdesc:afe95cfd06f0fef413266c9168a66248a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines whether a theora packet is a key frame or not.  <a href="codec_8h.html#afe95cfd06f0fef413266c9168a66248a">More...</a><br /></td></tr>
+<tr class="separator:afe95cfd06f0fef413266c9168a66248a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Functions for manipulating header data</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp14ef5f819e97c870c128539ed1f334e3"></a> </p>
+<tr><td colspan="2"><div class="groupText"><p >These functions manipulate the <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> and <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structures which describe video parameters and key-value metadata, respectively.</p>
+<p >You must link to <code>libtheoradec</code> if you use any of the functions in this section. </p>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">th_info_init</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">th_comment_add</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_comment)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">th_comment_add_tag</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, char *_val)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">th_comment_query</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, int _count)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by its tag.  <a href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">th_comment_query_count</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">th_comment_clear</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3"></a><br/></td></tr>
+<tr class="memitem:a430d9c605816a6ca0bdce3a0b965b926"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926">th_info_init</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr class="memdesc:a430d9c605816a6ca0bdce3a0b965b926"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926">More...</a><br /></td></tr>
+<tr class="separator:a430d9c605816a6ca0bdce3a0b965b926"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3d6441ab4a4969859ef5fd78a9e3c1c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr class="memdesc:ab3d6441ab4a4969859ef5fd78a9e3c1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="codec_8h.html#ab3d6441ab4a4969859ef5fd78a9e3c1c">More...</a><br /></td></tr>
+<tr class="separator:ab3d6441ab4a4969859ef5fd78a9e3c1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c8ab25988e7ea9d7b1e31a54cf58f09"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr class="memdesc:a6c8ab25988e7ea9d7b1e31a54cf58f09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="codec_8h.html#a6c8ab25988e7ea9d7b1e31a54cf58f09">More...</a><br /></td></tr>
+<tr class="separator:a6c8ab25988e7ea9d7b1e31a54cf58f09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6be106c7e209680199a98d6d537d7e23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23">th_comment_add</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, const char *_comment)</td></tr>
+<tr class="memdesc:a6be106c7e209680199a98d6d537d7e23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23">More...</a><br /></td></tr>
+<tr class="separator:a6be106c7e209680199a98d6d537d7e23"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acdfd88bde77364dd8342c55daa9ff151"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151">th_comment_add_tag</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, const char *_tag, const char *_val)</td></tr>
+<tr class="memdesc:acdfd88bde77364dd8342c55daa9ff151"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151">More...</a><br /></td></tr>
+<tr class="separator:acdfd88bde77364dd8342c55daa9ff151"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa68e50bc76d5f94dd83260b15ca7d211"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211">th_comment_query</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, const char *_tag, int _count)</td></tr>
+<tr class="memdesc:aa68e50bc76d5f94dd83260b15ca7d211"><td class="mdescLeft">&#160;</td><td class="mdescRight">Look up a comment value by its tag.  <a href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211">More...</a><br /></td></tr>
+<tr class="separator:aa68e50bc76d5f94dd83260b15ca7d211"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1b5b1a478c1e404b22b823dc95a1f51"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51">th_comment_query_count</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, const char *_tag)</td></tr>
+<tr class="memdesc:ab1b5b1a478c1e404b22b823dc95a1f51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51">More...</a><br /></td></tr>
+<tr class="separator:ab1b5b1a478c1e404b22b823dc95a1f51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae736c1afa514947a3feb223143af95e3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ae736c1afa514947a3feb223143af95e3">th_comment_clear</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr class="memdesc:ae736c1afa514947a3feb223143af95e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="codec_8h.html#ae736c1afa514947a3feb223143af95e3">More...</a><br /></td></tr>
+<tr class="separator:ae736c1afa514947a3feb223143af95e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Return codes</h2></td></tr>
+<tr class="memitem:a4d8d8e34fc5ec39ffa05d61a310a0407"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">TH_EFAULT</a>&#160;&#160;&#160;(-1)</td></tr>
+<tr class="memdesc:a4d8d8e34fc5ec39ffa05d61a310a0407"><td class="mdescLeft">&#160;</td><td class="mdescRight">An invalid pointer was provided.  <a href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">More...</a><br /></td></tr>
+<tr class="separator:a4d8d8e34fc5ec39ffa05d61a310a0407"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afbbd9f19fbf292aeb62a37792cecb870"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">TH_EINVAL</a>&#160;&#160;&#160;(-10)</td></tr>
+<tr class="memdesc:afbbd9f19fbf292aeb62a37792cecb870"><td class="mdescLeft">&#160;</td><td class="mdescRight">An invalid argument was provided.  <a href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">More...</a><br /></td></tr>
+<tr class="separator:afbbd9f19fbf292aeb62a37792cecb870"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af00f7ecc5242d12a717202537324a510"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">TH_EBADHEADER</a>&#160;&#160;&#160;(-20)</td></tr>
+<tr class="memdesc:af00f7ecc5242d12a717202537324a510"><td class="mdescLeft">&#160;</td><td class="mdescRight">The contents of the header were incomplete, invalid, or unexpected.  <a href="codec_8h.html#af00f7ecc5242d12a717202537324a510">More...</a><br /></td></tr>
+<tr class="separator:af00f7ecc5242d12a717202537324a510"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3dc08a00a9aba231be398f3e31726d9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">TH_ENOTFORMAT</a>&#160;&#160;&#160;(-21)</td></tr>
+<tr class="memdesc:a3dc08a00a9aba231be398f3e31726d9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The header does not belong to a Theora stream.  <a href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">More...</a><br /></td></tr>
+<tr class="separator:a3dc08a00a9aba231be398f3e31726d9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac3a45ef2b24f75259258edc481e3a122"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">TH_EVERSION</a>&#160;&#160;&#160;(-22)</td></tr>
+<tr class="memdesc:ac3a45ef2b24f75259258edc481e3a122"><td class="mdescLeft">&#160;</td><td class="mdescRight">The bitstream version is too high.  <a href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">More...</a><br /></td></tr>
+<tr class="separator:ac3a45ef2b24f75259258edc481e3a122"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a921c47accc17841f220af5a6afb79efe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">TH_EIMPL</a>&#160;&#160;&#160;(-23)</td></tr>
+<tr class="memdesc:a921c47accc17841f220af5a6afb79efe"><td class="mdescLeft">&#160;</td><td class="mdescRight">The specified function is not implemented.  <a href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">More...</a><br /></td></tr>
+<tr class="separator:a921c47accc17841f220af5a6afb79efe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6efb84e9c2213a8840003eee2847b27f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">TH_EBADPACKET</a>&#160;&#160;&#160;(-24)</td></tr>
+<tr class="memdesc:a6efb84e9c2213a8840003eee2847b27f"><td class="mdescLeft">&#160;</td><td class="mdescRight">There were errors in the video data packet.  <a href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">More...</a><br /></td></tr>
+<tr class="separator:a6efb84e9c2213a8840003eee2847b27f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab10e7b64f17a02707fc9348ea9832d09"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">TH_DUPFRAME</a>&#160;&#160;&#160;(1)</td></tr>
+<tr class="memdesc:ab10e7b64f17a02707fc9348ea9832d09"><td class="mdescLeft">&#160;</td><td class="mdescRight">The decoded packet represented a dropped frame.  <a href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">More...</a><br /></td></tr>
+<tr class="separator:ab10e7b64f17a02707fc9348ea9832d09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49bf449eae33c5320f0c308f32c6ae42"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a>&#160;&#160;&#160;(80)</td></tr>
+<tr class="memdesc:a49bf449eae33c5320f0c308f32c6ae42"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of Huffman tables used by Theora.  <a href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">More...</a><br /></td></tr>
+<tr class="separator:a49bf449eae33c5320f0c308f32c6ae42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a44f48084e76a58cae48fb5d47cd422"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a>&#160;&#160;&#160;(32)</td></tr>
+<tr class="memdesc:a2a44f48084e76a58cae48fb5d47cd422"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of DCT token values in each table.  <a href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">More...</a><br /></td></tr>
+<tr class="separator:a2a44f48084e76a58cae48fb5d47cd422"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ce7a695ce353b1582d29b6c1ddf31a0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> { <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">TH_CS_UNSPECIFIED</a>
+, <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">TH_CS_ITU_REC_470M</a>
+, <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">TH_CS_ITU_REC_470BG</a>
+, <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">TH_CS_NSPACES</a>
+ }</td></tr>
+<tr class="memdesc:a4ce7a695ce353b1582d29b6c1ddf31a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The currently defined color space tags.  <a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">More...</a><br /></td></tr>
+<tr class="separator:a4ce7a695ce353b1582d29b6c1ddf31a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c9e7f2f0c7ed209c9ca3ed0abd328bc"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> { <br />
+&#160;&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">TH_PF_420</a>
+, <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">TH_PF_RSVD</a>
+, <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">TH_PF_422</a>
+, <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">TH_PF_444</a>
+, <br />
+&#160;&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">TH_PF_NFORMATS</a>
+<br />
+ }</td></tr>
+<tr class="memdesc:a5c9e7f2f0c7ed209c9ca3ed0abd328bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">The currently defined pixel format tags.  <a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">More...</a><br /></td></tr>
+<tr class="separator:a5c9e7f2f0c7ed209c9ca3ed0abd328bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a343f7cfabad179cc4fe527cf06873f45"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>[3]</td></tr>
+<tr class="memdesc:a343f7cfabad179cc4fe527cf06873f45"><td class="mdescLeft">&#160;</td><td class="mdescRight">A complete image buffer for an uncompressed frame.  <a href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">More...</a><br /></td></tr>
+<tr class="separator:a343f7cfabad179cc4fe527cf06873f45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96239eba5d663e3d9ccb40031b2dcfe4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structth__comment.html">th_comment</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">th_comment</a></td></tr>
+<tr class="memdesc:a96239eba5d663e3d9ccb40031b2dcfe4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment information.  <a href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">More...</a><br /></td></tr>
+<tr class="separator:a96239eba5d663e3d9ccb40031b2dcfe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6a1426d16beef8a311d7f0e9d2e96326"><td class="memItemLeft" align="right" valign="top">typedef unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>[64]</td></tr>
+<tr class="memdesc:a6a1426d16beef8a311d7f0e9d2e96326"><td class="mdescLeft">&#160;</td><td class="mdescRight">A single base matrix.  <a href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">More...</a><br /></td></tr>
+<tr class="separator:a6a1426d16beef8a311d7f0e9d2e96326"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API. </p>
-<p>You don't need to include this directly. </p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a15352a6a862d25ab00a8f06ea65ee75b"></a><!-- doxytag: member="codec.h::_O_THEORA_CODEC_H_" ref="a15352a6a862d25ab00a8f06ea65ee75b" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API. </p>
+<p >You don't need to include this directly. </p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="aaff54665be7ea0fb741419663c775fe3" name="aaff54665be7ea0fb741419663c775fe3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaff54665be7ea0fb741419663c775fe3">&#9670;&nbsp;</a></span>OGG_THEORA_CODEC_HEADER</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define _O_THEORA_CODEC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+          <td class="memname">#define OGG_THEORA_CODEC_HEADER&#160;&#160;&#160;(1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="ab10e7b64f17a02707fc9348ea9832d09"></a><!-- doxytag: member="codec.h::TH_DUPFRAME" ref="ab10e7b64f17a02707fc9348ea9832d09" args="" -->
+<a id="ab10e7b64f17a02707fc9348ea9832d09" name="ab10e7b64f17a02707fc9348ea9832d09"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab10e7b64f17a02707fc9348ea9832d09">&#9670;&nbsp;</a></span>TH_DUPFRAME</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DUPFRAME&nbsp;&nbsp;&nbsp;(1)</td>
+          <td class="memname">#define TH_DUPFRAME&#160;&#160;&#160;(1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The decoded packet represented a dropped frame. </p>
-<p>The player can continue to display the current frame, as the contents of the decoded frame buffer have not changed. </p>
+<p >The player can continue to display the current frame, as the contents of the decoded frame buffer have not changed. </p>
 
 </div>
 </div>
-<a class="anchor" id="af00f7ecc5242d12a717202537324a510"></a><!-- doxytag: member="codec.h::TH_EBADHEADER" ref="af00f7ecc5242d12a717202537324a510" args="" -->
+<a id="af00f7ecc5242d12a717202537324a510" name="af00f7ecc5242d12a717202537324a510"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af00f7ecc5242d12a717202537324a510">&#9670;&nbsp;</a></span>TH_EBADHEADER</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_EBADHEADER&nbsp;&nbsp;&nbsp;(-20)</td>
+          <td class="memname">#define TH_EBADHEADER&#160;&#160;&#160;(-20)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The contents of the header were incomplete, invalid, or unexpected. </p>
 
 </div>
 </div>
-<a class="anchor" id="a6efb84e9c2213a8840003eee2847b27f"></a><!-- doxytag: member="codec.h::TH_EBADPACKET" ref="a6efb84e9c2213a8840003eee2847b27f" args="" -->
+<a id="a6efb84e9c2213a8840003eee2847b27f" name="a6efb84e9c2213a8840003eee2847b27f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6efb84e9c2213a8840003eee2847b27f">&#9670;&nbsp;</a></span>TH_EBADPACKET</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_EBADPACKET&nbsp;&nbsp;&nbsp;(-24)</td>
+          <td class="memname">#define TH_EBADPACKET&#160;&#160;&#160;(-24)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>There were errors in the video data packet. </p>
 
 </div>
 </div>
-<a class="anchor" id="a4d8d8e34fc5ec39ffa05d61a310a0407"></a><!-- doxytag: member="codec.h::TH_EFAULT" ref="a4d8d8e34fc5ec39ffa05d61a310a0407" args="" -->
+<a id="a4d8d8e34fc5ec39ffa05d61a310a0407" name="a4d8d8e34fc5ec39ffa05d61a310a0407"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4d8d8e34fc5ec39ffa05d61a310a0407">&#9670;&nbsp;</a></span>TH_EFAULT</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_EFAULT&nbsp;&nbsp;&nbsp;(-1)</td>
+          <td class="memname">#define TH_EFAULT&#160;&#160;&#160;(-1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>An invalid pointer was provided. </p>
 
 </div>
 </div>
-<a class="anchor" id="a921c47accc17841f220af5a6afb79efe"></a><!-- doxytag: member="codec.h::TH_EIMPL" ref="a921c47accc17841f220af5a6afb79efe" args="" -->
+<a id="a921c47accc17841f220af5a6afb79efe" name="a921c47accc17841f220af5a6afb79efe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a921c47accc17841f220af5a6afb79efe">&#9670;&nbsp;</a></span>TH_EIMPL</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_EIMPL&nbsp;&nbsp;&nbsp;(-23)</td>
+          <td class="memname">#define TH_EIMPL&#160;&#160;&#160;(-23)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The specified function is not implemented. </p>
 
 </div>
 </div>
-<a class="anchor" id="afbbd9f19fbf292aeb62a37792cecb870"></a><!-- doxytag: member="codec.h::TH_EINVAL" ref="afbbd9f19fbf292aeb62a37792cecb870" args="" -->
+<a id="afbbd9f19fbf292aeb62a37792cecb870" name="afbbd9f19fbf292aeb62a37792cecb870"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afbbd9f19fbf292aeb62a37792cecb870">&#9670;&nbsp;</a></span>TH_EINVAL</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_EINVAL&nbsp;&nbsp;&nbsp;(-10)</td>
+          <td class="memname">#define TH_EINVAL&#160;&#160;&#160;(-10)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>An invalid argument was provided. </p>
 
 </div>
 </div>
-<a class="anchor" id="a3dc08a00a9aba231be398f3e31726d9c"></a><!-- doxytag: member="codec.h::TH_ENOTFORMAT" ref="a3dc08a00a9aba231be398f3e31726d9c" args="" -->
+<a id="a3dc08a00a9aba231be398f3e31726d9c" name="a3dc08a00a9aba231be398f3e31726d9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3dc08a00a9aba231be398f3e31726d9c">&#9670;&nbsp;</a></span>TH_ENOTFORMAT</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENOTFORMAT&nbsp;&nbsp;&nbsp;(-21)</td>
+          <td class="memname">#define TH_ENOTFORMAT&#160;&#160;&#160;(-21)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The header does not belong to a Theora stream. </p>
 
 </div>
 </div>
-<a class="anchor" id="ac3a45ef2b24f75259258edc481e3a122"></a><!-- doxytag: member="codec.h::TH_EVERSION" ref="ac3a45ef2b24f75259258edc481e3a122" args="" -->
+<a id="ac3a45ef2b24f75259258edc481e3a122" name="ac3a45ef2b24f75259258edc481e3a122"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac3a45ef2b24f75259258edc481e3a122">&#9670;&nbsp;</a></span>TH_EVERSION</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_EVERSION&nbsp;&nbsp;&nbsp;(-22)</td>
+          <td class="memname">#define TH_EVERSION&#160;&#160;&#160;(-22)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The bitstream version is too high. </p>
 
 </div>
 </div>
-<a class="anchor" id="a2a44f48084e76a58cae48fb5d47cd422"></a><!-- doxytag: member="codec.h::TH_NDCT_TOKENS" ref="a2a44f48084e76a58cae48fb5d47cd422" args="" -->
+<a id="a2a44f48084e76a58cae48fb5d47cd422" name="a2a44f48084e76a58cae48fb5d47cd422"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2a44f48084e76a58cae48fb5d47cd422">&#9670;&nbsp;</a></span>TH_NDCT_TOKENS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_NDCT_TOKENS&nbsp;&nbsp;&nbsp;(32)</td>
+          <td class="memname">#define TH_NDCT_TOKENS&#160;&#160;&#160;(32)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The number of DCT token values in each table. </p>
 
 </div>
 </div>
-<a class="anchor" id="a49bf449eae33c5320f0c308f32c6ae42"></a><!-- doxytag: member="codec.h::TH_NHUFFMAN_TABLES" ref="a49bf449eae33c5320f0c308f32c6ae42" args="" -->
+<a id="a49bf449eae33c5320f0c308f32c6ae42" name="a49bf449eae33c5320f0c308f32c6ae42"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49bf449eae33c5320f0c308f32c6ae42">&#9670;&nbsp;</a></span>TH_NHUFFMAN_TABLES</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_NHUFFMAN_TABLES&nbsp;&nbsp;&nbsp;(80)</td>
+          <td class="memname">#define TH_NHUFFMAN_TABLES&#160;&#160;&#160;(80)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The number of Huffman tables used by Theora. </p>
 
 </div>
 </div>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="a96239eba5d663e3d9ccb40031b2dcfe4"></a><!-- doxytag: member="codec.h::th_comment" ref="a96239eba5d663e3d9ccb40031b2dcfe4" args="" -->
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="a96239eba5d663e3d9ccb40031b2dcfe4" name="a96239eba5d663e3d9ccb40031b2dcfe4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96239eba5d663e3d9ccb40031b2dcfe4">&#9670;&nbsp;</a></span>th_comment</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -323,50 +384,52 @@ Functions</h2></td></tr>
           <td class="memname">typedef struct <a class="el" href="structth__comment.html">th_comment</a> <a class="el" href="structth__comment.html">th_comment</a></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The comment information. </p>
-<p>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.</p>
-<p>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 UTF-8, but the tag names are limited to ASCII, and treated as case-insensitive. See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 6.3.3 for details.</p>
-<p>In filling in this structure, <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> 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. </p>
+<p >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.</p>
+<p >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 UTF-8, but the tag names are limited to ASCII, and treated as case-insensitive. See <a href="https://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 6.3.3 for details.</p>
+<p >In filling in this structure, <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> 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, so the length array should be treated as their authoritative length. </p>
 
 </div>
 </div>
-<a class="anchor" id="a6a1426d16beef8a311d7f0e9d2e96326"></a><!-- doxytag: member="codec.h::th_quant_base" ref="a6a1426d16beef8a311d7f0e9d2e96326" args="[64]" -->
+<a id="a6a1426d16beef8a311d7f0e9d2e96326" name="a6a1426d16beef8a311d7f0e9d2e96326"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6a1426d16beef8a311d7f0e9d2e96326">&#9670;&nbsp;</a></span>th_quant_base</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef unsigned char <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>[64]</td>
+          <td class="memname">typedef unsigned char th_quant_base[64]</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>A single base matrix. </p>
 
 </div>
 </div>
-<a class="anchor" id="a343f7cfabad179cc4fe527cf06873f45"></a><!-- doxytag: member="codec.h::th_ycbcr_buffer" ref="a343f7cfabad179cc4fe527cf06873f45" args="[3]" -->
+<a id="a343f7cfabad179cc4fe527cf06873f45" name="a343f7cfabad179cc4fe527cf06873f45"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a343f7cfabad179cc4fe527cf06873f45">&#9670;&nbsp;</a></span>th_ycbcr_buffer</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a> <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>[3]</td>
+          <td class="memname">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a> th_ycbcr_buffer[3]</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>A complete image buffer for an uncompressed frame. </p>
-<p>The chroma planes may be decimated by a factor of two in either direction, as indicated by <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e" title="The pixel format.">th_info::pixel_fmt</a>. 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 <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">th_info::pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">th_info::pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">th_info::pic_width</a>, and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">th_info::pic_height</a>. All samples are 8 bits. </p>
-<dl class="note"><dt><b>Note:</b></dt><dd>The term YUV often used to describe a colorspace is ambiguous. The exact parameters of the RGB to YUV 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'CbCr, and they appear in that order, always. The prime symbol denotes that the Y channel is non-linear. Cb and Cr stand for "Chroma blue" and "Chroma red", respectively. </dd></dl>
+<p >The chroma planes may be decimated by a factor of two in either direction, as indicated by <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e" title="The pixel format.">th_info::pixel_fmt</a>. 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 <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">th_info::pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">th_info::pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">th_info::pic_width</a>, and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">th_info::pic_height</a>. All samples are 8 bits. </p><dl class="section note"><dt>Note</dt><dd>The term YUV often used to describe a colorspace is ambiguous. The exact parameters of the RGB to YUV 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'CbCr, and they appear in that order, always. The prime symbol denotes that the Y channel is non-linear. Cb and Cr stand for "Chroma blue" and "Chroma red", respectively. </dd></dl>
 
 </div>
 </div>
-<hr/><h2>Enumeration Type Documentation</h2>
-<a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0"></a><!-- doxytag: member="codec.h::th_colorspace" ref="a4ce7a695ce353b1582d29b6c1ddf31a0" args="" -->
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a4ce7a695ce353b1582d29b6c1ddf31a0" name="a4ce7a695ce353b1582d29b6c1ddf31a0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4ce7a695ce353b1582d29b6c1ddf31a0">&#9670;&nbsp;</a></span>th_colorspace</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -374,32 +437,27 @@ Functions</h2></td></tr>
           <td class="memname">enum <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The currently defined color space tags. </p>
-<p>See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Chapter 4, for exact details on the meaning of each of these color spaces. </p>
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf"></a><!-- doxytag: member="TH_CS_UNSPECIFIED" ref="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf" args="" -->TH_CS_UNSPECIFIED</em>&nbsp;</td><td>
-<p>The color space was not specified at the encoder. </p>
-<p>It may be conveyed by an external means. </p>
+<p >See <a href="https://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Chapter 4, for exact details on the meaning of each of these color spaces. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf" name="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf"></a>TH_CS_UNSPECIFIED&#160;</td><td class="fielddoc"><p >The color space was not specified at the encoder. </p>
+<p >It may be conveyed by an external means. </p>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397"></a><!-- doxytag: member="TH_CS_ITU_REC_470M" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397" args="" -->TH_CS_ITU_REC_470M</em>&nbsp;</td><td>
-<p>A color space designed for NTSC content. </p>
+<tr><td class="fieldname"><a id="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397" name="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397"></a>TH_CS_ITU_REC_470M&#160;</td><td class="fielddoc"><p >A color space designed for NTSC content. </p>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe"></a><!-- doxytag: member="TH_CS_ITU_REC_470BG" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe" args="" -->TH_CS_ITU_REC_470BG</em>&nbsp;</td><td>
-<p>A color space designed for PAL/SECAM content. </p>
+<tr><td class="fieldname"><a id="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe" name="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe"></a>TH_CS_ITU_REC_470BG&#160;</td><td class="fielddoc"><p >A color space designed for PAL/SECAM content. </p>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e"></a><!-- doxytag: member="TH_CS_NSPACES" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e" args="" -->TH_CS_NSPACES</em>&nbsp;</td><td>
-<p>The total number of currently defined color spaces. </p>
+<tr><td class="fieldname"><a id="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e" name="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e"></a>TH_CS_NSPACES&#160;</td><td class="fielddoc"><p >The total number of currently defined color spaces. </p>
 </td></tr>
 </table>
-</dd>
-</dl>
 
 </div>
 </div>
-<a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bc"></a><!-- doxytag: member="codec.h::th_pixel_fmt" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bc" args="" -->
+<a id="a5c9e7f2f0c7ed209c9ca3ed0abd328bc" name="a5c9e7f2f0c7ed209c9ca3ed0abd328bc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">&#9670;&nbsp;</a></span>th_pixel_fmt</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -407,39 +465,507 @@ Functions</h2></td></tr>
           <td class="memname">enum <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The currently defined pixel format tags. </p>
-<p>See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for details on the precise sample locations. </p>
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162"></a><!-- doxytag: member="TH_PF_420" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162" args="" -->TH_PF_420</em>&nbsp;</td><td>
-<p>Chroma decimation by 2 in both the X and Y directions (4:2:0). </p>
-<p>The Cb and Cr chroma planes are half the width and half the height of the luma plane. </p>
+<p >See <a href="https://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for details on the precise sample locations. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162" name="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162"></a>TH_PF_420&#160;</td><td class="fielddoc"><p >Chroma decimation by 2 in both the X and Y directions (4:2:0). </p>
+<p >The Cb and Cr chroma planes are half the width and half the height of the luma plane. </p>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6"></a><!-- doxytag: member="TH_PF_RSVD" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6" args="" -->TH_PF_RSVD</em>&nbsp;</td><td>
-<p>Currently reserved. </p>
+<tr><td class="fieldname"><a id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6" name="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6"></a>TH_PF_RSVD&#160;</td><td class="fielddoc"><p >Currently reserved. </p>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa"></a><!-- doxytag: member="TH_PF_422" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa" args="" -->TH_PF_422</em>&nbsp;</td><td>
-<p>Chroma decimation by 2 in the X direction (4:2:2). </p>
-<p>The Cb and Cr chroma planes are half the width of the luma plane, but full height. </p>
+<tr><td class="fieldname"><a id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa" name="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa"></a>TH_PF_422&#160;</td><td class="fielddoc"><p >Chroma decimation by 2 in the X direction (4:2:2). </p>
+<p >The Cb and Cr chroma planes are half the width of the luma plane, but full height. </p>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86"></a><!-- doxytag: member="TH_PF_444" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86" args="" -->TH_PF_444</em>&nbsp;</td><td>
-<p>No chroma decimation (4:4:4). </p>
-<p>The Cb and Cr chroma planes are full width and full height. </p>
+<tr><td class="fieldname"><a id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86" name="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86"></a>TH_PF_444&#160;</td><td class="fielddoc"><p >No chroma decimation (4:4:4). </p>
+<p >The Cb and Cr chroma planes are full width and full height. </p>
 </td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb"></a><!-- doxytag: member="TH_PF_NFORMATS" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb" args="" -->TH_PF_NFORMATS</em>&nbsp;</td><td>
-<p>The total number of currently defined pixel formats. </p>
+<tr><td class="fieldname"><a id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb" name="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb"></a>TH_PF_NFORMATS&#160;</td><td class="fielddoc"><p >The total number of currently defined pixel formats. </p>
 </td></tr>
 </table>
-</dd>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a6be106c7e209680199a98d6d537d7e23" name="a6be106c7e209680199a98d6d537d7e23"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6be106c7e209680199a98d6d537d7e23">&#9670;&nbsp;</a></span>th_comment_add()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_add </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>_comment</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<dl class="section note"><dt>Note</dt><dd>Neither <a class="el" href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_tc</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
+    <tr><td class="paramname">_comment</td><td>Must be a null-terminated UTF-8 string containing the comment in "TAG=the value" form. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="acdfd88bde77364dd8342c55daa9ff151" name="acdfd88bde77364dd8342c55daa9ff151"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acdfd88bde77364dd8342c55daa9ff151">&#9670;&nbsp;</a></span>th_comment_add_tag()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_add_tag </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>_tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>_val</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<dl class="section note"><dt>Note</dt><dd>Neither <a class="el" href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_tc</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
+    <tr><td class="paramname">_tag</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
+    <tr><td class="paramname">_val</td><td>The corresponding value as a null-terminated string. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ae736c1afa514947a3feb223143af95e3" name="ae736c1afa514947a3feb223143af95e3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae736c1afa514947a3feb223143af95e3">&#9670;&nbsp;</a></span>th_comment_clear()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_tc</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<p >This should be called on a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure after it is no longer needed. It will free all memory used by the structure members. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_tc</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to clear. </td></tr>
+  </table>
+  </dd>
 </dl>
 
 </div>
+</div>
+<a id="a6c8ab25988e7ea9d7b1e31a54cf58f09" name="a6c8ab25988e7ea9d7b1e31a54cf58f09"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6c8ab25988e7ea9d7b1e31a54cf58f09">&#9670;&nbsp;</a></span>th_comment_init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_tc</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<p >This should be called on a freshly allocated <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure before attempting to use it. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_tc</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="aa68e50bc76d5f94dd83260b15ca7d211" name="aa68e50bc76d5f94dd83260b15ca7d211"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa68e50bc76d5f94dd83260b15ca7d211">&#9670;&nbsp;</a></span>th_comment_query()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char * th_comment_query </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>_tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>_count</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Look up a comment value by its tag. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_tc</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
+    <tr><td class="paramname">_tag</td><td>The tag to look up. </td></tr>
+    <tr><td class="paramname">_count</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct value, so an index is required to retrieve them all. The order in which these values appear is significant and should be preserved. Use <a class="el" href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51" title="Look up the number of instances of a tag.">th_comment_query_count()</a> to get the legal range for the <em>_count</em> parameter. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to the queried tag's value. This points directly to data in the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. It should not be modified or freed by the application, and modifications to the structure may invalidate the pointer. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">NULL</td><td>If no matching tag is found. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ab1b5b1a478c1e404b22b823dc95a1f51" name="ab1b5b1a478c1e404b22b823dc95a1f51"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab1b5b1a478c1e404b22b823dc95a1f51">&#9670;&nbsp;</a></span>th_comment_query_count()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_comment_query_count </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>_tag</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Look up the number of instances of a tag. </p>
+<p >Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to <a class="el" href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211" title="Look up a comment value by its tag.">th_comment_query()</a> to retrieve all the values for that tag in order. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_tc</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
+    <tr><td class="paramname">_tag</td><td>The tag to look up. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The number of instances of this particular tag. </dd></dl>
+
+</div>
+</div>
+<a id="a95b10e76fc4c05d0240ea2dfd9fd62bd" name="a95b10e76fc4c05d0240ea2dfd9fd62bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a95b10e76fc4c05d0240ea2dfd9fd62bd">&#9670;&nbsp;</a></span>th_granule_frame()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int64_t th_granule_frame </td>
+          <td>(</td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>_encdec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&#160;</td>
+          <td class="paramname"><em>_granpos</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Converts a granule position to an absolute frame index, starting at <code>0</code>. </p>
+<p >The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_encdec</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_granpos</td><td>The granule position to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The absolute frame index corresponding to <em>_granpos</em>. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">-1</td><td>The given granule position was invalid (i.e. negative). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a707e1e281de788af0df39ef00f3fb432" name="a707e1e281de788af0df39ef00f3fb432"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a707e1e281de788af0df39ef00f3fb432">&#9670;&nbsp;</a></span>th_granule_time()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double th_granule_time </td>
+          <td>(</td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>_encdec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&#160;</td>
+          <td class="paramname"><em>_granpos</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Converts a granule position to an absolute time in seconds. </p>
+<p >The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_encdec</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_granpos</td><td>The granule position to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The absolute time in seconds corresponding to <em>_granpos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">-1</td><td>The given granule position was invalid (i.e. negative). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ab3d6441ab4a4969859ef5fd78a9e3c1c" name="ab3d6441ab4a4969859ef5fd78a9e3c1c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab3d6441ab4a4969859ef5fd78a9e3c1c">&#9670;&nbsp;</a></span>th_info_clear()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_info_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&#160;</td>
+          <td class="paramname"><em>_info</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
+<p >This should be called on a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure after it is no longer needed. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_info</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to clear. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a430d9c605816a6ca0bdce3a0b965b926" name="a430d9c605816a6ca0bdce3a0b965b926"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a430d9c605816a6ca0bdce3a0b965b926">&#9670;&nbsp;</a></span>th_info_init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_info_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&#160;</td>
+          <td class="paramname"><em>_info</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
+<p >This should be called on a freshly allocated <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure before attempting to use it. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_info</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a02f3f38261a9b39452d8a5e6f8737cc1" name="a02f3f38261a9b39452d8a5e6f8737cc1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a02f3f38261a9b39452d8a5e6f8737cc1">&#9670;&nbsp;</a></span>th_packet_isheader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_packet_isheader </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>_op</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Determines whether a Theora packet is a header or not. </p>
+<p >This function does no verification beyond checking the packet type bit, so it should not be used for bitstream identification; use <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a data packet (a delta frame with no coded blocks). </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_op</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">1</td><td>The packet is a header packet </td></tr>
+    <tr><td class="paramname">0</td><td>The packet is a video data packet. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="afe95cfd06f0fef413266c9168a66248a" name="afe95cfd06f0fef413266c9168a66248a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe95cfd06f0fef413266c9168a66248a">&#9670;&nbsp;</a></span>th_packet_iskeyframe()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_packet_iskeyframe </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>_op</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Determines whether a theora packet is a key frame or not. </p>
+<p >This function does no verification beyond checking the packet type and key frame bits, so it should not be used for bitstream identification; use <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a delta frame (with no coded blocks). </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_op</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">1</td><td>The packet contains a key frame. </td></tr>
+    <tr><td class="paramname">0</td><td>The packet contains a delta frame. </td></tr>
+    <tr><td class="paramname">-1</td><td>The packet is not a video data packet. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ab723a75c0f95b3eb817f7f769846016b" name="ab723a75c0f95b3eb817f7f769846016b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab723a75c0f95b3eb817f7f769846016b">&#9670;&nbsp;</a></span>th_version_number()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t th_version_number </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieves the library version number. </p>
+<p >This is the highest bitstream version that the encoder library will produce, or that the decoder library can decode. This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p><div class="fragment"><div class="line">(VERSION_MAJOR&lt;&lt;16)+(VERSION_MINOR&lt;&lt;8)+(VERSION_SUBMINOR)</div>
+</div><!-- fragment --> <dl class="section return"><dt>Returns</dt><dd>the version number. </dd></dl>
+
+</div>
+</div>
+<a id="a57a0637587e6f78a718d03c927f2c9fd" name="a57a0637587e6f78a718d03c927f2c9fd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a57a0637587e6f78a718d03c927f2c9fd">&#9670;&nbsp;</a></span>th_version_string()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char * th_version_string </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieves a human-readable string to identify the library vendor and version. </p>
+<dl class="section return"><dt>Returns</dt><dd>the version string. </dd></dl>
+
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/codec_8h_source.html b/doc/libtheora-1.2/codec_8h_source.html
index 46f692e..c9f7591 100644
--- a/doc/libtheora-1.2/codec_8h_source.html
+++ b/doc/libtheora-1.2/codec_8h_source.html
@@ -1,201 +1,275 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: codec.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>codec.h</h1>  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="contents">
-<a href="codec_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
-<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
-<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
-<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
-<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
-<a name="l00006"></a>00006 <span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
-<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
-<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
-<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
-<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
-<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
-<a name="l00012"></a>00012 <span class="comment"></span>
-<a name="l00013"></a>00013 <span class="comment">  function:</span>
-<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
-<a name="l00015"></a>00015 <span class="comment"></span>
-<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
-<a name="l00017"></a>00017 
-<a name="l00062"></a>00062 <span class="preprocessor">#if !defined(_O_THEORA_CODEC_H_)</span>
-<a name="l00063"></a><a class="code" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">00063</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_CODEC_H_ (1)</span>
-<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066 <span class="preprocessor">#if defined(__cplusplus)</span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
-<a name="l00068"></a>00068 <span class="preprocessor">#endif</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span>
-<a name="l00070"></a>00070 
-<a name="l00071"></a>00071 
-<a name="l00075"></a><a class="code" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">00075</a> <span class="preprocessor">#define TH_EFAULT     (-1)</span>
-<a name="l00076"></a>00076 <span class="preprocessor"></span>
-<a name="l00077"></a><a class="code" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">00077</a> <span class="preprocessor">#define TH_EINVAL     (-10)</span>
-<a name="l00078"></a>00078 <span class="preprocessor"></span>
-<a name="l00079"></a><a class="code" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">00079</a> <span class="preprocessor">#define TH_EBADHEADER (-20)</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>
-<a name="l00081"></a><a class="code" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">00081</a> <span class="preprocessor">#define TH_ENOTFORMAT (-21)</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>
-<a name="l00083"></a><a class="code" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">00083</a> <span class="preprocessor">#define TH_EVERSION   (-22)</span>
-<a name="l00084"></a>00084 <span class="preprocessor"></span>
-<a name="l00085"></a><a class="code" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">00085</a> <span class="preprocessor">#define TH_EIMPL      (-23)</span>
-<a name="l00086"></a>00086 <span class="preprocessor"></span>
-<a name="l00087"></a><a class="code" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">00087</a> <span class="preprocessor">#define TH_EBADPACKET (-24)</span>
-<a name="l00088"></a>00088 <span class="preprocessor"></span>
-<a name="l00091"></a><a class="code" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">00091</a> <span class="preprocessor">#define TH_DUPFRAME   (1)</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>
-<a name="l00098"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">00098</a> <span class="keyword">typedef</span> <span class="keyword">enum</span>{
-<a name="l00101"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">00101</a>   TH_CS_UNSPECIFIED,
-<a name="l00103"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">00103</a>   TH_CS_ITU_REC_470M,
-<a name="l00105"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">00105</a>   TH_CS_ITU_REC_470BG,
-<a name="l00107"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">00107</a>   <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e" title="The total number of currently defined color spaces.">TH_CS_NSPACES</a>
-<a name="l00108"></a>00108 }th_colorspace;
-<a name="l00109"></a>00109 
-<a name="l00114"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">00114</a> <span class="keyword">typedef</span> <span class="keyword">enum</span>{
-<a name="l00118"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">00118</a>   TH_PF_420,
-<a name="l00120"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">00120</a>   TH_PF_RSVD,
-<a name="l00124"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">00124</a>   TH_PF_422,
-<a name="l00127"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">00127</a>   TH_PF_444,
-<a name="l00129"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">00129</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb" title="The total number of currently defined pixel formats.">TH_PF_NFORMATS</a>
-<a name="l00130"></a>00130 }th_pixel_fmt;
-<a name="l00131"></a>00131 
-<a name="l00132"></a>00132 
-<a name="l00133"></a>00133 
-<a name="l00142"></a><a class="code" href="structth__img__plane.html">00142</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
-<a name="l00144"></a><a class="code" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">00144</a>   <span class="keywordtype">int</span>            width;
-<a name="l00146"></a><a class="code" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">00146</a>   <span class="keywordtype">int</span>            height;
-<a name="l00148"></a><a class="code" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">00148</a>   <span class="keywordtype">int</span>            stride;
-<a name="l00150"></a><a class="code" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">00150</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data;
-<a name="l00151"></a>00151 }<a class="code" href="structth__img__plane.html" title="A buffer for a single color plane in an uncompressed image.">th_img_plane</a>;
-<a name="l00152"></a>00152 
-<a name="l00168"></a><a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">00168</a> <span class="keyword">typedef</span> <a class="code" href="structth__img__plane.html" title="A buffer for a single color plane in an uncompressed image.">th_img_plane</a> <a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a>[3];
-<a name="l00169"></a>00169 
-<a name="l00204"></a><a class="code" href="structth__info.html">00204</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
-<a name="l00208"></a><a class="code" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">00208</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_major;
-<a name="l00209"></a><a class="code" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">00209</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_minor;
-<a name="l00210"></a><a class="code" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">00210</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_subminor;
-<a name="l00214"></a><a class="code" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">00214</a>   ogg_uint32_t  frame_width;
-<a name="l00217"></a><a class="code" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">00217</a>   ogg_uint32_t  frame_height;
-<a name="l00220"></a><a class="code" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">00220</a>   ogg_uint32_t  pic_width;
-<a name="l00223"></a><a class="code" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">00223</a>   ogg_uint32_t  pic_height;
-<a name="l00227"></a><a class="code" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">00227</a>   ogg_uint32_t  pic_x;
-<a name="l00235"></a><a class="code" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">00235</a>   ogg_uint32_t  pic_y;
-<a name="l00240"></a><a class="code" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">00240</a>   ogg_uint32_t  fps_numerator;
-<a name="l00241"></a><a class="code" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">00241</a>   ogg_uint32_t  fps_denominator;
-<a name="l00252"></a><a class="code" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">00252</a>   ogg_uint32_t  aspect_numerator;
-<a name="l00253"></a><a class="code" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">00253</a>   ogg_uint32_t  aspect_denominator;
-<a name="l00256"></a><a class="code" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">00256</a>   <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0" title="The currently defined color space tags.">th_colorspace</a> colorspace;
-<a name="l00258"></a><a class="code" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">00258</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc" title="The currently defined pixel format tags.">th_pixel_fmt</a>  pixel_fmt;
-<a name="l00262"></a><a class="code" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">00262</a>   <span class="keywordtype">int</span>           target_bitrate;
-<a name="l00268"></a>00268   <span class="comment">/*Currently this is set so that a qi of 0 corresponds to distortions of 24</span>
-<a name="l00269"></a>00269 <span class="comment">     times the JND, and each increase by 16 halves that value.</span>
-<a name="l00270"></a>00270 <span class="comment">    This gives us fine discrimination at low qualities, yet effective rate</span>
-<a name="l00271"></a>00271 <span class="comment">     control at high qualities.</span>
-<a name="l00272"></a>00272 <span class="comment">    The qi value 63 is special, however.</span>
-<a name="l00273"></a>00273 <span class="comment">    For this, the highest quality, we use one half of a JND for our threshold.</span>
-<a name="l00274"></a>00274 <span class="comment">    Due to the lower bounds placed on allowable quantizers in Theora, we will</span>
-<a name="l00275"></a>00275 <span class="comment">     not actually be able to achieve quality this good, but this should</span>
-<a name="l00276"></a>00276 <span class="comment">     provide as close to visually lossless quality as Theora is capable of.</span>
-<a name="l00277"></a>00277 <span class="comment">    We could lift the quantizer restrictions without breaking VP3.1</span>
-<a name="l00278"></a>00278 <span class="comment">     compatibility, but this would result in quantized coefficients that are</span>
-<a name="l00279"></a>00279 <span class="comment">     too large for the current bitstream to be able to store.</span>
-<a name="l00280"></a>00280 <span class="comment">    We&#39;d have to redesign the token syntax to store these large coefficients,</span>
-<a name="l00281"></a>00281 <span class="comment">     which would make transcoding complex.*/</span>
-<a name="l00282"></a><a class="code" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">00282</a>   <span class="keywordtype">int</span>           quality;
-<a name="l00296"></a><a class="code" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">00296</a>   <span class="keywordtype">int</span>           keyframe_granule_shift;
-<a name="l00297"></a>00297 }<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a>;
-<a name="l00298"></a>00298 
-<a name="l00323"></a><a class="code" href="structth__comment.html">00323</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structth__comment.html" title="The comment information.">th_comment</a>{
-<a name="l00325"></a><a class="code" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">00325</a>   <span class="keywordtype">char</span> **<a class="code" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4" title="The array of comment string vectors.">user_comments</a>;
-<a name="l00327"></a><a class="code" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">00327</a>   <span class="keywordtype">int</span>   *<a class="code" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898" title="An array of the corresponding length of each vector, in bytes.">comment_lengths</a>;
-<a name="l00329"></a><a class="code" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">00329</a>   <span class="keywordtype">int</span>    <a class="code" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78" title="The total number of comment strings.">comments</a>;
-<a name="l00332"></a><a class="code" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">00332</a>   <span class="keywordtype">char</span>  *<a class="code" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0" title="The null-terminated vendor string.">vendor</a>;
-<a name="l00333"></a>00333 }<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a>;
-<a name="l00334"></a>00334 
-<a name="l00335"></a>00335 
-<a name="l00336"></a>00336 
-<a name="l00338"></a><a class="code" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">00338</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326" title="A single base matrix.">th_quant_base</a>[64];
-<a name="l00339"></a>00339 
-<a name="l00341"></a><a class="code" href="structth__quant__ranges.html">00341</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
-<a name="l00343"></a><a class="code" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">00343</a>   <span class="keywordtype">int</span>                  nranges;
-<a name="l00346"></a><a class="code" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">00346</a>   <span class="keyword">const</span> <span class="keywordtype">int</span>           *sizes;
-<a name="l00349"></a><a class="code" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">00349</a>   <span class="keyword">const</span> th_quant_base *base_matrices;
-<a name="l00350"></a>00350 }<a class="code" href="structth__quant__ranges.html" title="A set of qi ranges.">th_quant_ranges</a>;
-<a name="l00351"></a>00351 
-<a name="l00409"></a><a class="code" href="structth__quant__info.html">00409</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
-<a name="l00411"></a><a class="code" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">00411</a>   ogg_uint16_t    dc_scale[64];
-<a name="l00413"></a><a class="code" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">00413</a>   ogg_uint16_t    ac_scale[64];
-<a name="l00415"></a><a class="code" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">00415</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>   loop_filter_limits[64];
-<a name="l00417"></a><a class="code" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">00417</a>   <a class="code" href="structth__quant__ranges.html" title="A set of qi ranges.">th_quant_ranges</a> qi_ranges[2][3];
-<a name="l00418"></a>00418 }<a class="code" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>;
-<a name="l00419"></a>00419 
-<a name="l00420"></a>00420 
-<a name="l00421"></a>00421 
-<a name="l00423"></a><a class="code" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">00423</a> <span class="preprocessor">#define TH_NHUFFMAN_TABLES (80)</span>
-<a name="l00424"></a>00424 <span class="preprocessor"></span>
-<a name="l00425"></a><a class="code" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">00425</a> <span class="preprocessor">#define TH_NDCT_TOKENS     (32)</span>
-<a name="l00426"></a>00426 <span class="preprocessor"></span>
-<a name="l00438"></a><a class="code" href="structth__huff__code.html">00438</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
-<a name="l00441"></a><a class="code" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">00441</a>   ogg_uint32_t pattern;
-<a name="l00444"></a><a class="code" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">00444</a>   <span class="keywordtype">int</span>          nbits;
-<a name="l00445"></a>00445 }<a class="code" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>;
-<a name="l00446"></a>00446 
-<a name="l00447"></a>00447 
-<a name="l00448"></a>00448 
-<a name="l00456"></a>00456 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc" title="Retrieves a human-readable string to identify the library vendor and version.">th_version_string</a>(<span class="keywordtype">void</span>);
-<a name="l00466"></a>00466 <span class="keyword">extern</span> ogg_uint32_t <a class="code" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b" title="Retrieves the library version number.">th_version_number</a>(<span class="keywordtype">void</span>);
-<a name="l00476"></a>00476 <span class="keyword">extern</span> ogg_int64_t <a class="code" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd" title="Converts a granule position to an absolute frame index, starting at 0.">th_granule_frame</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);
-<a name="l00488"></a>00488 <span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432" title="Converts a granule position to an absolute time in seconds.">th_granule_time</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);
-<a name="l00498"></a>00498 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1" title="Determines whether a Theora packet is a header or not.">th_packet_isheader</a>(ogg_packet *_op);
-<a name="l00509"></a>00509 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a" title="Determines whether a theora packet is a key frame or not.">th_packet_iskeyframe</a>(ogg_packet *_op);
-<a name="l00519"></a>00519 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
-<a name="l00524"></a>00524 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c" title="Clears a th_info structure.">th_info_clear</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
-<a name="l00525"></a>00525 
-<a name="l00530"></a>00530 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09" title="Initialize a th_comment structure.">th_comment_init</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc);
-<a name="l00540"></a>00540 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc, <span class="keywordtype">char</span> *_comment);
-<a name="l00551"></a>00551 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag,<span class="keywordtype">char</span> *_val);
-<a name="l00567"></a>00567 <span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa" title="Look up a comment value by its tag.">th_comment_query</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag,<span class="keywordtype">int</span> _count);
-<a name="l00575"></a>00575 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc" title="Look up the number of instances of a tag.">th_comment_query_count</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag);
-<a name="l00581"></a>00581 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3" title="Clears a th_comment structure.">th_comment_clear</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc);
-<a name="l00584"></a>00584 
-<a name="l00585"></a>00585 
-<a name="l00586"></a>00586 
-<a name="l00587"></a>00587 <span class="preprocessor">#if defined(__cplusplus)</span>
-<a name="l00588"></a>00588 <span class="preprocessor"></span>}
-<a name="l00589"></a>00589 <span class="preprocessor">#endif</span>
-<a name="l00590"></a>00590 <span class="preprocessor"></span>
-<a name="l00591"></a>00591 <span class="preprocessor">#endif</span>
-</pre></div></div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle"><div class="title">codec.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="codec_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/********************************************************************</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> * by the Xiph.Org Foundation https://www.xiph.org/                 *</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> ********************************************************************</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"></span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment">  function:</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"></span> </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> ********************************************************************/</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="preprocessor">#if !defined(OGG_THEORA_CODEC_HEADER)</span></div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="codec_8h.html#aaff54665be7ea0fb741419663c775fe3">   65</a></span><span class="preprocessor"># define OGG_THEORA_CODEC_HEADER (1)</span></div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span><span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span></div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span><span class="preprocessor">#if defined(__cplusplus)</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">   77</a></span><span class="preprocessor">#define TH_EFAULT     (-1)</span></div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">   79</a></span><span class="preprocessor">#define TH_EINVAL     (-10)</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">   81</a></span><span class="preprocessor">#define TH_EBADHEADER (-20)</span></div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">   83</a></span><span class="preprocessor">#define TH_ENOTFORMAT (-21)</span></div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">   85</a></span><span class="preprocessor">#define TH_EVERSION   (-22)</span></div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">   87</a></span><span class="preprocessor">#define TH_EIMPL      (-23)</span></div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">   89</a></span><span class="preprocessor">#define TH_EBADPACKET (-24)</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">   93</a></span><span class="preprocessor">#define TH_DUPFRAME   (1)</span></div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">  100</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span>{</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">  103</a></span>  <a class="code hl_enumvalue" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">TH_CS_UNSPECIFIED</a>,</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">  105</a></span>  <a class="code hl_enumvalue" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">TH_CS_ITU_REC_470M</a>,</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">  107</a></span>  <a class="code hl_enumvalue" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">TH_CS_ITU_REC_470BG</a>,</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>  <a class="code hl_enumvalue" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">TH_CS_NSPACES</a></div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">  110</a></span>}<a class="code hl_enumeration" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a>;</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">  116</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span>{</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">  120</a></span>  <a class="code hl_enumvalue" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">TH_PF_420</a>,</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">  122</a></span>  <a class="code hl_enumvalue" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">TH_PF_RSVD</a>,</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">  126</a></span>  <a class="code hl_enumvalue" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">TH_PF_422</a>,</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">  129</a></span>  <a class="code hl_enumvalue" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">TH_PF_444</a>,</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>  <a class="code hl_enumvalue" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">TH_PF_NFORMATS</a></div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">  132</a></span>}<a class="code hl_enumeration" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a>;</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"><a class="line" href="structth__img__plane.html">  144</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span>{</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">  146</a></span>  <span class="keywordtype">int</span>            <a class="code hl_variable" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">width</a>;</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">  148</a></span>  <span class="keywordtype">int</span>            <a class="code hl_variable" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">height</a>;</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">  150</a></span>  <span class="keywordtype">int</span>            <a class="code hl_variable" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">stride</a>;</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">  152</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">data</a>;</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>}<a class="code hl_struct" href="structth__img__plane.html">th_img_plane</a>;</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"><a class="line" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">  170</a></span><span class="keyword">typedef</span> <a class="code hl_struct" href="structth__img__plane.html">th_img_plane</a> <a class="code hl_typedef" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>[3];</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="structth__info.html">  206</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span>{</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">  210</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">version_major</a>;</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">  211</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">version_minor</a>;</div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">  212</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">version_subminor</a>;</div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">  216</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">frame_width</a>;</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"><a class="line" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">  219</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">frame_height</a>;</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">  222</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">pic_width</a>;</div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">  225</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">pic_height</a>;</div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"><a class="line" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">  229</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">pic_x</a>;</div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">  237</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">pic_y</a>;</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"><a class="line" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">  242</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">fps_numerator</a>;</div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">  243</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">fps_denominator</a>;</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">  254</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a>;</div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"><a class="line" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">  255</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a>;</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">  258</a></span>  <a class="code hl_enumeration" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> <a class="code hl_variable" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">colorspace</a>;</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"><a class="line" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">  260</a></span>  <a class="code hl_enumeration" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a>  <a class="code hl_variable" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">pixel_fmt</a>;</div>
+<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"><a class="line" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">  264</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">target_bitrate</a>;</div>
+<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  270</span>  <span class="comment">/*Currently this is set so that a qi of 0 corresponds to distortions of 24</span></div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span><span class="comment">     times the JND, and each increase by 16 halves that value.</span></div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span><span class="comment">    This gives us fine discrimination at low qualities, yet effective rate</span></div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span><span class="comment">     control at high qualities.</span></div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span><span class="comment">    The qi value 63 is special, however.</span></div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span><span class="comment">    For this, the highest quality, we use one half of a JND for our threshold.</span></div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span><span class="comment">    Due to the lower bounds placed on allowable quantizers in Theora, we will</span></div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span><span class="comment">     not actually be able to achieve quality this good, but this should</span></div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span><span class="comment">     provide as close to visually lossless quality as Theora is capable of.</span></div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span><span class="comment">    We could lift the quantizer restrictions without breaking VP3.1</span></div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span><span class="comment">     compatibility, but this would result in quantized coefficients that are</span></div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span><span class="comment">     too large for the current bitstream to be able to store.</span></div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span><span class="comment">    We&#39;d have to redesign the token syntax to store these large coefficients,</span></div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span><span class="comment">     which would make transcoding complex.*/</span></div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"><a class="line" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">  284</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">quality</a>;</div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"><a class="line" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">  298</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">keyframe_granule_shift</a>;</div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span>}<a class="code hl_struct" href="structth__info.html">th_info</a>;</div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="structth__comment.html">  325</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structth__comment.html">th_comment</a>{</div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"><a class="line" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">  327</a></span>  <span class="keywordtype">char</span> **<a class="code hl_variable" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">user_comments</a>;</div>
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"><a class="line" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">  329</a></span>  <span class="keywordtype">int</span>   *<a class="code hl_variable" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">comment_lengths</a>;</div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"><a class="line" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">  331</a></span>  <span class="keywordtype">int</span>    <a class="code hl_variable" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">comments</a>;</div>
+<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"><a class="line" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">  334</a></span>  <span class="keywordtype">char</span>  *<a class="code hl_variable" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">vendor</a>;</div>
+<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"><a class="line" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">  335</a></span>}<a class="code hl_typedef" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">th_comment</a>;</div>
+<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span> </div>
+<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span> </div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"><a class="line" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">  340</a></span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_typedef" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>[64];</div>
+<div class="line"><a id="l00341" name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="structth__quant__ranges.html">  343</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span>{</div>
+<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"><a class="line" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">  345</a></span>  <span class="keywordtype">int</span>                  <a class="code hl_variable" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">nranges</a>;</div>
+<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"><a class="line" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">  348</a></span>  <span class="keyword">const</span> <span class="keywordtype">int</span>           *<a class="code hl_variable" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">sizes</a>;</div>
+<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"><a class="line" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">  351</a></span>  <span class="keyword">const</span> <a class="code hl_typedef" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> *<a class="code hl_variable" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">base_matrices</a>;</div>
+<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span>}<a class="code hl_struct" href="structth__quant__ranges.html">th_quant_ranges</a>;</div>
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="structth__quant__info.html">  411</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span>{</div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"><a class="line" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">  413</a></span>  ogg_uint16_t    dc_scale[64];</div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"><a class="line" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">  415</a></span>  ogg_uint16_t    ac_scale[64];</div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">  417</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>   loop_filter_limits[64];</div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"><a class="line" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">  419</a></span>  <a class="code hl_struct" href="structth__quant__ranges.html">th_quant_ranges</a> qi_ranges[2][3];</div>
+<div class="line"><a id="l00420" name="l00420"></a><span class="lineno">  420</span>}<a class="code hl_struct" href="structth__quant__info.html">th_quant_info</a>;</div>
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span> </div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"><a class="line" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">  425</a></span><span class="preprocessor">#define TH_NHUFFMAN_TABLES (80)</span></div>
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">  427</a></span><span class="preprocessor">#define TH_NDCT_TOKENS     (32)</span></div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span> </div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"><a class="line" href="structth__huff__code.html">  440</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span>{</div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"><a class="line" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">  443</a></span>  ogg_uint32_t <a class="code hl_variable" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">pattern</a>;</div>
+<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">  446</a></span>  <span class="keywordtype">int</span>          <a class="code hl_variable" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">nbits</a>;</div>
+<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span>}<a class="code hl_struct" href="structth__huff__code.html">th_huff_code</a>;</div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span> </div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"><a class="line" href="codec_8h.html#a57a0637587e6f78a718d03c927f2c9fd">  464</a></span><span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="codec_8h.html#a57a0637587e6f78a718d03c927f2c9fd">th_version_string</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"><a class="line" href="codec_8h.html#ab723a75c0f95b3eb817f7f769846016b">  474</a></span><span class="keyword">extern</span> ogg_uint32_t <a class="code hl_function" href="codec_8h.html#ab723a75c0f95b3eb817f7f769846016b">th_version_number</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"><a class="line" href="codec_8h.html#a95b10e76fc4c05d0240ea2dfd9fd62bd">  484</a></span><span class="keyword">extern</span> ogg_int64_t <a class="code hl_function" href="codec_8h.html#a95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);</div>
+<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"><a class="line" href="codec_8h.html#a707e1e281de788af0df39ef00f3fb432">  496</a></span><span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code hl_function" href="codec_8h.html#a707e1e281de788af0df39ef00f3fb432">th_granule_time</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);</div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"><a class="line" href="codec_8h.html#a02f3f38261a9b39452d8a5e6f8737cc1">  506</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="codec_8h.html#a02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a>(ogg_packet *_op);</div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"><a class="line" href="codec_8h.html#afe95cfd06f0fef413266c9168a66248a">  517</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="codec_8h.html#afe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a>(ogg_packet *_op);</div>
+<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"><a class="line" href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926">  532</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926">th_info_init</a>(<a class="code hl_struct" href="structth__info.html">th_info</a> *_info);</div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"><a class="line" href="codec_8h.html#ab3d6441ab4a4969859ef5fd78a9e3c1c">  537</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="codec_8h.html#ab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a>(<a class="code hl_struct" href="structth__info.html">th_info</a> *_info);</div>
+<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span> </div>
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"><a class="line" href="codec_8h.html#a6c8ab25988e7ea9d7b1e31a54cf58f09">  543</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="codec_8h.html#a6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a>(<a class="code hl_struct" href="structth__comment.html">th_comment</a> *_tc);</div>
+<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"><a class="line" href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23">  553</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23">th_comment_add</a>(<a class="code hl_struct" href="structth__comment.html">th_comment</a> *_tc,<span class="keyword">const</span> <span class="keywordtype">char</span> *_comment);</div>
+<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"><a class="line" href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151">  564</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151">th_comment_add_tag</a>(<a class="code hl_struct" href="structth__comment.html">th_comment</a> *_tc,<span class="keyword">const</span> <span class="keywordtype">char</span> *_tag,</div>
+<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *_val);</div>
+<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"><a class="line" href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211">  581</a></span><span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211">th_comment_query</a>(<a class="code hl_struct" href="structth__comment.html">th_comment</a> *_tc,<span class="keyword">const</span> <span class="keywordtype">char</span> *_tag,<span class="keywordtype">int</span> _count);</div>
+<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"><a class="line" href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51">  589</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51">th_comment_query_count</a>(<a class="code hl_struct" href="structth__comment.html">th_comment</a> *_tc,<span class="keyword">const</span> <span class="keywordtype">char</span> *_tag);</div>
+<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"><a class="line" href="codec_8h.html#ae736c1afa514947a3feb223143af95e3">  595</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="codec_8h.html#ae736c1afa514947a3feb223143af95e3">th_comment_clear</a>(<a class="code hl_struct" href="structth__comment.html">th_comment</a> *_tc);</div>
+<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span> </div>
+<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span> </div>
+<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span> </div>
+<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span><span class="preprocessor">#if defined(__cplusplus)</span></div>
+<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span>}</div>
+<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span> </div>
+<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span><span class="preprocessor">#endif </span><span class="comment">/* OGG_THEORA_CODEC_HEADER */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="acodec_8h_html_a02f3f38261a9b39452d8a5e6f8737cc1"><div class="ttname"><a href="codec_8h.html#a02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a></div><div class="ttdeci">int th_packet_isheader(ogg_packet *_op)</div><div class="ttdoc">Determines whether a Theora packet is a header or not.</div></div>
+<div class="ttc" id="acodec_8h_html_a343f7cfabad179cc4fe527cf06873f45"><div class="ttname"><a href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a></div><div class="ttdeci">th_img_plane th_ycbcr_buffer[3]</div><div class="ttdoc">A complete image buffer for an uncompressed frame.</div><div class="ttdef"><b>Definition:</b> codec.h:170</div></div>
+<div class="ttc" id="acodec_8h_html_a430d9c605816a6ca0bdce3a0b965b926"><div class="ttname"><a href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926">th_info_init</a></div><div class="ttdeci">void th_info_init(th_info *_info)</div><div class="ttdoc">Initializes a th_info structure.</div></div>
+<div class="ttc" id="acodec_8h_html_a4ce7a695ce353b1582d29b6c1ddf31a0"><div class="ttname"><a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a></div><div class="ttdeci">th_colorspace</div><div class="ttdoc">The currently defined color space tags.</div><div class="ttdef"><b>Definition:</b> codec.h:100</div></div>
+<div class="ttc" id="acodec_8h_html_a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe"><div class="ttname"><a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">TH_CS_ITU_REC_470BG</a></div><div class="ttdeci">@ TH_CS_ITU_REC_470BG</div><div class="ttdoc">A color space designed for PAL/SECAM content.</div><div class="ttdef"><b>Definition:</b> codec.h:107</div></div>
+<div class="ttc" id="acodec_8h_html_a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e"><div class="ttname"><a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">TH_CS_NSPACES</a></div><div class="ttdeci">@ TH_CS_NSPACES</div><div class="ttdoc">The total number of currently defined color spaces.</div><div class="ttdef"><b>Definition:</b> codec.h:109</div></div>
+<div class="ttc" id="acodec_8h_html_a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397"><div class="ttname"><a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">TH_CS_ITU_REC_470M</a></div><div class="ttdeci">@ TH_CS_ITU_REC_470M</div><div class="ttdoc">A color space designed for NTSC content.</div><div class="ttdef"><b>Definition:</b> codec.h:105</div></div>
+<div class="ttc" id="acodec_8h_html_a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf"><div class="ttname"><a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">TH_CS_UNSPECIFIED</a></div><div class="ttdeci">@ TH_CS_UNSPECIFIED</div><div class="ttdoc">The color space was not specified at the encoder.</div><div class="ttdef"><b>Definition:</b> codec.h:103</div></div>
+<div class="ttc" id="acodec_8h_html_a57a0637587e6f78a718d03c927f2c9fd"><div class="ttname"><a href="codec_8h.html#a57a0637587e6f78a718d03c927f2c9fd">th_version_string</a></div><div class="ttdeci">const char * th_version_string(void)</div><div class="ttdoc">Retrieves a human-readable string to identify the library vendor and version.</div></div>
+<div class="ttc" id="acodec_8h_html_a5c9e7f2f0c7ed209c9ca3ed0abd328bc"><div class="ttname"><a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a></div><div class="ttdeci">th_pixel_fmt</div><div class="ttdoc">The currently defined pixel format tags.</div><div class="ttdef"><b>Definition:</b> codec.h:116</div></div>
+<div class="ttc" id="acodec_8h_html_a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa"><div class="ttname"><a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">TH_PF_422</a></div><div class="ttdeci">@ TH_PF_422</div><div class="ttdoc">Chroma decimation by 2 in the X direction (4:2:2).</div><div class="ttdef"><b>Definition:</b> codec.h:126</div></div>
+<div class="ttc" id="acodec_8h_html_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86"><div class="ttname"><a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">TH_PF_444</a></div><div class="ttdeci">@ TH_PF_444</div><div class="ttdoc">No chroma decimation (4:4:4).</div><div class="ttdef"><b>Definition:</b> codec.h:129</div></div>
+<div class="ttc" id="acodec_8h_html_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb"><div class="ttname"><a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">TH_PF_NFORMATS</a></div><div class="ttdeci">@ TH_PF_NFORMATS</div><div class="ttdoc">The total number of currently defined pixel formats.</div><div class="ttdef"><b>Definition:</b> codec.h:131</div></div>
+<div class="ttc" id="acodec_8h_html_a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6"><div class="ttname"><a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">TH_PF_RSVD</a></div><div class="ttdeci">@ TH_PF_RSVD</div><div class="ttdoc">Currently reserved.</div><div class="ttdef"><b>Definition:</b> codec.h:122</div></div>
+<div class="ttc" id="acodec_8h_html_a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162"><div class="ttname"><a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">TH_PF_420</a></div><div class="ttdeci">@ TH_PF_420</div><div class="ttdoc">Chroma decimation by 2 in both the X and Y directions (4:2:0).</div><div class="ttdef"><b>Definition:</b> codec.h:120</div></div>
+<div class="ttc" id="acodec_8h_html_a6a1426d16beef8a311d7f0e9d2e96326"><div class="ttname"><a href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a></div><div class="ttdeci">unsigned char th_quant_base[64]</div><div class="ttdoc">A single base matrix.</div><div class="ttdef"><b>Definition:</b> codec.h:340</div></div>
+<div class="ttc" id="acodec_8h_html_a6be106c7e209680199a98d6d537d7e23"><div class="ttname"><a href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23">th_comment_add</a></div><div class="ttdeci">void th_comment_add(th_comment *_tc, const char *_comment)</div><div class="ttdoc">Add a comment to an initialized th_comment structure.</div></div>
+<div class="ttc" id="acodec_8h_html_a6c8ab25988e7ea9d7b1e31a54cf58f09"><div class="ttname"><a href="codec_8h.html#a6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a></div><div class="ttdeci">void th_comment_init(th_comment *_tc)</div><div class="ttdoc">Initialize a th_comment structure.</div></div>
+<div class="ttc" id="acodec_8h_html_a707e1e281de788af0df39ef00f3fb432"><div class="ttname"><a href="codec_8h.html#a707e1e281de788af0df39ef00f3fb432">th_granule_time</a></div><div class="ttdeci">double th_granule_time(void *_encdec, ogg_int64_t _granpos)</div><div class="ttdoc">Converts a granule position to an absolute time in seconds.</div></div>
+<div class="ttc" id="acodec_8h_html_a95b10e76fc4c05d0240ea2dfd9fd62bd"><div class="ttname"><a href="codec_8h.html#a95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a></div><div class="ttdeci">ogg_int64_t th_granule_frame(void *_encdec, ogg_int64_t _granpos)</div><div class="ttdoc">Converts a granule position to an absolute frame index, starting at 0.</div></div>
+<div class="ttc" id="acodec_8h_html_a96239eba5d663e3d9ccb40031b2dcfe4"><div class="ttname"><a href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">th_comment</a></div><div class="ttdeci">struct th_comment th_comment</div><div class="ttdoc">The comment information.</div></div>
+<div class="ttc" id="acodec_8h_html_aa68e50bc76d5f94dd83260b15ca7d211"><div class="ttname"><a href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211">th_comment_query</a></div><div class="ttdeci">char * th_comment_query(th_comment *_tc, const char *_tag, int _count)</div><div class="ttdoc">Look up a comment value by its tag.</div></div>
+<div class="ttc" id="acodec_8h_html_ab1b5b1a478c1e404b22b823dc95a1f51"><div class="ttname"><a href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51">th_comment_query_count</a></div><div class="ttdeci">int th_comment_query_count(th_comment *_tc, const char *_tag)</div><div class="ttdoc">Look up the number of instances of a tag.</div></div>
+<div class="ttc" id="acodec_8h_html_ab3d6441ab4a4969859ef5fd78a9e3c1c"><div class="ttname"><a href="codec_8h.html#ab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a></div><div class="ttdeci">void th_info_clear(th_info *_info)</div><div class="ttdoc">Clears a th_info structure.</div></div>
+<div class="ttc" id="acodec_8h_html_ab723a75c0f95b3eb817f7f769846016b"><div class="ttname"><a href="codec_8h.html#ab723a75c0f95b3eb817f7f769846016b">th_version_number</a></div><div class="ttdeci">ogg_uint32_t th_version_number(void)</div><div class="ttdoc">Retrieves the library version number.</div></div>
+<div class="ttc" id="acodec_8h_html_acdfd88bde77364dd8342c55daa9ff151"><div class="ttname"><a href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151">th_comment_add_tag</a></div><div class="ttdeci">void th_comment_add_tag(th_comment *_tc, const char *_tag, const char *_val)</div><div class="ttdoc">Add a comment to an initialized th_comment structure.</div></div>
+<div class="ttc" id="acodec_8h_html_ae736c1afa514947a3feb223143af95e3"><div class="ttname"><a href="codec_8h.html#ae736c1afa514947a3feb223143af95e3">th_comment_clear</a></div><div class="ttdeci">void th_comment_clear(th_comment *_tc)</div><div class="ttdoc">Clears a th_comment structure.</div></div>
+<div class="ttc" id="acodec_8h_html_afe95cfd06f0fef413266c9168a66248a"><div class="ttname"><a href="codec_8h.html#afe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a></div><div class="ttdeci">int th_packet_iskeyframe(ogg_packet *_op)</div><div class="ttdoc">Determines whether a theora packet is a key frame or not.</div></div>
+<div class="ttc" id="astructth__comment_html"><div class="ttname"><a href="structth__comment.html">th_comment</a></div><div class="ttdoc">The comment information.</div><div class="ttdef"><b>Definition:</b> codec.h:325</div></div>
+<div class="ttc" id="astructth__comment_html_a5990c34932376f070ad0fc314daaeb78"><div class="ttname"><a href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment::comments</a></div><div class="ttdeci">int comments</div><div class="ttdoc">The total number of comment strings.</div><div class="ttdef"><b>Definition:</b> codec.h:331</div></div>
+<div class="ttc" id="astructth__comment_html_a723dc6fdf75757e70e28eea864b10898"><div class="ttname"><a href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment::comment_lengths</a></div><div class="ttdeci">int * comment_lengths</div><div class="ttdoc">An array of the corresponding length of each vector, in bytes.</div><div class="ttdef"><b>Definition:</b> codec.h:329</div></div>
+<div class="ttc" id="astructth__comment_html_a93fbe894d23603f56843be15b0cbdba0"><div class="ttname"><a href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment::vendor</a></div><div class="ttdeci">char * vendor</div><div class="ttdoc">The null-terminated vendor string.</div><div class="ttdef"><b>Definition:</b> codec.h:334</div></div>
+<div class="ttc" id="astructth__comment_html_ad72830e183e707bb0df423eb73b00de4"><div class="ttname"><a href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment::user_comments</a></div><div class="ttdeci">char ** user_comments</div><div class="ttdoc">The array of comment string vectors.</div><div class="ttdef"><b>Definition:</b> codec.h:327</div></div>
+<div class="ttc" id="astructth__huff__code_html"><div class="ttname"><a href="structth__huff__code.html">th_huff_code</a></div><div class="ttdoc">A Huffman code for a Theora DCT token.</div><div class="ttdef"><b>Definition:</b> codec.h:440</div></div>
+<div class="ttc" id="astructth__huff__code_html_a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"><div class="ttname"><a href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code::pattern</a></div><div class="ttdeci">ogg_uint32_t pattern</div><div class="ttdoc">The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word.</div><div class="ttdef"><b>Definition:</b> codec.h:443</div></div>
+<div class="ttc" id="astructth__huff__code_html_aaf97b8f2f90042f7bc136a7b2bc35e35"><div class="ttname"><a href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code::nbits</a></div><div class="ttdeci">int nbits</div><div class="ttdoc">The number of bits in the code.</div><div class="ttdef"><b>Definition:</b> codec.h:446</div></div>
+<div class="ttc" id="astructth__img__plane_html"><div class="ttname"><a href="structth__img__plane.html">th_img_plane</a></div><div class="ttdoc">A buffer for a single color plane in an uncompressed image.</div><div class="ttdef"><b>Definition:</b> codec.h:144</div></div>
+<div class="ttc" id="astructth__img__plane_html_a21aea1367894468de489d529d7eaf44d"><div class="ttname"><a href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane::height</a></div><div class="ttdeci">int height</div><div class="ttdoc">The height of this plane.</div><div class="ttdef"><b>Definition:</b> codec.h:148</div></div>
+<div class="ttc" id="astructth__img__plane_html_a58cc297a99cd4594c3d30e56f2ed6b74"><div class="ttname"><a href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane::width</a></div><div class="ttdeci">int width</div><div class="ttdoc">The width of this plane.</div><div class="ttdef"><b>Definition:</b> codec.h:146</div></div>
+<div class="ttc" id="astructth__img__plane_html_ab1100f071ffee3b37e07e3222f819bad"><div class="ttname"><a href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane::stride</a></div><div class="ttdeci">int stride</div><div class="ttdoc">The offset in bytes between successive rows.</div><div class="ttdef"><b>Definition:</b> codec.h:150</div></div>
+<div class="ttc" id="astructth__img__plane_html_af8133681516ce88b5a201c1b4b7e6ba2"><div class="ttname"><a href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane::data</a></div><div class="ttdeci">unsigned char * data</div><div class="ttdoc">A pointer to the beginning of the first row.</div><div class="ttdef"><b>Definition:</b> codec.h:152</div></div>
+<div class="ttc" id="astructth__info_html"><div class="ttname"><a href="structth__info.html">th_info</a></div><div class="ttdoc">Theora bitstream information.</div><div class="ttdef"><b>Definition:</b> codec.h:206</div></div>
+<div class="ttc" id="astructth__info_html_a04c0bd477222d747a76085d8720322e2"><div class="ttname"><a href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info::aspect_denominator</a></div><div class="ttdeci">ogg_uint32_t aspect_denominator</div><div class="ttdef"><b>Definition:</b> codec.h:255</div></div>
+<div class="ttc" id="astructth__info_html_a1d9c8d768a4ae623269f5bd8f6f7a015"><div class="ttname"><a href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info::target_bitrate</a></div><div class="ttdeci">int target_bitrate</div><div class="ttdoc">The target bit-rate in bits per second.</div><div class="ttdef"><b>Definition:</b> codec.h:264</div></div>
+<div class="ttc" id="astructth__info_html_a20606e61676f585a7e59cfc96de190a5"><div class="ttname"><a href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info::fps_numerator</a></div><div class="ttdeci">ogg_uint32_t fps_numerator</div><div class="ttdef"><b>Definition:</b> codec.h:242</div></div>
+<div class="ttc" id="astructth__info_html_a2301388ef3755c41ab12fd144c1fc54e"><div class="ttname"><a href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info::pixel_fmt</a></div><div class="ttdeci">th_pixel_fmt pixel_fmt</div><div class="ttdoc">The pixel format.</div><div class="ttdef"><b>Definition:</b> codec.h:260</div></div>
+<div class="ttc" id="astructth__info_html_a5048edf77b141dd3e9a92ca85e317345"><div class="ttname"><a href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info::pic_width</a></div><div class="ttdeci">ogg_uint32_t pic_width</div><div class="ttdoc">The displayed picture width.</div><div class="ttdef"><b>Definition:</b> codec.h:222</div></div>
+<div class="ttc" id="astructth__info_html_a5b3f834bcf141564e7bb14f49101870f"><div class="ttname"><a href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info::pic_x</a></div><div class="ttdeci">ogg_uint32_t pic_x</div><div class="ttdoc">The X offset of the displayed picture.</div><div class="ttdef"><b>Definition:</b> codec.h:229</div></div>
+<div class="ttc" id="astructth__info_html_a5be65dac9f75e37864cf73dd543570cd"><div class="ttname"><a href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info::aspect_numerator</a></div><div class="ttdeci">ogg_uint32_t aspect_numerator</div><div class="ttdef"><b>Definition:</b> codec.h:254</div></div>
+<div class="ttc" id="astructth__info_html_a60b3e2cac006fee0e105a918d6a5a9f9"><div class="ttname"><a href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info::version_major</a></div><div class="ttdeci">unsigned char version_major</div><div class="ttdef"><b>Definition:</b> codec.h:210</div></div>
+<div class="ttc" id="astructth__info_html_a693ca4ab11fbc0c3f32594b4bb8766ed"><div class="ttname"><a href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info::keyframe_granule_shift</a></div><div class="ttdeci">int keyframe_granule_shift</div><div class="ttdoc">The amount to shift to extract the last keyframe number from the granule position.</div><div class="ttdef"><b>Definition:</b> codec.h:298</div></div>
+<div class="ttc" id="astructth__info_html_a6b1adc3a16a8336a72692b0a5937214c"><div class="ttname"><a href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info::frame_height</a></div><div class="ttdeci">ogg_uint32_t frame_height</div><div class="ttdoc">The encoded frame height.</div><div class="ttdef"><b>Definition:</b> codec.h:219</div></div>
+<div class="ttc" id="astructth__info_html_a6b8087a4d831da53011a43b8d74087a0"><div class="ttname"><a href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info::frame_width</a></div><div class="ttdeci">ogg_uint32_t frame_width</div><div class="ttdoc">The encoded frame width.</div><div class="ttdef"><b>Definition:</b> codec.h:216</div></div>
+<div class="ttc" id="astructth__info_html_a775178474283c5990ba73f9ba7f6b88b"><div class="ttname"><a href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info::pic_height</a></div><div class="ttdeci">ogg_uint32_t pic_height</div><div class="ttdoc">The displayed picture height.</div><div class="ttdef"><b>Definition:</b> codec.h:225</div></div>
+<div class="ttc" id="astructth__info_html_a8aacc575cab2dfe3735001c2ad32aa14"><div class="ttname"><a href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info::pic_y</a></div><div class="ttdeci">ogg_uint32_t pic_y</div><div class="ttdoc">The Y offset of the displayed picture.</div><div class="ttdef"><b>Definition:</b> codec.h:237</div></div>
+<div class="ttc" id="astructth__info_html_a8c7828cd0e023e9d21108160d53659a6"><div class="ttname"><a href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info::colorspace</a></div><div class="ttdeci">th_colorspace colorspace</div><div class="ttdoc">The color space.</div><div class="ttdef"><b>Definition:</b> codec.h:258</div></div>
+<div class="ttc" id="astructth__info_html_aa4cdcf96cb46b256821993e9a830ee02"><div class="ttname"><a href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info::quality</a></div><div class="ttdeci">int quality</div><div class="ttdoc">The target quality level.</div><div class="ttdef"><b>Definition:</b> codec.h:284</div></div>
+<div class="ttc" id="astructth__info_html_aa619408f70c03935529f1d3eda7a3ec2"><div class="ttname"><a href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info::fps_denominator</a></div><div class="ttdeci">ogg_uint32_t fps_denominator</div><div class="ttdef"><b>Definition:</b> codec.h:243</div></div>
+<div class="ttc" id="astructth__info_html_abb1d4887a8079c6c5aaa6d7229f243d7"><div class="ttname"><a href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info::version_minor</a></div><div class="ttdeci">unsigned char version_minor</div><div class="ttdef"><b>Definition:</b> codec.h:211</div></div>
+<div class="ttc" id="astructth__info_html_abfacc79b7cabae12b6ac2484f76602d3"><div class="ttname"><a href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info::version_subminor</a></div><div class="ttdeci">unsigned char version_subminor</div><div class="ttdef"><b>Definition:</b> codec.h:212</div></div>
+<div class="ttc" id="astructth__quant__info_html"><div class="ttname"><a href="structth__quant__info.html">th_quant_info</a></div><div class="ttdoc">A complete set of quantization parameters.</div><div class="ttdef"><b>Definition:</b> codec.h:411</div></div>
+<div class="ttc" id="astructth__quant__ranges_html"><div class="ttname"><a href="structth__quant__ranges.html">th_quant_ranges</a></div><div class="ttdoc">A set of qi ranges.</div><div class="ttdef"><b>Definition:</b> codec.h:343</div></div>
+<div class="ttc" id="astructth__quant__ranges_html_a52cb432f034737087492ea448de20bdb"><div class="ttname"><a href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges::base_matrices</a></div><div class="ttdeci">const th_quant_base * base_matrices</div><div class="ttdoc">nranges +1 base matrices.</div><div class="ttdef"><b>Definition:</b> codec.h:351</div></div>
+<div class="ttc" id="astructth__quant__ranges_html_a53e5a3d7f7a112100b4b670929b3ebab"><div class="ttname"><a href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges::nranges</a></div><div class="ttdeci">int nranges</div><div class="ttdoc">The number of ranges in the set.</div><div class="ttdef"><b>Definition:</b> codec.h:345</div></div>
+<div class="ttc" id="astructth__quant__ranges_html_af3188a373bc0b8ffaa330d0ab4c1a194"><div class="ttname"><a href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges::sizes</a></div><div class="ttdeci">const int * sizes</div><div class="ttdoc">The size of each of the nranges ranges.</div><div class="ttdef"><b>Definition:</b> codec.h:348</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/dir_0f91760d62c578de767c41a0aaae5482.html b/doc/libtheora-1.2/dir_0f91760d62c578de767c41a0aaae5482.html
new file mode 100644
index 0000000..843fbdf
--- /dev/null
+++ b/doc/libtheora-1.2/dir_0f91760d62c578de767c41a0aaae5482.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: theora Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle"><div class="title">theora Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html">codec.h</a> <a href="codec_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:codec_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html">theora.h</a> <a href="theora_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:theora_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The libtheora pre-1.0 legacy C API. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html">theoradec.h</a> <a href="theoradec_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:theoradec_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <code>libtheoradec</code> C decoding API. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html">theoraenc.h</a> <a href="theoraenc_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:theoraenc_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <code>libtheoraenc</code> C encoding API. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
+</body>
+</html>
diff --git a/doc/libtheora-1.2/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/libtheora-1.2/dir_d44c64559bbebec7f509842c48db8b23.html
new file mode 100644
index 0000000..8182b1d
--- /dev/null
+++ b/doc/libtheora-1.2/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: include Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle"><div class="title">include Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
+</body>
+</html>
diff --git a/doc/libtheora-1.2/doc.png b/doc/libtheora-1.2/doc.png
new file mode 100644
index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501
GIT binary patch
literal 746
zcmV<G0u}v<P)<h;3K|Lk000e1NJLTq000;O000&U1^@s6+I?Jz00089Nkl<ZcmeI5
zO;1x>7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$))<VZ%w8AHp|fq%mP;4ffy
zZ-fC6h(S;T@^On$pg;?)``rZ-=s7qr4DR5hE4!!NdDmX=TJJeiSGimUI5QXkXNfZ>
zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV
zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE
z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!n<GayH9yHg8K}
z>w*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=}
zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXR<pt)Tx_l7FX`b+T&0J~3Ac
zDisC2f48s?Pz6U1j(Y#7FGXj244=p1VQ-4TfmZrD8|c58q%jdB67*815?3si0IJ}q
zK#I#XHom~r+!`&75xy*K>bTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$
z8v{MfJbTiiRg4bza<41N<zz(9MkMF~u!W-n>Azrl{=3fl_D+$t+^!xlQ8S}{UtY`e
z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D?
z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3
z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3<FfbmLT1ma;4wB2Ka6K
c|6iFu0IFBSu=gW%4*&oF07*qoM6N<$f>OR*Hvj+t

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/doxygen.css b/doc/libtheora-1.2/doxygen.css
index 658686f..2010785 100644
--- a/doc/libtheora-1.2/doxygen.css
+++ b/doc/libtheora-1.2/doxygen.css
@@ -1,39 +1,80 @@
-/* The standard CSS for doxygen */
+/* The standard CSS for doxygen 1.9.4 */
 
 body, table, div, p, dl {
-	font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
-	font-size: 12px;
+	font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+	font: 400 14px/22px Roboto,sans-serif;
 }
 
 /* @group Heading Levels */
 
-h1 {
+h1.groupheader {
+	font-size: 150%;
+}
+
+.title {
+	font: 400 14px/28px Roboto,sans-serif;
 	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
 }
 
-h2 {
-	font-size: 120%;
+h2.groupheader {
+	border-bottom: 1px solid #879ECB;
+	color: #354C7B;
+	font-size: 150%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-top: 8px;
+	padding-bottom: 4px;
+	width: 100%;
 }
 
-h3 {
+h3.groupheader {
 	font-size: 100%;
 }
 
+h1, h2, h3, h4, h5, h6 {
+	-webkit-transition: text-shadow 0.5s linear;
+	-moz-transition: text-shadow 0.5s linear;
+	-ms-transition: text-shadow 0.5s linear;
+	-o-transition: text-shadow 0.5s linear;
+	transition: text-shadow 0.5s linear;
+	margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+	text-shadow: 0 0 15px cyan;
+}
+
 dt {
 	font-weight: bold;
 }
 
-div.multicol {
+ul.multicol {
 	-moz-column-gap: 1em;
 	-webkit-column-gap: 1em;
+	column-gap: 1em;
 	-moz-column-count: 3;
 	-webkit-column-count: 3;
+	column-count: 3;
 }
 
-p.startli, p.startdd, p.starttd {
+p.startli, p.startdd {
 	margin-top: 2px;
 }
 
+th p.starttd, th p.intertd, th p.endtd {
+        font-size: 100%;
+        font-weight: 700;
+}
+
+p.starttd {
+	margin-top: 0px;
+}
+
 p.endli {
 	margin-bottom: 0px;
 }
@@ -46,6 +87,15 @@ p.endtd {
 	margin-bottom: 2px;
 }
 
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
 /* @end */
 
 caption {
@@ -53,32 +103,96 @@ caption {
 }
 
 span.legend {
-        font-size: 70%;
-        text-align: center;
+	font-size: 70%;
+	text-align: center;
 }
 
 h3.version {
-        font-size: 90%;
-        text-align: center;
+	font-size: 90%;
+	text-align: center;
 }
 
-div.qindex, div.navtab{
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-	margin: 2px;
-	padding: 2px;
+div.navtab {
+	border-right: 1px solid #A3B4D7;
+	padding-right: 15px;
+	text-align: right;
+	line-height: 110%;
+}
+
+div.navtab table {
+	border-spacing: 0;
+}
+
+td.navtab {
+	padding-right: 6px;
+	padding-left: 6px;
+}
+td.navtabHL {
+	background-image: url('tab_a.png');
+	background-repeat:repeat-x;
+	padding-right: 6px;
+	padding-left: 6px;
+}
+
+td.navtabHL a, td.navtabHL a:visited {
+	color: #fff;
+	text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
 }
 
-div.qindex, div.navpath {
+a.navtab {
+	font-weight: bold;
+}
+
+div.qindex{
+	text-align: center;
 	width: 100%;
 	line-height: 140%;
+	font-size: 130%;
+	color: #A0A0A0;
 }
 
-div.navtab {
-	margin-right: 15px;
+dt.alphachar{
+	font-size: 180%;
+	font-weight: bold;
+}
+
+.alphachar a{
+	color: black;
+}
+
+.alphachar a:hover, .alphachar a:visited{
+	text-decoration: none;
+}
+
+.classindex dl {
+	padding: 25px;
+	column-count:1
 }
 
+.classindex dd {
+	display:inline-block;
+	margin-left: 50px;
+	width: 90%;
+	line-height: 1.15em;
+}
+
+.classindex dl.odd {
+	background-color: #F8F9FC;
+}
+
+@media(min-width: 1120px) {
+	.classindex dl {
+		column-count:2
+	}
+}
+
+@media(min-width: 1320px) {
+	.classindex dl {
+		column-count:3
+	}
+}
+
+
 /* @group Link Styling */
 
 a {
@@ -95,19 +209,8 @@ a:hover {
 	text-decoration: underline;
 }
 
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: #9CAFD4;
-	color: #ffffff;
-	border: 1px double #869DCA;
-}
-
 .contents a.qindexHL:visited {
-        color: #ffffff;
+        color: #FFFFFF;
 }
 
 a.el {
@@ -117,13 +220,40 @@ a.el {
 a.elRef {
 }
 
-a.code {
-	color: #4665A2;
-}
-
-a.codeRef {
-	color: #4665A2;
-}
+a.code, a.code:visited, a.line, a.line:visited {
+	color: #4665A2; 
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+	color: #4665A2; 
+}
+
+a.code.hl_class { /* style for links to class names in code snippets */ }
+a.code.hl_struct { /* style for links to struct names in code snippets */ }
+a.code.hl_union { /* style for links to union names in code snippets */ }
+a.code.hl_interface { /* style for links to interface names in code snippets */ }
+a.code.hl_protocol { /* style for links to protocol names in code snippets */ }
+a.code.hl_category { /* style for links to category names in code snippets */ }
+a.code.hl_exception { /* style for links to exception names in code snippets */ }
+a.code.hl_service { /* style for links to service names in code snippets */ }
+a.code.hl_singleton { /* style for links to singleton names in code snippets */ }
+a.code.hl_concept { /* style for links to concept names in code snippets */ }
+a.code.hl_namespace { /* style for links to namespace names in code snippets */ }
+a.code.hl_package { /* style for links to package names in code snippets */ }
+a.code.hl_define { /* style for links to macro names in code snippets */ }
+a.code.hl_function { /* style for links to function names in code snippets */ }
+a.code.hl_variable { /* style for links to variable names in code snippets */ }
+a.code.hl_typedef { /* style for links to typedef names in code snippets */ }
+a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ }
+a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ }
+a.code.hl_signal { /* style for links to Qt signal names in code snippets */ }
+a.code.hl_slot { /* style for links to Qt slot names in code snippets */ }
+a.code.hl_friend { /* style for links to friend names in code snippets */ }
+a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ }
+a.code.hl_property { /* style for links to property names in code snippets */ }
+a.code.hl_event { /* style for links to event names in code snippets */ }
+a.code.hl_sequence { /* style for links to sequence names in code snippets */ }
+a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ }
 
 /* @end */
 
@@ -131,26 +261,112 @@ dl.el {
 	margin-left: -1cm;
 }
 
+ul {
+  overflow: visible;
+}
+
+#side-nav ul {
+  overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+  overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
 .fragment {
-	font-family: monospace, fixed;
-	font-size: 105%;
+  text-align: left;
+  direction: ltr;
+  overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+  overflow-y: hidden;
 }
 
 pre.fragment {
-	border: 1px solid #C4CFE5;
+        border: 1px solid #C4CFE5;
+        background-color: #FBFCFD;
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+        overflow: auto;
+        word-wrap: break-word;
+        font-size:  9pt;
+        line-height: 125%;
+        font-family: monospace, fixed;
+        font-size: 105%;
+}
+
+div.fragment {
+  padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+  margin: 4px 8px 4px 2px;
 	background-color: #FBFCFD;
-	padding: 4px 6px;
-	margin: 4px 8px 4px 2px;
-	overflow: auto;
-	word-wrap: break-word;
-	font-size:  9pt;
-	line-height: 125%;
+	border: 1px solid #C4CFE5;
+}
+
+div.line {
+	font-family: monospace, fixed;
+        font-size: 13px;
+	min-height: 13px;
+	line-height: 1.0;
+	text-wrap: unrestricted;
+	white-space: -moz-pre-wrap; /* Moz */
+	white-space: -pre-wrap;     /* Opera 4-6 */
+	white-space: -o-pre-wrap;   /* Opera 7 */
+	white-space: pre-wrap;      /* CSS3  */
+	word-wrap: break-word;      /* IE 5.5+ */
+	text-indent: -53px;
+	padding-left: 53px;
+	padding-bottom: 0px;
+	margin: 0px;
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+div.line:after {
+    content:"\000A";
+    white-space: pre;
+}
+
+div.line.glow {
+	background-color: cyan;
+	box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+	padding-right: 4px;
+        margin-right: 9px;
+	text-align: right;
+	border-right: 2px solid #0F0;
+	background-color: #E8E8E8;
+        white-space: pre;
+}
+span.lineno a {
+	background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+	background-color: #C8C8C8;
+}
+
+.lineno {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
 }
 
-div.ah {
+div.ah, span.ah {
 	background-color: black;
 	font-weight: bold;
-	color: #ffffff;
+	color: #FFFFFF;
 	margin-bottom: 3px;
 	margin-top: 3px;
 	padding: 0.2em;
@@ -158,16 +374,25 @@ div.ah {
 	border-radius: 0.5em;
 	-webkit-border-radius: .5em;
 	-moz-border-radius: .5em;
+	box-shadow: 2px 2px 3px #999;
 	-webkit-box-shadow: 2px 2px 3px #999;
 	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
 	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+        list-style: none;
+        padding-left: 0;
+}
+
+div.classindex span.ai {
+        display: inline-block;
 }
 
 div.groupHeader {
 	margin-left: 16px;
 	margin-top: 12px;
-	margin-bottom: 6px;
 	font-weight: bold;
 }
 
@@ -177,15 +402,15 @@ div.groupText {
 }
 
 body {
-	background: white;
+	background-color: white;
 	color: black;
         margin: 0;
 }
 
 div.contents {
 	margin-top: 10px;
-	margin-left: 10px;
-	margin-right: 10px;
+	margin-left: 12px;
+	margin-right: 8px;
 }
 
 td.indexkey {
@@ -194,6 +419,8 @@ td.indexkey {
 	border: 1px solid #C4CFE5;
 	margin: 2px 0px 2px 0;
 	padding: 2px 10px;
+        white-space: nowrap;
+        vertical-align: top;
 }
 
 td.indexvalue {
@@ -215,7 +442,7 @@ img.formulaDsp {
 	
 }
 
-img.formulaInl {
+img.formulaInl, img.inline {
 	vertical-align: middle;
 }
 
@@ -240,6 +467,12 @@ img.footer {
 	vertical-align: middle;
 }
 
+.compoundTemplParams {
+	color: #4665A2;
+	font-size: 80%;
+	line-height: 120%;
+}
+
 /* @group Code Colorization */
 
 span.keyword {
@@ -286,6 +519,20 @@ span.vhdllogic {
 	color: #ff0000 
 }
 
+blockquote {
+        background-color: #F7F8FB;
+        border-left: 2px solid #9CAFD4;
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+blockquote.DocNodeRTL {
+   border-left: 0;
+   border-right: 2px solid #9CAFD4;
+   margin: 0 4px 0 24px;
+   padding: 0 16px 0 12px;
+}
+
 /* @end */
 
 /*
@@ -339,6 +586,24 @@ table.memberdecls {
 	padding: 0px;
 }
 
+.memberdecls td, .fieldtable tr {
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+	background-color: cyan;
+	box-shadow: 0 0 15px cyan;
+}
+
 .mdescLeft, .mdescRight,
 .memItemLeft, .memItemRight,
 .memTemplItemLeft, .memTemplItemRight, .memTemplParams {
@@ -353,17 +618,25 @@ table.memberdecls {
 	color: #555;
 }
 
-.memItemLeft, .memItemRight, .memTemplParams {
-	border-top: 1px solid #C4CFE5;
+.memSeparator {
+        border-bottom: 1px solid #DEE4F0;
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
 }
 
 .memItemLeft, .memTemplItemLeft {
         white-space: nowrap;
 }
 
+.memItemRight, .memTemplItemRight {
+	width: 100%;
+}
+
 .memTemplParams {
 	color: #4665A2;
         white-space: nowrap;
+	font-size: 80%;
 }
 
 /* @end */
@@ -372,11 +645,34 @@ table.memberdecls {
 
 /* Styles for detailed member documentation */
 
+.memtitle {
+	padding: 8px;
+	border-top: 1px solid #A8B8D9;
+	border-left: 1px solid #A8B8D9;
+	border-right: 1px solid #A8B8D9;
+	border-top-right-radius: 4px;
+	border-top-left-radius: 4px;
+	margin-bottom: -1px;
+	background-image: url('nav_f.png');
+	background-repeat: repeat-x;
+	background-color: #E2E8F2;
+	line-height: 1.25;
+	font-weight: 300;
+	float:left;
+}
+
+.permalink
+{
+        font-size: 65%;
+        display: inline-block;
+        vertical-align: middle;
+}
+
 .memtemplate {
 	font-size: 80%;
 	color: #4665A2;
 	font-weight: normal;
-	margin-left: 3px;
+	margin-left: 9px;
 }
 
 .memnav {
@@ -388,18 +684,37 @@ table.memberdecls {
 	padding: 2px;
 }
 
+.mempage {
+	width: 100%;
+}
+
 .memitem {
 	padding: 0;
 	margin-bottom: 10px;
+	margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px cyan;
 }
 
 .memname {
-        white-space: nowrap;
-        font-weight: bold;
+        font-weight: 400;
         margin-left: 6px;
 }
 
-.memproto {
+.memname td {
+	vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
         border-top: 1px solid #A8B8D9;
         border-left: 1px solid #A8B8D9;
         border-right: 1px solid #A8B8D9;
@@ -407,37 +722,55 @@ table.memberdecls {
         color: #253555;
         font-weight: bold;
         text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        background-color: #DFE5F1;
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
         /* firefox specific markup */
         -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        -moz-border-radius-topright: 8px;
-        -moz-border-radius-topleft: 8px;
+        -moz-border-radius-topright: 4px;
         /* webkit specific markup */
         -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        -webkit-border-top-right-radius: 8px;
-        -webkit-border-top-left-radius: 8px;
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
+        -webkit-border-top-right-radius: 4px;
 
 }
 
-.memdoc {
+.overload {
+        font-family: "courier new",courier,monospace;
+	font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
         border-bottom: 1px solid #A8B8D9;      
         border-left: 1px solid #A8B8D9;      
         border-right: 1px solid #A8B8D9; 
-        padding: 2px 5px;
+        padding: 6px 10px 2px 10px;
         background-color: #FBFCFD;
         border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: #FFFFFF;
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
         /* firefox specific markup */
-        -moz-border-radius-bottomleft: 8px;
-        -moz-border-radius-bottomright: 8px;
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
         -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
         /* webkit specific markup */
-        -webkit-border-bottom-left-radius: 8px;
-        -webkit-border-bottom-right-radius: 8px;
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
         -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
 }
 
 .paramkey {
@@ -455,103 +788,215 @@ table.memberdecls {
 .paramname em {
 	font-style: normal;
 }
+.paramname code {
+        line-height: 14px;
+}
 
-/* @end */
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}       
 
-/* @group Directory (tree) */
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype, .tparams .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir, .tparams .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
 
-/* for the tree view */
+table.mlabels {
+	border-spacing: 0px;
+}
 
-.ftvtree {
-	font-family: sans-serif;
-	margin: 0px;
+td.mlabels-left {
+	width: 100%;
+	padding: 0px;
 }
 
-/* these are for tree view when used as main index */
+td.mlabels-right {
+	vertical-align: bottom;
+	padding: 0px;
+	white-space: nowrap;
+}
 
-.directory {
-	font-size: 9pt;
-	font-weight: bold;
-	margin: 5px;
+span.mlabels {
+        margin-left: 8px;
 }
 
-.directory h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
+span.mlabel {
+        background-color: #728DC1;
+        border-top:1px solid #5373B4;
+        border-left:1px solid #5373B4;
+        border-right:1px solid #C4CFE5;
+        border-bottom:1px solid #C4CFE5;
+	text-shadow: none;
+	color: white;
+	margin-right: 4px;
+	padding: 2px 3px;
+	border-radius: 3px;
+	font-size: 7pt;
+	white-space: nowrap;
+	vertical-align: middle;
 }
 
-/*
-The following two styles can be used to replace the root node title
-with an image of your choice.  Simply uncomment the next two styles,
-specify the name of your image and be sure to set 'height' to the
-proper pixel height of your image.
-*/
 
-/*
-.directory h3.swap {
-	height: 61px;
-	background-repeat: no-repeat;
-	background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
-	display: none;
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid #9CAFD4;
+        border-bottom: 1px solid #9CAFD4;
+        width: 100%;
 }
-*/
 
-.directory > h3 {
-	margin-top: 0;
+.directory table {
+        border-collapse:collapse;
 }
 
-.directory p {
-	margin: 0px;
-	white-space: nowrap;
+.directory td {
+        margin: 0px;
+        padding: 0px;
+	vertical-align: top;
 }
 
-.directory div {
-	display: none;
-	margin: 0px;
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+	padding-top: 3px;
 }
 
-.directory img {
-	vertical-align: -30%;
+.directory td.entry a {
+        outline:none;
 }
 
-/* these are for tree view when not used as main index */
+.directory td.entry a img {
+        border: none;
+}
 
-.directory-alt {
-	font-size: 100%;
-	font-weight: bold;
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 3px;
+	border-left: 1px solid rgba(0,0,0,0.05);
 }
 
-.directory-alt h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
+.directory tr.even {
+	padding-left: 6px;
+	background-color: #F7F8FB;
 }
 
-.directory-alt > h3 {
-	margin-top: 0;
+.directory img {
+	vertical-align: -30%;
 }
 
-.directory-alt p {
-	margin: 0px;
-	white-space: nowrap;
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
 }
 
-.directory-alt div {
-	display: none;
-	margin: 0px;
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+	color: #3D578C;
 }
 
-.directory-alt img {
-	vertical-align: -30%;
+.arrow {
+    color: #9CAFD4;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    cursor: pointer;
+    font-size: 80%;
+    display: inline-block;
+    width: 16px;
+    height: 22px;
+}
+
+.icon {
+    font-family: Arial, Helvetica;
+    font-weight: bold;
+    font-size: 12px;
+    height: 14px;
+    width: 16px;
+    display: inline-block;
+    background-color: #728DC1;
+    color: white;
+    text-align: center;
+    border-radius: 4px;
+    margin-left: 2px;
+    margin-right: 2px;
+}
+
+.icona {
+    width: 24px;
+    height: 22px;
+    display: inline-block;
+}
+
+.iconfopen {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderopen.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.iconfclosed {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderclosed.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.icondoc {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('doc.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+table.directory {
+    font: 400 14px Roboto,sans-serif;
 }
 
 /* @end */
 
 div.dynheader {
         margin-top: 8px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
 }
 
 address {
@@ -559,8 +1004,14 @@ address {
 	color: #2A3D61;
 }
 
+table.doxtable caption {
+	caption-side: top;
+}
+
 table.doxtable {
 	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
 }
 
 table.doxtable td, table.doxtable th {
@@ -574,9 +1025,73 @@ table.doxtable th {
 	font-size: 110%;
 	padding-bottom: 4px;
 	padding-top: 5px;
-	text-align:left;
 }
 
+table.fieldtable {
+        /*width: 100%;*/
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+        padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+        margin-top: 0px;
+}       
+        
+.fieldtable td.fielddoc p:last-child {
+        margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        font-weight: 400;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
 .tabsearch {
 	top: 0px;
 	left: 10px;
@@ -592,6 +1107,7 @@ table.doxtable th {
 	font-size: 11px;
 	background-image:url('tab_b.png');
 	background-repeat:repeat-x;
+	background-position: 0 -5px;
 	height:30px;
 	line-height:30px;
 	color:#8AA0CC;
@@ -606,26 +1122,44 @@ table.doxtable th {
 	list-style-type:none;
 	float:left;
 	padding-left:10px;
-	padding-right: 15px;
+	padding-right:15px;
 	background-image:url('bc_s.png');
 	background-repeat:no-repeat;
 	background-position:right;
 	color:#364D7C;
 }
 
-.navpath a
+.navpath li.navelem a
 {
 	height:32px;
 	display:block;
 	text-decoration: none;
 	outline: none;
+	color: #283A5D;
+	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+	text-decoration: none;        
 }
 
-.navpath a:hover
+.navpath li.navelem a:hover
 {
 	color:#6884BD;
 }
 
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+}
+
+
 div.summary
 {
 	float: right;
@@ -640,6 +1174,30 @@ div.summary a
 	white-space: nowrap;
 }
 
+table.classindex
+{
+        margin: 10px;
+        white-space: nowrap;
+        margin-left: 3%;
+        margin-right: 3%;
+        width: 94%;
+        border: 0;
+        border-spacing: 0; 
+        padding: 0;
+}
+
+div.ingroups
+{
+	font-size: 8pt;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
 div.header
 {
         background-image:url('nav_h.png');
@@ -654,3 +1212,630 @@ div.headertitle
 	padding: 5px 5px 5px 10px;
 }
 
+.PageDocRTL-title div.headertitle {
+  text-align: right;
+  direction: rtl;
+}
+
+dl {
+        padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
+	margin-left: 0px;
+	padding-left: 0px;
+}
+
+dl.section.DocNodeRTL {
+  margin-right: 0px;
+  padding-right: 0px;
+}
+
+dl.note {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #D0C000;
+}
+
+dl.note.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #FF0000;
+}
+
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00D000;
+}
+
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #00D000;
+}
+
+dl.deprecated {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #505050;
+}
+
+dl.todo {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #00C0E0;
+}
+
+dl.test {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.bug {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #C08050;
+}
+
+dl.section dd {
+	margin-bottom: 6px;
+}
+
+
+#projectrow
+{
+	height: 56px;
+}
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+ 
+#projectlogo img
+{ 
+	border: 0px none;
+}
+ 
+#projectalign
+{
+        vertical-align: middle;
+        padding-left: 0.5em;
+}
+
+#projectname
+{
+	font: 200% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 2px 0px;
+}
+    
+#projectbrief
+{
+	font: 90% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font: 50% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.plantumlgraph
+{
+        text-align: center;
+}
+
+.diagraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+div.zoom
+{
+	border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+        text-align:right;
+        width:52px;
+}
+
+dl.citelist dd {
+        margin:2px 0 2px 72px;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: #F4F6FA;
+        border: 1px solid #D8DFEE;
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 8px 10px 10px;
+        width: 200px;
+}
+
+.PageDocRTL-title div.toc {
+  float: left !important;
+  text-align: right;
+}
+
+div.toc li {
+        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+.PageDocRTL-title div.toc li {
+  background-position-x: right !important;
+  padding-left: 0 !important;
+  padding-right: 10px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+	color: #4665A2;
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}       
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.level2 {
+        margin-left: 15px;
+}
+
+div.toc li.level3 {
+        margin-left: 30px;
+}
+
+div.toc li.level4 {
+        margin-left: 45px;
+}
+
+span.emoji {
+        /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
+         * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
+         */
+}
+
+span.obfuscator {
+  display: none;
+}
+
+.PageDocRTL-title div.toc li.level1 {
+  margin-left: 0 !important;
+  margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+  margin-left: 0 !important;
+  margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+  margin-left: 0 !important;
+  margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+  margin-left: 0 !important;
+  margin-right: 45px;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: gray;
+        cursor: pointer;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+        position: absolute;
+        display: none;
+}
+
+#powerTip {
+	cursor: default;
+	/*white-space: nowrap;*/
+	background-color: white;
+	border: 1px solid gray;
+	border-radius: 4px 4px 4px 4px;
+	box-shadow: 1px 1px 7px gray;
+	display: none;
+	font-size: smaller;
+	max-width: 80%;
+	opacity: 0.9;
+	padding: 1ex 1em 1em;
+	position: absolute;
+	z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+        color: grey;
+	font-style: italic;
+}
+
+#powerTip div.ttname a {
+        font-weight: bold;
+}
+
+#powerTip div.ttname {
+        font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+        color: #006318;
+}
+
+#powerTip div {
+        margin: 0px;
+        padding: 0px;
+        font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+	content: "";
+	position: absolute;
+	margin: 0px;
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.w:after,  #powerTip.w:before,
+#powerTip.e:after,  #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+}
+
+#powerTip.n:after,  #powerTip.s:after,
+#powerTip.w:after,  #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+	border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before,  #powerTip.s:before,
+#powerTip.w:before,  #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+	border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+	top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+	border-top-color: #FFFFFF;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+#powerTip.n:before {
+	border-top-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+	left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+	right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+	left: 14px;
+}
+
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+	border-bottom-color: #FFFFFF;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+	border-bottom-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+	left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+	right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+	left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+	left: 100%;
+}
+#powerTip.e:after {
+	border-left-color: #FFFFFF;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.e:before {
+	border-left-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+	right: 100%;
+}
+#powerTip.w:after {
+	border-right-color: #FFFFFF;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.w:before {
+	border-right-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+
+/* @group Markdown */
+
+table.markdownTable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+	border: 1px solid #2D4068;
+	padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+	background-color: #374F7F;
+	color: #FFFFFF;
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+	text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+	text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+	text-align: center
+}
+
+.DocNodeRTL {
+  text-align: right;
+  direction: rtl;
+}
+
+.DocNodeLTR {
+  text-align: left;
+  direction: ltr;
+}
+
+table.DocNodeRTL {
+   width: auto;
+   margin-right: 0;
+   margin-left: auto;
+}
+
+table.DocNodeLTR {
+   width: auto;
+   margin-right: auto;
+   margin-left: 0;
+}
+
+code.JavaDocCode {
+  direction:ltr;
+}
+
+tt, code, kbd, samp
+{
+  display: inline-block;
+  direction:ltr; 
+}
+/* @end */
+
+u {
+	text-decoration: underline;
+}
+
diff --git a/doc/libtheora-1.2/doxygen.png b/doc/libtheora-1.2/doxygen.png
deleted file mode 100644
index 635ed52fce7057ac24df92ec7664088a881fa5d0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3942
zcmV-s51H_ZP)<h;3K|Lk000e1NJLTq003wJ0018d1^@s63p<F|000jyNkl<ZcmeHQ
zdsvKl|GsltB^An)PDVPYv_|F7s@8;Jke%J=Ks$cZj>95ENDh(OT9xpYZC{M(=rqI*
z+1erNEr&9zRjUI-4rN=4BBz>P@ys*xOjGRjzVE*Fx_qvyt9d@B@BO*&@8Mq!nM{Tc
z_WoM84-~xLreSL9@vgZ{m2dF}`u=^ZF3syQ-s2tnBwCI3<taNVE@Y(u2!7iFAMD?=
zcNK`2w<n0=Ftf|z0SNv;;rk&FT3Tg)%KyRM&ANBf_|FK`+KCXI`9IiyPar)2TmVes
zTk>ZFvSfI20Wbj236~Urq*8Kfw@RKKfRQTgE>}uUHK^ptamY=o)LU(xy55zNQ(`qZ
znZ&$O075mrrInIXQgw4%GCbMD8Vn`3n3$EaRwtP1D<!8SW_A;p0NBL3QUJTFOY<b1
z2^68FLkpcW<12W&n4`UOQQ3WFw(!7P1+sSZS_**YHe&^Sl)WJ=OmqPN*Y7;S#jCZj
zWO#-ENGUJQ*=FtNrKhDst1-5Aqx8C4eioJt&(Y<@IVD8TL`!EMo^nooO*#4*S*xov
zDlg7y=&ZLT!;@8BoFle&^l~R~vOQhQ(O;)GuHSit>{A!Gs=e!L%3;ayv@I{rAw{xw
z^x^>EIWQM8ob3m}$(BaupDMV;Ed8w<mJClJF>5|i(*e`7rU$TOc&1o7`|!LyN5jHI
z7uWAR!v4c2xMp?}QmRYyf>i}tYGU(g=>DW&==J@Gbh<ejWBHtsc-7jfR-jj{t*~>R
z5@BNVY3O$`^D%gk4khm9XpFhuwzxUhi9T=Du4rpVuYRSMPHeDqo+4htnZRU@G9`0&
z9~p)CsFl1|t*wjfoTo&%davN^3RfJUhQ{ZZIAcD77X^XsF_iR&ZMQ;p>K5*+*48)x
z+=<>nh+6Uq85jOkg>{z>a;+V`s<d=yIcvh!QtIUx8ycTeW)Iu`FJz~du!+9poH1+X
zVuX!B2QJ(kjRCko_>(I;I%*5s+R@9a^wNoZ03(g9-EcH%uHvX&yp7`D#`9Kw>DU3s
zjD-VuW_A-K)unlS4O3f>_B%pPONUmI#oyL};Lglp3=04>0eBBEw$D1k-$WTsoi#K*
z$7h`NcyRZsZ#w~6I<%~u!^xDofYrzF>zVIj2N>Ijs`mVR(Oy&*9f}<{JtQ<KOd;Ga
z<#h=Bk|QZOFLH4h!xAO#*u@<0tPp--lo;oZ#VrEh5V&v?Z$+Sjl&&m%X913-Z3!<q
zFN$**!{V6Oe43oGV+jS*FXeTpfBX!}>j8jJT!oEc!NQXBq5y|6ET*N?7ox*E6#{i-
z@_DLD^IYTtg|Pg?A~!7@OCd8p^)kxK%VBM84docx$Z{MvO)iiqep@or-N}TEU8$%;
zJih?#yJ9)V1s_`}c3XbY9V}nEKwNz8ILmR|v<Q2*pwN9$-jsD`ayQ`H$Ph|heA;EC
z@7j<8V1t$pt>)(w|D@oVG;=i`+$*)!(xH{9#$2Za;pyZ1wgU#)mHl|&8%iwu%yncO
z`T32Ib0$D}j`c}}5M@M#7oR&G=QwU!!Ja*P7|NJt1@lo=d{_dY-q_lmDcH7{BHncF
zR@^PmcLC6EsN?6N{fV3o8}>?h9X_@;=&-p7%tms7$_{3w(anwek_k&<&)~c$Ar?S>
zy9gKavndTmxqAbE?SMgcWhXPENdKdz7ntt55Y3Hs3jjc~uR-#$tR(1a_abv9`-QzG
z^J0Fsbd<YyqW`>&yruq%xAsxf3rc=T<sS$N;!4^U_Pv;&T|LU(J3V|;0(-jq5CxgZ
z=aG{Y9d75!joceKo%A2ezk$g0%Y*<fd-<-3+_YefVzU(A#meOi#Q@^ko+*ZET;3Ca
z)XtTg-dSJ5MPIn$8!l(sFm?43i;<s+G7}U6-KuFs;8)Ag+*l{p>}$Zx|AD%x{Fd=?
z{qhl3kG5w-PqVK9-Gru%7UIEw)bt$ZMF|Z6HpmO)F%@GNT8yT|#FuWPxv@@Ic={;6
zU7)e!XG|1dx=kU|&|)+m+$&|Yw92Fa;*MnegXcCf8XsHfqg_F5t)3Jt8)EkXKuY21
zqt%4}@R8hK*(_JO0*H+Pa)6Pp&K49rKNeQEYb*x9WY`!`Vh3|80YF%I`lxv9_!$hD
zOh$>zWaRIW!);6`vA$Zp;5lnGyX^^N%YEjCeJMHPolKCE1ttIqK<$0w&LcE8)`_c2
z^H^qf6ACV0t7FLLCsu#mL&Mb8gE@rZE#k+1Nrrxw+{N0^#bN*~!qt2>S4e#jC$a$`
ze4@{)$aTEYq<?eD1>_!#2|t@Fj3e?w-XVuG$Z}kAR?_kgJAlZIJ)0{eHw#fybNooA
zp02jyYVc&w!}m#BVP>ef2|U^J(A-#O1R#A&><*?Y!<dY5Ligc@B%5_MS19fZCjh2u
z?Yo!~k8z!GOb8_E3|o&kVzuJst5!1D($ev?D94qprBz0)C3cCbudAG&P9EZWO#Z^>
zOwml{CnE+aU3JfKE@uzge(qMY{^6siuXFt;+mMbapU;Ppejl=L#>s2#SMBbfP9AFT
znEVA=TBtZ6d-GfF>kOxylg>Ek%qTp*h2ze!^^hOsmKOEE6b;maQ>~R>3#z`Zawbik
z88OTykU3_!Atg^+vnM=1n}?%<$dHzn)?k&T#RWwb+*y;XNQbYNHKo3wr~&}Qa$id;
z6^D*K9RTQZUuQVg)g~P%!BIiv+cXllt)KEP9IN)1udQKf>p|~lXj7K<-9}0Q%i9+K
zXaF7qXclE>sf)7)J4_M%V{;(sFT7HN$o0#_qU<adk(a(WG=}Z<i8-0`^*RA=mYiUT
zva`f2Z(r|zhBjGAabeKW?xl9hkm%#Mc0N5;l$}Mn=2+goHJRxGJ#}@Dn_j>#Ah1D{
zon=JihPcgG5xHuvQwOXBkt3(iUdx{6Gn|aa>@C9Cqg%rPK(+REZ4>6t3z7m@Aj;0l
zSHh&%cKSJ*+WOJGwe?Y7d(9RAy)&NVS6uj}1m@U}jXH3oVQT9E0A)$ZDRdK>;_i;+
z7vbEoI7$1XK6v<K#`XwB^Y-gxI@=Ebj5M|NYrap8gH9g>NxT(_sJ(GM4s92e;gB&Q
zDO;(Ve^%gPG&lWW1fUf_=9-Q1%&`s%aD^o`Q2u`W<ORN35Q65WKYWh~GqaU2L{1F|
z3*mjPAXRSrf2=_It_{172{RWFxy-@CCyP|)C@iVL&zJAQ!O8$$E{aX0#6dU!VLzHx
z*}mimN<63F7BW-!p#FY^1VB9iXlm;-El177e4i1>I9V>Qm#D5?SW<)Njmt@aR5@6(
zL4cdTo+Jg@>Brm1^_gf%0Z?}1AppR3NdFE5uzdpBZz;{Thd6SI-<pshwmpT=1E(rp
z_n7HvMG^0x!mBuu8J!|Lm>$gb2}pFAww$*j(2=s{mdz2E;lBvVcrN@}i<nIzVgP=^
zgXxb63=G2|V+xXD7I(n6dh2miT*wL#9!wW1VJ?V_*}+gZk2>2bC`Q5Y_;BID^f<Op
zK;jg?H9X}xl`%Iyd4cwmF?zURhk5`Kb9*mQ!iG5==8+4uYJD72xprAZDsElPAq8^K
z8)$i9Yt(8AnaYH#`e*vhkqcy|sjXkWDr_BW>0J+ACVhyQsLg0@`okIk+i=LJ=<Qpm
z<Stpe1GP6UF3{B0PmbEM8O8&($yj{aWt<l!q#VdhC6DAxzd2<IiOF>3yvI*oASj62
za3C{Pu_fQ+atw!zN{$Shr*_UV=|jp4#CqWeGE?Jb`pq!|5bDES&-Ix=-N>DpydHqW
z+-{QS+i)d;uGS)M%Suw9khR}3N82j|S{a#&Tctme0s%mTy<1S|;@M-+S4#o@!qr;r
z+w(n=;@43Y_n#dI0Gb(T0{G7k<n->-KY8k`MPM_Bss$?)SK){KJMrwv!vz42_U_Za
zX7lDqiU8ZvCAfGpAtfVC5bQrYa4C)M9G$S4D&VqpJ8)lm$t5FAAR%ywf>*~<h7*db
zaA?n_-5F_uMXEUbX9q^~?$bZi!R<@P@BFgs4{#}82rI{_SQ@}k#S@;9CWs?y9RTpm
z?Iv+Om~NOb+Dz@N*KR&U;guR($`_*H_exs;baT5&qUbfVDZD0r6G{rCI>Vaiv<?Eb
zK|+M?K#NdI#<bUDJbG{kl|_fd0IC4+RB)sK2u>C70RVFXISv4Lx&tk^Cf1)qQ|rxp
z*8H>)cgoM;(eKxH14u~~@JopNr9@A<O3!tv0{&wnCsEzHsRDj55vS`8v?$xTmAZM>
z#-yXVG?$es;EPqsn-j?45^L52U=nT#0A^T3JY$&B3EH&%2UHdv3P=_3$!n76!34ks
zz^2ii@sXAu8LKYMmG=_^*qtiiOFNlG3?QYtG%wrCZh|)vlj8vq3sw~f1b8;_TMB>z
zPSyDQy_9bbXD*#sNRGMzfSAwUD}ASX;ZGQcGdE=9q~ORU{v$}=z2Bc8EOe2S&);jS
zCZB8P`hPoV1NBk)TQP2z{q$NL-GLUc7%>&fecE^E{I5gs?8!qTK7VgR7Z?}-`YG|z
zVN-NvOlQ+B;~J*69_Xd1n-0MLKTY6&*%rTi*0^HXniz8{bCMsVpSXqs(GGO)*_#Kz
z9YBCQ_VRhtwh<m*e?9LDhn{b1uGELyww=A&o&}%3c)pCPqQe0_<X=M_KLg!t(BDFt
zt5=F}xAL5cf!PRSOEW!aXeeS8CHc@dbwGV>Mf<yd!*tkq*x1<OQo$+IRsW(TlL0cB
z4BfgZ6{*;nqC2>ppMh@OdxjCN0mH`5hKZr>UoxMx`W~u^kD&bskplglOiRxQvep*2
z0mk+kMP>J)K`8X3`6Zq|X~5IQ-_rrOn+_WvU{1Gs{ow1-Eb;K(Z?p$@ugXpr^?PM(
z(5Hv;$*X<v6cxAXai#1gs!Mb6{K>=QZaqG_4q)N1v9sO(Dsei!;%IcIztt6YUs{yj
z^77e`UYa^%<-Ts+d*b=ihKt?0_sj!ePNO@K*PGmGD*v^;rRAkduikx~UNk=@{XKeV
zp_ir(dTaGVWBr{_02Kg2Xmlsn|IvIIRYivb<N`4P4E;NvCN*}O_}}&G+qGQ)Kx<Qd
z@c(d*s;Z*H;vUtdc>o|L{yx}yX5Bte@P6C>1KyqvYnT{boB#j-07*qoM6N<$f^XQQ
A+yDRo

diff --git a/doc/libtheora-1.2/doxygen.svg b/doc/libtheora-1.2/doxygen.svg
new file mode 100644
index 0000000..d42dad5
--- /dev/null
+++ b/doc/libtheora-1.2/doxygen.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="a">
+   <stop stop-color="#5373B4" offset="0"/>
+   <stop stop-color="#7C95C6" offset="1"/>
+  </linearGradient>
+  <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#C0CCE3" offset="0"/>
+   <stop stop-color="#EEF1F7" offset="1"/>
+  </linearGradient>
+  <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
+   <feGaussianBlur stdDeviation="0.45293203"/>
+  </filter>
+ </defs>
+ <g>
+  <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
+  <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
+  <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
+  <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
+  <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
+ </g>
+</svg>
diff --git a/doc/libtheora-1.2/dynsections.js b/doc/libtheora-1.2/dynsections.js
new file mode 100644
index 0000000..3174bd7
--- /dev/null
+++ b/doc/libtheora-1.2/dynsections.js
@@ -0,0 +1,121 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+   content.hide();
+   summary.show();
+   $(linkObj).addClass('closed').removeClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+   content.show();
+   summary.hide();
+   $(linkObj).removeClass('closed').addClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+  $('table.directory tr').
+       removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+  $('table.directory tr').each(function() {
+    var l = this.id.split('_').length-1;
+    var i = $('#img'+this.id.substring(3));
+    var a = $('#arr'+this.id.substring(3));
+    if (l<level+1) {
+      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+      a.html('&#9660;');
+      $(this).show();
+    } else if (l==level+1) {
+      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+      a.html('&#9658;');
+      $(this).show();
+    } else {
+      $(this).hide();
+    }
+  });
+  updateStripes();
+}
+
+function toggleFolder(id)
+{
+  // the clicked row
+  var currentRow = $('#row_'+id);
+
+  // all rows after the clicked row
+  var rows = currentRow.nextAll("tr");
+
+  var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+  // only match elements AFTER this one (can't hide elements before)
+  var childRows = rows.filter(function() { return this.id.match(re); });
+
+  // first row is visible we are HIDING
+  if (childRows.filter(':first').is(':visible')===true) {
+    // replace down arrow by right arrow for current row
+    var currentRowSpans = currentRow.find("span");
+    currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+    currentRowSpans.filter(".arrow").html('&#9658;');
+    rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+  } else { // we are SHOWING
+    // replace right arrow by down arrow for current row
+    var currentRowSpans = currentRow.find("span");
+    currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+    currentRowSpans.filter(".arrow").html('&#9660;');
+    // replace down arrows by right arrows for child rows
+    var childRowsSpans = childRows.find("span");
+    childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+    childRowsSpans.filter(".arrow").html('&#9658;');
+    childRows.show(); //show all children
+  }
+  updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+  var rows = $('tr.inherit.'+id);
+  var img = $('tr.inherit_header.'+id+' img');
+  var src = $(img).attr('src');
+  if (rows.filter(':first').is(':visible')===true) {
+    rows.css('display','none');
+    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+  } else {
+    rows.css('display','table-row'); // using show() causes jump in firefox
+    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+  }
+}
+/* @license-end */
diff --git a/doc/libtheora-1.2/files.html b/doc/libtheora-1.2/files.html
index bb9069c..8a35d08 100644
--- a/doc/libtheora-1.2/files.html
+++ b/doc/libtheora-1.2/files.html
@@ -1,43 +1,61 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: File Index</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: File List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="headertitle">
-<h1>File List</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">File List</div></div>
+</div><!--header-->
 <div class="contents">
-Here is a list of all files with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="codec_8h.html">codec.h</a> <a href="codec_8h_source.html">[code]</a></td><td class="indexvalue">The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API </td></tr>
-  <tr><td class="indexkey"><a class="el" href="theora_8h.html">theora.h</a> <a href="theora_8h_source.html">[code]</a></td><td class="indexvalue">The libtheora pre-1.0 legacy C API </td></tr>
-  <tr><td class="indexkey"><a class="el" href="theoradec_8h.html">theoradec.h</a> <a href="theoradec_8h_source.html">[code]</a></td><td class="indexvalue">The <code>libtheoradec</code> C decoding API </td></tr>
-  <tr><td class="indexkey"><a class="el" href="theoraenc_8h.html">theoraenc.h</a> <a href="theoraenc_8h_source.html">[code]</a></td><td class="indexvalue">The <code>libtheoraenc</code> C encoding API </td></tr>
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html" target="_self">theora</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="codec_8h_source.html"><span class="icondoc"></span></a><a class="el" href="codec_8h.html" target="_self">codec.h</a></td><td class="desc">The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API </td></tr>
+<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="theora_8h_source.html"><span class="icondoc"></span></a><a class="el" href="theora_8h.html" target="_self">theora.h</a></td><td class="desc">The libtheora pre-1.0 legacy C API </td></tr>
+<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="theoradec_8h_source.html"><span class="icondoc"></span></a><a class="el" href="theoradec_8h.html" target="_self">theoradec.h</a></td><td class="desc">The <code>libtheoradec</code> C decoding API </td></tr>
+<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="theoraenc_8h_source.html"><span class="icondoc"></span></a><a class="el" href="theoraenc_8h.html" target="_self">theoraenc.h</a></td><td class="desc">The <code>libtheoraenc</code> C encoding API </td></tr>
 </table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/folderclosed.png b/doc/libtheora-1.2/folderclosed.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66
GIT binary patch
literal 616
zcmV-u0+;=XP)<h;3K|Lk000e1NJLTq000;O000&U1^@s6+I?Jz0006nNkl<ZcmeHQ
zO;6N77=GINb=Z(>a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i
z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU
zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6`
zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM<n!c>
zlFX`g{k$X}yIe%$N)cn1LNu=q<K5OS7CNKPk1f&9-+dXiicCfAy8a*|m;2$mAHWmO
zXHGi+kV1-pHt+rM<gA>9_CS)*<?(PP8<}W6a5(^^keLBRMb50K&dQM@pmn94ZU=xQ
zQX)TlxfVQ_9);_LB~VUu;v|U_-?p*(;VWJ|=^7%ZGN6sBL~)dHv|OyK(wPKdmH>>A
zsX_mM4<gjHpqc8Q=uo450T?4i;CdW;`z|<XAntIp>L@`(cSNQKMFc$RtYbx{79<Tw
zWXi-A43v#7I@t_Ijx7TKV2n(H{k|uniNrjlLmWw}y*t^*R9a-QX?;6B==9%$de=Kk
z*QYpi761&SjtX%clomR5cK>#j-J7hk*>*+ZZhM4Hw?<fJyv$}=71o`ou(^pUn-ky6
z->I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000<MNUMnLSTaR
CZX#j;

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/folderopen.png b/doc/libtheora-1.2/folderopen.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6c7f676a3b3ef8c2c307d319dff3c6a604eb227
GIT binary patch
literal 597
zcmV-b0;>IqP)<h;3K|Lk000e1NJLTq000;O000&U1^@s6+I?Jz0006UNkl<ZcmeHQ
zKX21e5dS%8nlx#!9XpK>X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e=
zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2
zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+!
zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z(
zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l
zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa(
z0QgY<a!3GSVHw98r3tc|WLmCr=#k@b07--d0B^h;_*7huEOe@B5HbiIMnQNV2X-w6
zOrIHW*Nh!-3RJ{NFA7|xb7mLqy*mtQR%uj&==!8@USn{@{Ji@c`@7F#U6jIrqNF?z
zhGG8IoU)VO(*u}!lcNr&IgdJw?)fXgkFy?t@!%{)3!Y}PHt9|Ph>gTWqf1qN++Gqp
z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ
j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/functions.html b/doc/libtheora-1.2/functions.html
index 557828c..1409209 100644
--- a/doc/libtheora-1.2/functions.html
+++ b/doc/libtheora-1.2/functions.html
@@ -1,353 +1,192 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: Data Fields</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_b"><span>b</span></a></li>
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_g"><span>g</span></a></li>
-      <li><a href="#index_h"><span>h</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_k"><span>k</span></a></li>
-      <li><a href="#index_l"><span>l</span></a></li>
-      <li><a href="#index_n"><span>n</span></a></li>
-      <li><a href="#index_o"><span>o</span></a></li>
-      <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_q"><span>q</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-      <li><a href="#index_u"><span>u</span></a></li>
-      <li><a href="#index_v"><span>v</span></a></li>
-      <li><a href="#index_w"><span>w</span></a></li>
-      <li><a href="#index_y"><span>y</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>ac_scale
-: <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a>
-</li>
-<li>aspect_denominator
-: <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>
-, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a>
-</li>
-<li>aspect_numerator
-: <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>
-, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a>
-</li>
+<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div>
+
+<h3><a id="index_a" name="index_a"></a>- a -</h3><ul>
+<li>ac_scale&#160;:&#160;<a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a></li>
+<li>aspect_denominator&#160;:&#160;<a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a></li>
+<li>aspect_numerator&#160;:&#160;<a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
-<li>base_matrices
-: <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a>
-</li>
+<h3><a id="index_b" name="index_b"></a>- b -</h3><ul>
+<li>base_matrices&#160;:&#160;<a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>codec_setup
-: <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a>
-</li>
-<li>colorspace
-: <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>
-, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a>
-</li>
-<li>comment_lengths
-: <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>
-, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a>
-</li>
-<li>comments
-: <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>
-, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a>
-</li>
-<li>ctx
-: <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a>
-</li>
+<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
+<li>codec_setup&#160;:&#160;<a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a></li>
+<li>colorspace&#160;:&#160;<a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a></li>
+<li>comment_lengths&#160;:&#160;<a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a></li>
+<li>comments&#160;:&#160;<a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a></li>
+<li>ctx&#160;:&#160;<a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>data
-: <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a>
-</li>
-<li>dc_scale
-: <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a>
-</li>
-<li>dropframes_p
-: <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a>
-</li>
+<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
+<li>data&#160;:&#160;<a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a></li>
+<li>dc_scale&#160;:&#160;<a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a></li>
+<li>dropframes_p&#160;:&#160;<a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fps_denominator
-: <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>
-, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a>
-</li>
-<li>fps_numerator
-: <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a>
-, <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>
-</li>
-<li>frame_height
-: <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>
-, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a>
-</li>
-<li>frame_width
-: <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a>
-, <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>
-</li>
+<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
+<li>fps_denominator&#160;:&#160;<a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a></li>
+<li>fps_numerator&#160;:&#160;<a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>, <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a></li>
+<li>frame_height&#160;:&#160;<a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a></li>
+<li>frame_width&#160;:&#160;<a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>, <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>granulepos
-: <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a>
-</li>
+<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
+<li>granulepos&#160;:&#160;<a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>height
-: <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>
-, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a>
-</li>
+<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
+<li>height&#160;:&#160;<a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>i
-: <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a>
-</li>
-<li>internal_decode
-: <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a>
-</li>
-<li>internal_encode
-: <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a>
-</li>
+<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
+<li>i&#160;:&#160;<a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a></li>
+<li>internal_decode&#160;:&#160;<a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a></li>
+<li>internal_encode&#160;:&#160;<a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>keyframe_auto_p
-: <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a>
-</li>
-<li>keyframe_auto_threshold
-: <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a>
-</li>
-<li>keyframe_data_target_bitrate
-: <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a>
-</li>
-<li>keyframe_frequency
-: <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a>
-</li>
-<li>keyframe_frequency_force
-: <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a>
-</li>
-<li>keyframe_granule_shift
-: <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a>
-</li>
-<li>keyframe_mindistance
-: <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a>
-</li>
+<h3><a id="index_k" name="index_k"></a>- k -</h3><ul>
+<li>keyframe_auto_p&#160;:&#160;<a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a></li>
+<li>keyframe_auto_threshold&#160;:&#160;<a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a></li>
+<li>keyframe_data_target_bitrate&#160;:&#160;<a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a></li>
+<li>keyframe_frequency&#160;:&#160;<a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a></li>
+<li>keyframe_frequency_force&#160;:&#160;<a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a></li>
+<li>keyframe_granule_shift&#160;:&#160;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a></li>
+<li>keyframe_mindistance&#160;:&#160;<a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>loop_filter_limits
-: <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a>
-</li>
+<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
+<li>loop_filter_limits&#160;:&#160;<a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>nbits
-: <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a>
-</li>
-<li>noise_sensitivity
-: <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a>
-</li>
-<li>nranges
-: <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a>
-</li>
+<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
+<li>nbits&#160;:&#160;<a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a></li>
+<li>noise_sensitivity&#160;:&#160;<a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a></li>
+<li>nranges&#160;:&#160;<a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>offset_x
-: <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a>
-</li>
-<li>offset_y
-: <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a>
-</li>
+<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
+<li>offset_x&#160;:&#160;<a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a></li>
+<li>offset_y&#160;:&#160;<a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>pattern
-: <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a>
-</li>
-<li>pic_height
-: <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a>
-</li>
-<li>pic_width
-: <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a>
-</li>
-<li>pic_x
-: <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a>
-</li>
-<li>pic_y
-: <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a>
-</li>
-<li>pixel_fmt
-: <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a>
-</li>
-<li>pixelformat
-: <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a>
-</li>
+<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
+<li>pattern&#160;:&#160;<a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a></li>
+<li>pic_height&#160;:&#160;<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a></li>
+<li>pic_width&#160;:&#160;<a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a></li>
+<li>pic_x&#160;:&#160;<a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a></li>
+<li>pic_y&#160;:&#160;<a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a></li>
+<li>pixel_fmt&#160;:&#160;<a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a></li>
+<li>pixelformat&#160;:&#160;<a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
-<li>qi_ranges
-: <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a>
-</li>
-<li>quality
-: <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>
-, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a>
-</li>
-<li>quick_p
-: <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a>
-</li>
+<h3><a id="index_q" name="index_q"></a>- q -</h3><ul>
+<li>qi_ranges&#160;:&#160;<a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a></li>
+<li>quality&#160;:&#160;<a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a></li>
+<li>quick_p&#160;:&#160;<a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>sharpness
-: <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a>
-</li>
-<li>sizes
-: <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a>
-</li>
-<li>stride
-: <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a>
-</li>
-<li>stripe_decoded
-: <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a>
-</li>
+<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
+<li>sharpness&#160;:&#160;<a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a></li>
+<li>sizes&#160;:&#160;<a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a></li>
+<li>stride&#160;:&#160;<a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a></li>
+<li>stripe_decoded&#160;:&#160;<a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>target_bitrate
-: <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>
-, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a>
-</li>
+<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
+<li>target_bitrate&#160;:&#160;<a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
-<li>u
-: <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a>
-</li>
-<li>user_comments
-: <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>
-, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a>
-</li>
-<li>uv_height
-: <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a>
-</li>
-<li>uv_stride
-: <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a>
-</li>
-<li>uv_width
-: <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a>
-</li>
+<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
+<li>u&#160;:&#160;<a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a></li>
+<li>user_comments&#160;:&#160;<a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a></li>
+<li>uv_height&#160;:&#160;<a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a></li>
+<li>uv_stride&#160;:&#160;<a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a></li>
+<li>uv_width&#160;:&#160;<a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>v
-: <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a>
-</li>
-<li>vendor
-: <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>
-, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a>
-</li>
-<li>version_major
-: <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>
-, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a>
-</li>
-<li>version_minor
-: <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a>
-, <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>
-</li>
-<li>version_subminor
-: <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a>
-, <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>
-</li>
+<h3><a id="index_v" name="index_v"></a>- v -</h3><ul>
+<li>v&#160;:&#160;<a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a></li>
+<li>vendor&#160;:&#160;<a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a></li>
+<li>version_major&#160;:&#160;<a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a></li>
+<li>version_minor&#160;:&#160;<a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>, <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a></li>
+<li>version_subminor&#160;:&#160;<a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>, <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>width
-: <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>
-, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a>
-</li>
+<h3><a id="index_w" name="index_w"></a>- w -</h3><ul>
+<li>width&#160;:&#160;<a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
-<li>y
-: <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a>
-</li>
-<li>y_height
-: <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a>
-</li>
-<li>y_stride
-: <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a>
-</li>
-<li>y_width
-: <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a>
-</li>
+<h3><a id="index_y" name="index_y"></a>- y -</h3><ul>
+<li>y&#160;:&#160;<a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a></li>
+<li>y_height&#160;:&#160;<a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a></li>
+<li>y_stride&#160;:&#160;<a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a></li>
+<li>y_width&#160;:&#160;<a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/functions_vars.html b/doc/libtheora-1.2/functions_vars.html
index 7a5fc6e..90a965b 100644
--- a/doc/libtheora-1.2/functions_vars.html
+++ b/doc/libtheora-1.2/functions_vars.html
@@ -1,353 +1,192 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: Data Fields - Variables</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_b"><span>b</span></a></li>
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_g"><span>g</span></a></li>
-      <li><a href="#index_h"><span>h</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_k"><span>k</span></a></li>
-      <li><a href="#index_l"><span>l</span></a></li>
-      <li><a href="#index_n"><span>n</span></a></li>
-      <li><a href="#index_o"><span>o</span></a></li>
-      <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_q"><span>q</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-      <li><a href="#index_u"><span>u</span></a></li>
-      <li><a href="#index_v"><span>v</span></a></li>
-      <li><a href="#index_w"><span>w</span></a></li>
-      <li><a href="#index_y"><span>y</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-&nbsp;
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>ac_scale
-: <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a>
-</li>
-<li>aspect_denominator
-: <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>
-, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a>
-</li>
-<li>aspect_numerator
-: <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>
-, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a>
-</li>
+&#160;
+
+<h3><a id="index_a" name="index_a"></a>- a -</h3><ul>
+<li>ac_scale&#160;:&#160;<a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a></li>
+<li>aspect_denominator&#160;:&#160;<a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a></li>
+<li>aspect_numerator&#160;:&#160;<a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
-<li>base_matrices
-: <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a>
-</li>
+<h3><a id="index_b" name="index_b"></a>- b -</h3><ul>
+<li>base_matrices&#160;:&#160;<a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>codec_setup
-: <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a>
-</li>
-<li>colorspace
-: <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>
-, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a>
-</li>
-<li>comment_lengths
-: <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>
-, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a>
-</li>
-<li>comments
-: <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>
-, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a>
-</li>
-<li>ctx
-: <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a>
-</li>
+<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
+<li>codec_setup&#160;:&#160;<a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a></li>
+<li>colorspace&#160;:&#160;<a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a></li>
+<li>comment_lengths&#160;:&#160;<a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a></li>
+<li>comments&#160;:&#160;<a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a></li>
+<li>ctx&#160;:&#160;<a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>data
-: <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a>
-</li>
-<li>dc_scale
-: <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a>
-</li>
-<li>dropframes_p
-: <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a>
-</li>
+<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
+<li>data&#160;:&#160;<a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a></li>
+<li>dc_scale&#160;:&#160;<a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a></li>
+<li>dropframes_p&#160;:&#160;<a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fps_denominator
-: <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>
-, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a>
-</li>
-<li>fps_numerator
-: <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a>
-, <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>
-</li>
-<li>frame_height
-: <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>
-, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a>
-</li>
-<li>frame_width
-: <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a>
-, <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>
-</li>
+<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
+<li>fps_denominator&#160;:&#160;<a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a></li>
+<li>fps_numerator&#160;:&#160;<a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>, <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a></li>
+<li>frame_height&#160;:&#160;<a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a></li>
+<li>frame_width&#160;:&#160;<a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>, <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>granulepos
-: <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a>
-</li>
+<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
+<li>granulepos&#160;:&#160;<a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>height
-: <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>
-, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a>
-</li>
+<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
+<li>height&#160;:&#160;<a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>i
-: <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a>
-</li>
-<li>internal_decode
-: <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a>
-</li>
-<li>internal_encode
-: <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a>
-</li>
+<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
+<li>i&#160;:&#160;<a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a></li>
+<li>internal_decode&#160;:&#160;<a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a></li>
+<li>internal_encode&#160;:&#160;<a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>keyframe_auto_p
-: <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a>
-</li>
-<li>keyframe_auto_threshold
-: <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a>
-</li>
-<li>keyframe_data_target_bitrate
-: <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a>
-</li>
-<li>keyframe_frequency
-: <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a>
-</li>
-<li>keyframe_frequency_force
-: <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a>
-</li>
-<li>keyframe_granule_shift
-: <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a>
-</li>
-<li>keyframe_mindistance
-: <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a>
-</li>
+<h3><a id="index_k" name="index_k"></a>- k -</h3><ul>
+<li>keyframe_auto_p&#160;:&#160;<a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a></li>
+<li>keyframe_auto_threshold&#160;:&#160;<a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a></li>
+<li>keyframe_data_target_bitrate&#160;:&#160;<a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a></li>
+<li>keyframe_frequency&#160;:&#160;<a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a></li>
+<li>keyframe_frequency_force&#160;:&#160;<a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a></li>
+<li>keyframe_granule_shift&#160;:&#160;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a></li>
+<li>keyframe_mindistance&#160;:&#160;<a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>loop_filter_limits
-: <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a>
-</li>
+<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
+<li>loop_filter_limits&#160;:&#160;<a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>nbits
-: <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a>
-</li>
-<li>noise_sensitivity
-: <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a>
-</li>
-<li>nranges
-: <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a>
-</li>
+<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
+<li>nbits&#160;:&#160;<a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a></li>
+<li>noise_sensitivity&#160;:&#160;<a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a></li>
+<li>nranges&#160;:&#160;<a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>offset_x
-: <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a>
-</li>
-<li>offset_y
-: <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a>
-</li>
+<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
+<li>offset_x&#160;:&#160;<a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a></li>
+<li>offset_y&#160;:&#160;<a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>pattern
-: <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a>
-</li>
-<li>pic_height
-: <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a>
-</li>
-<li>pic_width
-: <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a>
-</li>
-<li>pic_x
-: <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a>
-</li>
-<li>pic_y
-: <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a>
-</li>
-<li>pixel_fmt
-: <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a>
-</li>
-<li>pixelformat
-: <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a>
-</li>
+<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
+<li>pattern&#160;:&#160;<a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a></li>
+<li>pic_height&#160;:&#160;<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a></li>
+<li>pic_width&#160;:&#160;<a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a></li>
+<li>pic_x&#160;:&#160;<a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a></li>
+<li>pic_y&#160;:&#160;<a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a></li>
+<li>pixel_fmt&#160;:&#160;<a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a></li>
+<li>pixelformat&#160;:&#160;<a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
-<li>qi_ranges
-: <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a>
-</li>
-<li>quality
-: <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>
-, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a>
-</li>
-<li>quick_p
-: <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a>
-</li>
+<h3><a id="index_q" name="index_q"></a>- q -</h3><ul>
+<li>qi_ranges&#160;:&#160;<a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a></li>
+<li>quality&#160;:&#160;<a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a></li>
+<li>quick_p&#160;:&#160;<a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>sharpness
-: <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a>
-</li>
-<li>sizes
-: <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a>
-</li>
-<li>stride
-: <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a>
-</li>
-<li>stripe_decoded
-: <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a>
-</li>
+<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
+<li>sharpness&#160;:&#160;<a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a></li>
+<li>sizes&#160;:&#160;<a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a></li>
+<li>stride&#160;:&#160;<a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a></li>
+<li>stripe_decoded&#160;:&#160;<a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>target_bitrate
-: <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>
-, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a>
-</li>
+<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
+<li>target_bitrate&#160;:&#160;<a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
-<li>u
-: <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a>
-</li>
-<li>user_comments
-: <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>
-, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a>
-</li>
-<li>uv_height
-: <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a>
-</li>
-<li>uv_stride
-: <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a>
-</li>
-<li>uv_width
-: <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a>
-</li>
+<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
+<li>u&#160;:&#160;<a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a></li>
+<li>user_comments&#160;:&#160;<a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a></li>
+<li>uv_height&#160;:&#160;<a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a></li>
+<li>uv_stride&#160;:&#160;<a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a></li>
+<li>uv_width&#160;:&#160;<a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>v
-: <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a>
-</li>
-<li>vendor
-: <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>
-, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a>
-</li>
-<li>version_major
-: <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>
-, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a>
-</li>
-<li>version_minor
-: <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a>
-, <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>
-</li>
-<li>version_subminor
-: <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a>
-, <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>
-</li>
+<h3><a id="index_v" name="index_v"></a>- v -</h3><ul>
+<li>v&#160;:&#160;<a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a></li>
+<li>vendor&#160;:&#160;<a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a></li>
+<li>version_major&#160;:&#160;<a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a></li>
+<li>version_minor&#160;:&#160;<a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>, <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a></li>
+<li>version_subminor&#160;:&#160;<a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>, <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>width
-: <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>
-, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a>
-</li>
+<h3><a id="index_w" name="index_w"></a>- w -</h3><ul>
+<li>width&#160;:&#160;<a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
-<li>y
-: <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a>
-</li>
-<li>y_height
-: <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a>
-</li>
-<li>y_stride
-: <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a>
-</li>
-<li>y_width
-: <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a>
-</li>
+<h3><a id="index_y" name="index_y"></a>- y -</h3><ul>
+<li>y&#160;:&#160;<a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a></li>
+<li>y_height&#160;:&#160;<a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a></li>
+<li>y_stride&#160;:&#160;<a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a></li>
+<li>y_width&#160;:&#160;<a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/globals.html b/doc/libtheora-1.2/globals.html
index 10d3168..85c6d0d 100644
--- a/doc/libtheora-1.2/globals.html
+++ b/doc/libtheora-1.2/globals.html
@@ -1,473 +1,190 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Data Fields</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Globals</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_vars.html"><span>Variables</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index__"><span>_</span></a></li>
-      <li><a href="#index_o"><span>o</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
 
-<h3><a class="anchor" id="index__"></a>- _ -</h3><ul>
-<li>_O_THEORA_CODEC_H_
-: <a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">codec.h</a>
-</li>
-<li>_O_THEORA_THEORADEC_H_
-: <a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">theoradec.h</a>
-</li>
-<li>_O_THEORA_THEORAENC_H_
-: <a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">theoraenc.h</a>
-</li>
+<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
+<li>OC_BADHEADER&#160;:&#160;<a class="el" href="theora_8h.html#a809cbad2eb36be17a235a3cadfb737ba">theora.h</a></li>
+<li>OC_BADPACKET&#160;:&#160;<a class="el" href="theora_8h.html#a117774c062a63dfad2a5b4d092fa2bb1">theora.h</a></li>
+<li>OC_CS_ITU_REC_470BG&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a></li>
+<li>OC_CS_ITU_REC_470M&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a></li>
+<li>OC_CS_NSPACES&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a></li>
+<li>OC_CS_UNSPECIFIED&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a></li>
+<li>OC_DISABLED&#160;:&#160;<a class="el" href="theora_8h.html#a38b9fa0af856d5930c534db26e2ac2d1">theora.h</a></li>
+<li>OC_DUPFRAME&#160;:&#160;<a class="el" href="theora_8h.html#a84a8d2f5080ad62b415a4e7551941cbb">theora.h</a></li>
+<li>OC_EINVAL&#160;:&#160;<a class="el" href="theora_8h.html#a43d15091b1a03a734a124e9a04d3be55">theora.h</a></li>
+<li>OC_FAULT&#160;:&#160;<a class="el" href="theora_8h.html#aa4370e13ed3aea6441ccf69dcab2506e">theora.h</a></li>
+<li>OC_IMPL&#160;:&#160;<a class="el" href="theora_8h.html#a895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a></li>
+<li>OC_NEWPACKET&#160;:&#160;<a class="el" href="theora_8h.html#a60be4dc92c933eac3542bce3ce076496">theora.h</a></li>
+<li>OC_NOTFORMAT&#160;:&#160;<a class="el" href="theora_8h.html#a9558d6d9eacd2273c8da27f945d725ad">theora.h</a></li>
+<li>OC_PF_420&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a></li>
+<li>OC_PF_422&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a></li>
+<li>OC_PF_444&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a></li>
+<li>OC_PF_RSVD&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a></li>
+<li>OC_VERSION&#160;:&#160;<a class="el" href="theora_8h.html#a4611cfd61160405721d1e2ab0ec2564b">theora.h</a></li>
+<li>OGG_THEORA_CODEC_HEADER&#160;:&#160;<a class="el" href="codec_8h.html#aaff54665be7ea0fb741419663c775fe3">codec.h</a></li>
+<li>OGG_THEORA_THEORADEC_HEADER&#160;:&#160;<a class="el" href="theoradec_8h.html#a01a53a08096cec23bab65f2680595c72">theoradec.h</a></li>
+<li>OGG_THEORA_THEORAENC_HEADER&#160;:&#160;<a class="el" href="theoraenc_8h.html#ab43b2364621da8df29ee636107fef234">theoraenc.h</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>OC_BADHEADER
-: <a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">theora.h</a>
-</li>
-<li>OC_BADPACKET
-: <a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">theora.h</a>
-</li>
-<li>OC_CS_ITU_REC_470BG
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a>
-</li>
-<li>OC_CS_ITU_REC_470M
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a>
-</li>
-<li>OC_CS_NSPACES
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a>
-</li>
-<li>OC_CS_UNSPECIFIED
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a>
-</li>
-<li>OC_DISABLED
-: <a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">theora.h</a>
-</li>
-<li>OC_DUPFRAME
-: <a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">theora.h</a>
-</li>
-<li>OC_EINVAL
-: <a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">theora.h</a>
-</li>
-<li>OC_FAULT
-: <a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">theora.h</a>
-</li>
-<li>OC_IMPL
-: <a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a>
-</li>
-<li>OC_NEWPACKET
-: <a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">theora.h</a>
-</li>
-<li>OC_NOTFORMAT
-: <a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">theora.h</a>
-</li>
-<li>OC_PF_420
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a>
-</li>
-<li>OC_PF_422
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a>
-</li>
-<li>OC_PF_444
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a>
-</li>
-<li>OC_PF_RSVD
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a>
-</li>
-<li>OC_VERSION
-: <a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">theora.h</a>
-</li>
+<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
+<li>th_colorspace&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a></li>
+<li>th_comment&#160;:&#160;<a class="el" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">codec.h</a></li>
+<li>th_comment_add()&#160;:&#160;<a class="el" href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23">codec.h</a></li>
+<li>th_comment_add_tag()&#160;:&#160;<a class="el" href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151">codec.h</a></li>
+<li>th_comment_clear()&#160;:&#160;<a class="el" href="codec_8h.html#ae736c1afa514947a3feb223143af95e3">codec.h</a></li>
+<li>th_comment_init()&#160;:&#160;<a class="el" href="codec_8h.html#a6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a></li>
+<li>th_comment_query()&#160;:&#160;<a class="el" href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211">codec.h</a></li>
+<li>th_comment_query_count()&#160;:&#160;<a class="el" href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51">codec.h</a></li>
+<li>TH_CS_ITU_REC_470BG&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a></li>
+<li>TH_CS_ITU_REC_470M&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a></li>
+<li>TH_CS_NSPACES&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a></li>
+<li>TH_CS_UNSPECIFIED&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a></li>
+<li>th_dec_ctx&#160;:&#160;<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a></li>
+<li>TH_DECCTL_GET_PPLEVEL_MAX&#160;:&#160;<a class="el" href="theora_8h.html#ab31f251c9319f2140d247585d30b3d07">theora.h</a>, <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a></li>
+<li>TH_DECCTL_SET_GRANPOS&#160;:&#160;<a class="el" href="theora_8h.html#a1e870c654d35394f0d490045df04e0f5">theora.h</a>, <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a></li>
+<li>TH_DECCTL_SET_PPLEVEL&#160;:&#160;<a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a>, <a class="el" href="theora_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theora.h</a></li>
+<li>TH_DECCTL_SET_STRIPE_CB&#160;:&#160;<a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_BITS&#160;:&#160;<a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_MBMODE&#160;:&#160;<a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_MV&#160;:&#160;<a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_QI&#160;:&#160;<a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a></li>
+<li>th_decode_alloc()&#160;:&#160;<a class="el" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898">theoradec.h</a></li>
+<li>th_decode_ctl()&#160;:&#160;<a class="el" href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a></li>
+<li>th_decode_free()&#160;:&#160;<a class="el" href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a></li>
+<li>th_decode_headerin()&#160;:&#160;<a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a></li>
+<li>th_decode_packetin()&#160;:&#160;<a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a></li>
+<li>th_decode_ycbcr_out()&#160;:&#160;<a class="el" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a></li>
+<li>TH_DUPFRAME&#160;:&#160;<a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a></li>
+<li>TH_EBADHEADER&#160;:&#160;<a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a></li>
+<li>TH_EBADPACKET&#160;:&#160;<a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a></li>
+<li>TH_EFAULT&#160;:&#160;<a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a></li>
+<li>TH_EIMPL&#160;:&#160;<a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a></li>
+<li>TH_EINVAL&#160;:&#160;<a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a></li>
+<li>th_enc_ctx&#160;:&#160;<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a></li>
+<li>TH_ENCCTL_2PASS_IN&#160;:&#160;<a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a></li>
+<li>TH_ENCCTL_2PASS_OUT&#160;:&#160;<a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a></li>
+<li>TH_ENCCTL_GET_SPLEVEL&#160;:&#160;<a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a></li>
+<li>TH_ENCCTL_GET_SPLEVEL_MAX&#160;:&#160;<a class="el" href="theora_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theora.h</a>, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_BITRATE&#160;:&#160;<a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_COMPAT_CONFIG&#160;:&#160;<a class="el" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_DUP_COUNT&#160;:&#160;<a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_HUFFMAN_CODES&#160;:&#160;<a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&#160;:&#160;<a class="el" href="theora_8h.html#a27e755e15b4b5604c54974b304037a49">theora.h</a>, <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_QUALITY&#160;:&#160;<a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_QUANT_PARAMS&#160;:&#160;<a class="el" href="theora_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>, <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_RATE_BUFFER&#160;:&#160;<a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_RATE_FLAGS&#160;:&#160;<a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_SPLEVEL&#160;:&#160;<a class="el" href="theora_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_VP3_COMPATIBLE&#160;:&#160;<a class="el" href="theora_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theora.h</a>, <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a></li>
+<li>th_encode_alloc()&#160;:&#160;<a class="el" href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00">theoraenc.h</a></li>
+<li>th_encode_ctl()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a></li>
+<li>th_encode_flushheader()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408">theoraenc.h</a></li>
+<li>th_encode_free()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a36b23d216532231925c4107894204680">theoraenc.h</a></li>
+<li>th_encode_packetout()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a></li>
+<li>th_encode_ycbcr_in()&#160;:&#160;<a class="el" href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a></li>
+<li>TH_ENOTFORMAT&#160;:&#160;<a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a></li>
+<li>TH_EVERSION&#160;:&#160;<a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a></li>
+<li>th_granule_frame()&#160;:&#160;<a class="el" href="codec_8h.html#a95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a></li>
+<li>th_granule_time()&#160;:&#160;<a class="el" href="codec_8h.html#a707e1e281de788af0df39ef00f3fb432">codec.h</a></li>
+<li>th_info_clear()&#160;:&#160;<a class="el" href="codec_8h.html#ab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a></li>
+<li>th_info_init()&#160;:&#160;<a class="el" href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926">codec.h</a></li>
+<li>TH_NDCT_TOKENS&#160;:&#160;<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a></li>
+<li>TH_NHUFFMAN_TABLES&#160;:&#160;<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a></li>
+<li>th_packet_isheader()&#160;:&#160;<a class="el" href="codec_8h.html#a02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a></li>
+<li>th_packet_iskeyframe()&#160;:&#160;<a class="el" href="codec_8h.html#afe95cfd06f0fef413266c9168a66248a">codec.h</a></li>
+<li>TH_PF_420&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a></li>
+<li>TH_PF_422&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a></li>
+<li>TH_PF_444&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a></li>
+<li>TH_PF_NFORMATS&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a></li>
+<li>TH_PF_RSVD&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a></li>
+<li>th_pixel_fmt&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a></li>
+<li>th_quant_base&#160;:&#160;<a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a></li>
+<li>TH_RATECTL_CAP_OVERFLOW&#160;:&#160;<a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a></li>
+<li>TH_RATECTL_CAP_UNDERFLOW&#160;:&#160;<a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a></li>
+<li>TH_RATECTL_DROP_FRAMES&#160;:&#160;<a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a></li>
+<li>th_setup_free()&#160;:&#160;<a class="el" href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a></li>
+<li>th_setup_info&#160;:&#160;<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a></li>
+<li>th_stripe_decoded_func&#160;:&#160;<a class="el" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">theoradec.h</a></li>
+<li>th_version_number()&#160;:&#160;<a class="el" href="codec_8h.html#ab723a75c0f95b3eb817f7f769846016b">codec.h</a></li>
+<li>th_version_string()&#160;:&#160;<a class="el" href="codec_8h.html#a57a0637587e6f78a718d03c927f2c9fd">codec.h</a></li>
+<li>TH_VP31_HUFF_CODES&#160;:&#160;<a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a></li>
+<li>TH_VP31_QUANT_INFO&#160;:&#160;<a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a></li>
+<li>th_ycbcr_buffer&#160;:&#160;<a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a></li>
+<li>theora_clear()&#160;:&#160;<a class="el" href="theora_8h.html#ab252d5d81b925136dda72e8f1c09c5eb">theora.h</a></li>
+<li>theora_colorspace&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora.h</a></li>
+<li>theora_comment&#160;:&#160;<a class="el" href="theora_8h.html#acaae73fc38efbc2ef0b0fb61dbbda3fc">theora.h</a></li>
+<li>theora_comment_add()&#160;:&#160;<a class="el" href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4">theora.h</a></li>
+<li>theora_comment_add_tag()&#160;:&#160;<a class="el" href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a></li>
+<li>theora_comment_clear()&#160;:&#160;<a class="el" href="theora_8h.html#a04c07c2eefba3a433e43f9fbde14719f">theora.h</a></li>
+<li>theora_comment_init()&#160;:&#160;<a class="el" href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0">theora.h</a></li>
+<li>theora_comment_query()&#160;:&#160;<a class="el" href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd">theora.h</a></li>
+<li>theora_comment_query_count()&#160;:&#160;<a class="el" href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b">theora.h</a></li>
+<li>theora_control()&#160;:&#160;<a class="el" href="theora_8h.html#a186773db3bc8cd550047e7df1b2ba2c9">theora.h</a></li>
+<li>theora_decode_header()&#160;:&#160;<a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82">theora.h</a></li>
+<li>theora_decode_init()&#160;:&#160;<a class="el" href="theora_8h.html#a264907c66003799ff77ecbd09eb33d2c">theora.h</a></li>
+<li>theora_decode_packetin()&#160;:&#160;<a class="el" href="theora_8h.html#aa65a9e53b46fd54ab344bd599fa96975">theora.h</a></li>
+<li>theora_decode_YUVout()&#160;:&#160;<a class="el" href="theora_8h.html#a09d47c80e1e94bff0a46a496816b8daa">theora.h</a></li>
+<li>theora_encode_comment()&#160;:&#160;<a class="el" href="theora_8h.html#a45e8db0713eaaca0f1144f3724cb834a">theora.h</a></li>
+<li>theora_encode_header()&#160;:&#160;<a class="el" href="theora_8h.html#a451feb58d6bde726edbae193689887be">theora.h</a></li>
+<li>theora_encode_init()&#160;:&#160;<a class="el" href="theora_8h.html#a0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a></li>
+<li>theora_encode_packetout()&#160;:&#160;<a class="el" href="theora_8h.html#a5f4929677a735bc2198c2309d235f1b3">theora.h</a></li>
+<li>theora_encode_tables()&#160;:&#160;<a class="el" href="theora_8h.html#a5085baf20855b283fa01fc948505d9d2">theora.h</a></li>
+<li>theora_encode_YUVin()&#160;:&#160;<a class="el" href="theora_8h.html#ac0d33d896ca70cedfc94c5986d947078">theora.h</a></li>
+<li>theora_granule_frame()&#160;:&#160;<a class="el" href="theora_8h.html#a7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a></li>
+<li>theora_granule_shift()&#160;:&#160;<a class="el" href="theora_8h.html#acd9360e6a47139c761002410af457a02">theora.h</a></li>
+<li>theora_granule_time()&#160;:&#160;<a class="el" href="theora_8h.html#a4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a></li>
+<li>theora_info_clear()&#160;:&#160;<a class="el" href="theora_8h.html#aba7022d58edbc4825cacad03f68b3e0d">theora.h</a></li>
+<li>theora_info_init()&#160;:&#160;<a class="el" href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90">theora.h</a></li>
+<li>theora_packet_isheader()&#160;:&#160;<a class="el" href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b">theora.h</a></li>
+<li>theora_packet_iskeyframe()&#160;:&#160;<a class="el" href="theora_8h.html#a39ccc8f847a748d7074c926b4fdd12b2">theora.h</a></li>
+<li>theora_pixelformat&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora.h</a></li>
+<li>theora_version_number()&#160;:&#160;<a class="el" href="theora_8h.html#ad181f4b19d455dcc2bef2533530b84c8">theora.h</a></li>
+<li>theora_version_string()&#160;:&#160;<a class="el" href="theora_8h.html#ac52e77d5dab481f2181c8162549c0cb9">theora.h</a></li>
 </ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>th_colorspace
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a>
-</li>
-<li>th_comment
-: <a class="el" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">codec.h</a>
-</li>
-<li>th_comment_add()
-: <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">codec.h</a>
-</li>
-<li>th_comment_add_tag()
-: <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">codec.h</a>
-</li>
-<li>th_comment_clear()
-: <a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">codec.h</a>
-</li>
-<li>th_comment_init()
-: <a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a>
-</li>
-<li>th_comment_query()
-: <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">codec.h</a>
-</li>
-<li>th_comment_query_count()
-: <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">codec.h</a>
-</li>
-<li>TH_CS_ITU_REC_470BG
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a>
-</li>
-<li>TH_CS_ITU_REC_470M
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a>
-</li>
-<li>TH_CS_NSPACES
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a>
-</li>
-<li>TH_CS_UNSPECIFIED
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a>
-</li>
-<li>th_dec_ctx
-: <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a>
-</li>
-<li>TH_DECCTL_GET_PPLEVEL_MAX
-: <a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">theora.h</a>
-, <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_GRANPOS
-: <a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">theora.h</a>
-, <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_PPLEVEL
-: <a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">theora.h</a>
-, <a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_STRIPE_CB
-: <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_BITS
-: <a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_MBMODE
-: <a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_MV
-: <a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_QI
-: <a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a>
-</li>
-<li>th_decode_alloc()
-: <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">theoradec.h</a>
-</li>
-<li>th_decode_ctl()
-: <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a>
-</li>
-<li>th_decode_free()
-: <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a>
-</li>
-<li>th_decode_headerin()
-: <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a>
-</li>
-<li>th_decode_packetin()
-: <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a>
-</li>
-<li>th_decode_ycbcr_out()
-: <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a>
-</li>
-<li>TH_DUPFRAME
-: <a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a>
-</li>
-<li>TH_EBADHEADER
-: <a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a>
-</li>
-<li>TH_EBADPACKET
-: <a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a>
-</li>
-<li>TH_EFAULT
-: <a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a>
-</li>
-<li>TH_EIMPL
-: <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a>
-</li>
-<li>TH_EINVAL
-: <a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a>
-</li>
-<li>th_enc_ctx
-: <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_2PASS_IN
-: <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_2PASS_OUT
-: <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_GET_SPLEVEL
-: <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_GET_SPLEVEL_MAX
-: <a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_BITRATE
-: <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_COMPAT_CONFIG
-: <a class="el" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_DUP_COUNT
-: <a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_HUFFMAN_CODES
-: <a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE
-: <a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_QUALITY
-: <a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_QUANT_PARAMS
-: <a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_RATE_BUFFER
-: <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_RATE_FLAGS
-: <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_SPLEVEL
-: <a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_VP3_COMPATIBLE
-: <a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a>
-</li>
-<li>th_encode_alloc()
-: <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">theoraenc.h</a>
-</li>
-<li>th_encode_ctl()
-: <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a>
-</li>
-<li>th_encode_flushheader()
-: <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">theoraenc.h</a>
-</li>
-<li>th_encode_free()
-: <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">theoraenc.h</a>
-</li>
-<li>th_encode_packetout()
-: <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a>
-</li>
-<li>th_encode_ycbcr_in()
-: <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a>
-</li>
-<li>TH_ENOTFORMAT
-: <a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a>
-</li>
-<li>TH_EVERSION
-: <a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a>
-</li>
-<li>th_granule_frame()
-: <a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a>
-</li>
-<li>th_granule_time()
-: <a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">codec.h</a>
-</li>
-<li>th_info_clear()
-: <a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a>
-</li>
-<li>th_info_init()
-: <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">codec.h</a>
-</li>
-<li>TH_NDCT_TOKENS
-: <a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a>
-</li>
-<li>TH_NHUFFMAN_TABLES
-: <a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a>
-</li>
-<li>th_packet_isheader()
-: <a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a>
-</li>
-<li>th_packet_iskeyframe()
-: <a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">codec.h</a>
-</li>
-<li>TH_PF_420
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a>
-</li>
-<li>TH_PF_422
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a>
-</li>
-<li>TH_PF_444
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a>
-</li>
-<li>TH_PF_NFORMATS
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a>
-</li>
-<li>TH_PF_RSVD
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a>
-</li>
-<li>th_pixel_fmt
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a>
-</li>
-<li>th_quant_base
-: <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a>
-</li>
-<li>TH_RATECTL_CAP_OVERFLOW
-: <a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a>
-</li>
-<li>TH_RATECTL_CAP_UNDERFLOW
-: <a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a>
-</li>
-<li>TH_RATECTL_DROP_FRAMES
-: <a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a>
-</li>
-<li>th_setup_free()
-: <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a>
-</li>
-<li>th_setup_info
-: <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a>
-</li>
-<li>th_stripe_decoded_func
-: <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">theoradec.h</a>
-</li>
-<li>th_version_number()
-: <a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">codec.h</a>
-</li>
-<li>th_version_string()
-: <a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">codec.h</a>
-</li>
-<li>TH_VP31_HUFF_CODES
-: <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a>
-</li>
-<li>TH_VP31_QUANT_INFO
-: <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a>
-</li>
-<li>th_ycbcr_buffer
-: <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a>
-</li>
-<li>theora_clear()
-: <a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora.h</a>
-</li>
-<li>theora_colorspace
-: <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora.h</a>
-</li>
-<li>theora_comment
-: <a class="el" href="group__oldfuncs.html#gaa504e8a56a4bf9c8e44f77d05aef0bb5">theora.h</a>
-</li>
-<li>theora_comment_add()
-: <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora.h</a>
-</li>
-<li>theora_comment_add_tag()
-: <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a>
-</li>
-<li>theora_comment_clear()
-: <a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora.h</a>
-</li>
-<li>theora_comment_init()
-: <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora.h</a>
-</li>
-<li>theora_comment_query()
-: <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora.h</a>
-</li>
-<li>theora_comment_query_count()
-: <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora.h</a>
-</li>
-<li>theora_control()
-: <a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora.h</a>
-</li>
-<li>theora_decode_header()
-: <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora.h</a>
-</li>
-<li>theora_decode_init()
-: <a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora.h</a>
-</li>
-<li>theora_decode_packetin()
-: <a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora.h</a>
-</li>
-<li>theora_decode_YUVout()
-: <a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora.h</a>
-</li>
-<li>theora_encode_comment()
-: <a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora.h</a>
-</li>
-<li>theora_encode_header()
-: <a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora.h</a>
-</li>
-<li>theora_encode_init()
-: <a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a>
-</li>
-<li>theora_encode_packetout()
-: <a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora.h</a>
-</li>
-<li>theora_encode_tables()
-: <a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora.h</a>
-</li>
-<li>theora_encode_YUVin()
-: <a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora.h</a>
-</li>
-<li>theora_granule_frame()
-: <a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a>
-</li>
-<li>theora_granule_shift()
-: <a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora.h</a>
-</li>
-<li>theora_granule_time()
-: <a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a>
-</li>
-<li>theora_info_clear()
-: <a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora.h</a>
-</li>
-<li>theora_info_init()
-: <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora.h</a>
-</li>
-<li>theora_packet_isheader()
-: <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora.h</a>
-</li>
-<li>theora_packet_iskeyframe()
-: <a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora.h</a>
-</li>
-<li>theora_pixelformat
-: <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora.h</a>
-</li>
-<li>theora_version_number()
-: <a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora.h</a>
-</li>
-<li>theora_version_string()
-: <a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora.h</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/globals_defs.html b/doc/libtheora-1.2/globals_defs.html
index 8d84f3d..18d6e98 100644
--- a/doc/libtheora-1.2/globals_defs.html
+++ b/doc/libtheora-1.2/globals_defs.html
@@ -1,218 +1,105 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Data Fields</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Globals</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_vars.html"><span>Variables</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index__"><span>_</span></a></li>
-      <li><a href="#index_o"><span>o</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-&nbsp;
+&#160;
 
-<h3><a class="anchor" id="index__"></a>- _ -</h3><ul>
-<li>_O_THEORA_CODEC_H_
-: <a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">codec.h</a>
-</li>
-<li>_O_THEORA_THEORADEC_H_
-: <a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">theoradec.h</a>
-</li>
-<li>_O_THEORA_THEORAENC_H_
-: <a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">theoraenc.h</a>
-</li>
+<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
+<li>OC_BADHEADER&#160;:&#160;<a class="el" href="theora_8h.html#a809cbad2eb36be17a235a3cadfb737ba">theora.h</a></li>
+<li>OC_BADPACKET&#160;:&#160;<a class="el" href="theora_8h.html#a117774c062a63dfad2a5b4d092fa2bb1">theora.h</a></li>
+<li>OC_DISABLED&#160;:&#160;<a class="el" href="theora_8h.html#a38b9fa0af856d5930c534db26e2ac2d1">theora.h</a></li>
+<li>OC_DUPFRAME&#160;:&#160;<a class="el" href="theora_8h.html#a84a8d2f5080ad62b415a4e7551941cbb">theora.h</a></li>
+<li>OC_EINVAL&#160;:&#160;<a class="el" href="theora_8h.html#a43d15091b1a03a734a124e9a04d3be55">theora.h</a></li>
+<li>OC_FAULT&#160;:&#160;<a class="el" href="theora_8h.html#aa4370e13ed3aea6441ccf69dcab2506e">theora.h</a></li>
+<li>OC_IMPL&#160;:&#160;<a class="el" href="theora_8h.html#a895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a></li>
+<li>OC_NEWPACKET&#160;:&#160;<a class="el" href="theora_8h.html#a60be4dc92c933eac3542bce3ce076496">theora.h</a></li>
+<li>OC_NOTFORMAT&#160;:&#160;<a class="el" href="theora_8h.html#a9558d6d9eacd2273c8da27f945d725ad">theora.h</a></li>
+<li>OC_VERSION&#160;:&#160;<a class="el" href="theora_8h.html#a4611cfd61160405721d1e2ab0ec2564b">theora.h</a></li>
+<li>OGG_THEORA_CODEC_HEADER&#160;:&#160;<a class="el" href="codec_8h.html#aaff54665be7ea0fb741419663c775fe3">codec.h</a></li>
+<li>OGG_THEORA_THEORADEC_HEADER&#160;:&#160;<a class="el" href="theoradec_8h.html#a01a53a08096cec23bab65f2680595c72">theoradec.h</a></li>
+<li>OGG_THEORA_THEORAENC_HEADER&#160;:&#160;<a class="el" href="theoraenc_8h.html#ab43b2364621da8df29ee636107fef234">theoraenc.h</a></li>
 </ul>
 
 
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>OC_BADHEADER
-: <a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">theora.h</a>
-</li>
-<li>OC_BADPACKET
-: <a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">theora.h</a>
-</li>
-<li>OC_DISABLED
-: <a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">theora.h</a>
-</li>
-<li>OC_DUPFRAME
-: <a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">theora.h</a>
-</li>
-<li>OC_EINVAL
-: <a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">theora.h</a>
-</li>
-<li>OC_FAULT
-: <a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">theora.h</a>
-</li>
-<li>OC_IMPL
-: <a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a>
-</li>
-<li>OC_NEWPACKET
-: <a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">theora.h</a>
-</li>
-<li>OC_NOTFORMAT
-: <a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">theora.h</a>
-</li>
-<li>OC_VERSION
-: <a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">theora.h</a>
-</li>
+<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
+<li>TH_DECCTL_GET_PPLEVEL_MAX&#160;:&#160;<a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a>, <a class="el" href="theora_8h.html#ab31f251c9319f2140d247585d30b3d07">theora.h</a></li>
+<li>TH_DECCTL_SET_GRANPOS&#160;:&#160;<a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a>, <a class="el" href="theora_8h.html#a1e870c654d35394f0d490045df04e0f5">theora.h</a></li>
+<li>TH_DECCTL_SET_PPLEVEL&#160;:&#160;<a class="el" href="theora_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theora.h</a>, <a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a></li>
+<li>TH_DECCTL_SET_STRIPE_CB&#160;:&#160;<a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_BITS&#160;:&#160;<a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_MBMODE&#160;:&#160;<a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_MV&#160;:&#160;<a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a></li>
+<li>TH_DECCTL_SET_TELEMETRY_QI&#160;:&#160;<a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a></li>
+<li>TH_DUPFRAME&#160;:&#160;<a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a></li>
+<li>TH_EBADHEADER&#160;:&#160;<a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a></li>
+<li>TH_EBADPACKET&#160;:&#160;<a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a></li>
+<li>TH_EFAULT&#160;:&#160;<a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a></li>
+<li>TH_EIMPL&#160;:&#160;<a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a></li>
+<li>TH_EINVAL&#160;:&#160;<a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a></li>
+<li>TH_ENCCTL_2PASS_IN&#160;:&#160;<a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a></li>
+<li>TH_ENCCTL_2PASS_OUT&#160;:&#160;<a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a></li>
+<li>TH_ENCCTL_GET_SPLEVEL&#160;:&#160;<a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a></li>
+<li>TH_ENCCTL_GET_SPLEVEL_MAX&#160;:&#160;<a class="el" href="theora_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theora.h</a>, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_BITRATE&#160;:&#160;<a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_COMPAT_CONFIG&#160;:&#160;<a class="el" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_DUP_COUNT&#160;:&#160;<a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_HUFFMAN_CODES&#160;:&#160;<a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&#160;:&#160;<a class="el" href="theora_8h.html#a27e755e15b4b5604c54974b304037a49">theora.h</a>, <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_QUALITY&#160;:&#160;<a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_QUANT_PARAMS&#160;:&#160;<a class="el" href="theora_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>, <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_RATE_BUFFER&#160;:&#160;<a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_RATE_FLAGS&#160;:&#160;<a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_SPLEVEL&#160;:&#160;<a class="el" href="theora_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a></li>
+<li>TH_ENCCTL_SET_VP3_COMPATIBLE&#160;:&#160;<a class="el" href="theora_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theora.h</a>, <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a></li>
+<li>TH_ENOTFORMAT&#160;:&#160;<a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a></li>
+<li>TH_EVERSION&#160;:&#160;<a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a></li>
+<li>TH_NDCT_TOKENS&#160;:&#160;<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a></li>
+<li>TH_NHUFFMAN_TABLES&#160;:&#160;<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a></li>
+<li>TH_RATECTL_CAP_OVERFLOW&#160;:&#160;<a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a></li>
+<li>TH_RATECTL_CAP_UNDERFLOW&#160;:&#160;<a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a></li>
+<li>TH_RATECTL_DROP_FRAMES&#160;:&#160;<a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a></li>
 </ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>TH_DECCTL_GET_PPLEVEL_MAX
-: <a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">theora.h</a>
-, <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_GRANPOS
-: <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a>
-, <a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">theora.h</a>
-</li>
-<li>TH_DECCTL_SET_PPLEVEL
-: <a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">theora.h</a>
-, <a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_STRIPE_CB
-: <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_BITS
-: <a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_MBMODE
-: <a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_MV
-: <a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a>
-</li>
-<li>TH_DECCTL_SET_TELEMETRY_QI
-: <a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a>
-</li>
-<li>TH_DUPFRAME
-: <a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a>
-</li>
-<li>TH_EBADHEADER
-: <a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a>
-</li>
-<li>TH_EBADPACKET
-: <a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a>
-</li>
-<li>TH_EFAULT
-: <a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a>
-</li>
-<li>TH_EIMPL
-: <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a>
-</li>
-<li>TH_EINVAL
-: <a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a>
-</li>
-<li>TH_ENCCTL_2PASS_IN
-: <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_2PASS_OUT
-: <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_GET_SPLEVEL
-: <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_GET_SPLEVEL_MAX
-: <a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_BITRATE
-: <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_COMPAT_CONFIG
-: <a class="el" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_DUP_COUNT
-: <a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_HUFFMAN_CODES
-: <a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE
-: <a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_QUALITY
-: <a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_QUANT_PARAMS
-: <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a>
-, <a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>
-</li>
-<li>TH_ENCCTL_SET_RATE_BUFFER
-: <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_RATE_FLAGS
-: <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_SPLEVEL
-: <a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>
-, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a>
-</li>
-<li>TH_ENCCTL_SET_VP3_COMPATIBLE
-: <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a>
-, <a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">theora.h</a>
-</li>
-<li>TH_ENOTFORMAT
-: <a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a>
-</li>
-<li>TH_EVERSION
-: <a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a>
-</li>
-<li>TH_NDCT_TOKENS
-: <a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a>
-</li>
-<li>TH_NHUFFMAN_TABLES
-: <a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a>
-</li>
-<li>TH_RATECTL_CAP_OVERFLOW
-: <a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a>
-</li>
-<li>TH_RATECTL_CAP_UNDERFLOW
-: <a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a>
-</li>
-<li>TH_RATECTL_DROP_FRAMES
-: <a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/globals_enum.html b/doc/libtheora-1.2/globals_enum.html
index f031ddc..29eece2 100644
--- a/doc/libtheora-1.2/globals_enum.html
+++ b/doc/libtheora-1.2/globals_enum.html
@@ -1,58 +1,54 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Data Fields</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Globals</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_vars.html"><span>Variables</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-&nbsp;<ul>
-<li>th_colorspace
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a>
-</li>
-<li>th_pixel_fmt
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a>
-</li>
-<li>theora_colorspace
-: <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora.h</a>
-</li>
-<li>theora_pixelformat
-: <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora.h</a>
-</li>
+&#160;<ul>
+<li>th_colorspace&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a></li>
+<li>th_pixel_fmt&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a></li>
+<li>theora_colorspace&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora.h</a></li>
+<li>theora_pixelformat&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/globals_eval.html b/doc/libtheora-1.2/globals_eval.html
index 336df20..ba336c1 100644
--- a/doc/libtheora-1.2/globals_eval.html
+++ b/doc/libtheora-1.2/globals_eval.html
@@ -1,97 +1,67 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Data Fields</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Globals</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_vars.html"><span>Variables</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-&nbsp;<ul>
-<li>OC_CS_ITU_REC_470BG
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a>
-</li>
-<li>OC_CS_ITU_REC_470M
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a>
-</li>
-<li>OC_CS_NSPACES
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a>
-</li>
-<li>OC_CS_UNSPECIFIED
-: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a>
-</li>
-<li>OC_PF_420
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a>
-</li>
-<li>OC_PF_422
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a>
-</li>
-<li>OC_PF_444
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a>
-</li>
-<li>OC_PF_RSVD
-: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a>
-</li>
-<li>TH_CS_ITU_REC_470BG
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a>
-</li>
-<li>TH_CS_ITU_REC_470M
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a>
-</li>
-<li>TH_CS_NSPACES
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a>
-</li>
-<li>TH_CS_UNSPECIFIED
-: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a>
-</li>
-<li>TH_PF_420
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a>
-</li>
-<li>TH_PF_422
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a>
-</li>
-<li>TH_PF_444
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a>
-</li>
-<li>TH_PF_NFORMATS
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a>
-</li>
-<li>TH_PF_RSVD
-: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a>
-</li>
+&#160;<ul>
+<li>OC_CS_ITU_REC_470BG&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a></li>
+<li>OC_CS_ITU_REC_470M&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a></li>
+<li>OC_CS_NSPACES&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a></li>
+<li>OC_CS_UNSPECIFIED&#160;:&#160;<a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a></li>
+<li>OC_PF_420&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a></li>
+<li>OC_PF_422&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a></li>
+<li>OC_PF_444&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a></li>
+<li>OC_PF_RSVD&#160;:&#160;<a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a></li>
+<li>TH_CS_ITU_REC_470BG&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a></li>
+<li>TH_CS_ITU_REC_470M&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a></li>
+<li>TH_CS_NSPACES&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a></li>
+<li>TH_CS_UNSPECIFIED&#160;:&#160;<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a></li>
+<li>TH_PF_420&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a></li>
+<li>TH_PF_422&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a></li>
+<li>TH_PF_444&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a></li>
+<li>TH_PF_NFORMATS&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a></li>
+<li>TH_PF_RSVD&#160;:&#160;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/globals_func.html b/doc/libtheora-1.2/globals_func.html
index 2647bc6..145c2f7 100644
--- a/doc/libtheora-1.2/globals_func.html
+++ b/doc/libtheora-1.2/globals_func.html
@@ -1,215 +1,106 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Data Fields</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Globals</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_vars.html"><span>Variables</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_t"><span>t</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-&nbsp;
+&#160;
 
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>th_comment_add()
-: <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">codec.h</a>
-</li>
-<li>th_comment_add_tag()
-: <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">codec.h</a>
-</li>
-<li>th_comment_clear()
-: <a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">codec.h</a>
-</li>
-<li>th_comment_init()
-: <a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a>
-</li>
-<li>th_comment_query()
-: <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">codec.h</a>
-</li>
-<li>th_comment_query_count()
-: <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">codec.h</a>
-</li>
-<li>th_decode_alloc()
-: <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">theoradec.h</a>
-</li>
-<li>th_decode_ctl()
-: <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a>
-</li>
-<li>th_decode_free()
-: <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a>
-</li>
-<li>th_decode_headerin()
-: <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a>
-</li>
-<li>th_decode_packetin()
-: <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a>
-</li>
-<li>th_decode_ycbcr_out()
-: <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a>
-</li>
-<li>th_encode_alloc()
-: <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">theoraenc.h</a>
-</li>
-<li>th_encode_ctl()
-: <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a>
-</li>
-<li>th_encode_flushheader()
-: <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">theoraenc.h</a>
-</li>
-<li>th_encode_free()
-: <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">theoraenc.h</a>
-</li>
-<li>th_encode_packetout()
-: <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a>
-</li>
-<li>th_encode_ycbcr_in()
-: <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a>
-</li>
-<li>th_granule_frame()
-: <a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a>
-</li>
-<li>th_granule_time()
-: <a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">codec.h</a>
-</li>
-<li>th_info_clear()
-: <a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a>
-</li>
-<li>th_info_init()
-: <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">codec.h</a>
-</li>
-<li>th_packet_isheader()
-: <a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a>
-</li>
-<li>th_packet_iskeyframe()
-: <a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">codec.h</a>
-</li>
-<li>th_setup_free()
-: <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a>
-</li>
-<li>th_version_number()
-: <a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">codec.h</a>
-</li>
-<li>th_version_string()
-: <a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">codec.h</a>
-</li>
-<li>theora_clear()
-: <a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora.h</a>
-</li>
-<li>theora_comment_add()
-: <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora.h</a>
-</li>
-<li>theora_comment_add_tag()
-: <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a>
-</li>
-<li>theora_comment_clear()
-: <a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora.h</a>
-</li>
-<li>theora_comment_init()
-: <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora.h</a>
-</li>
-<li>theora_comment_query()
-: <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora.h</a>
-</li>
-<li>theora_comment_query_count()
-: <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora.h</a>
-</li>
-<li>theora_control()
-: <a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora.h</a>
-</li>
-<li>theora_decode_header()
-: <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora.h</a>
-</li>
-<li>theora_decode_init()
-: <a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora.h</a>
-</li>
-<li>theora_decode_packetin()
-: <a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora.h</a>
-</li>
-<li>theora_decode_YUVout()
-: <a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora.h</a>
-</li>
-<li>theora_encode_comment()
-: <a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora.h</a>
-</li>
-<li>theora_encode_header()
-: <a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora.h</a>
-</li>
-<li>theora_encode_init()
-: <a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a>
-</li>
-<li>theora_encode_packetout()
-: <a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora.h</a>
-</li>
-<li>theora_encode_tables()
-: <a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora.h</a>
-</li>
-<li>theora_encode_YUVin()
-: <a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora.h</a>
-</li>
-<li>theora_granule_frame()
-: <a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a>
-</li>
-<li>theora_granule_shift()
-: <a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora.h</a>
-</li>
-<li>theora_granule_time()
-: <a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a>
-</li>
-<li>theora_info_clear()
-: <a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora.h</a>
-</li>
-<li>theora_info_init()
-: <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora.h</a>
-</li>
-<li>theora_packet_isheader()
-: <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora.h</a>
-</li>
-<li>theora_packet_iskeyframe()
-: <a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora.h</a>
-</li>
-<li>theora_version_number()
-: <a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora.h</a>
-</li>
-<li>theora_version_string()
-: <a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora.h</a>
-</li>
+<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
+<li>th_comment_add()&#160;:&#160;<a class="el" href="codec_8h.html#a6be106c7e209680199a98d6d537d7e23">codec.h</a></li>
+<li>th_comment_add_tag()&#160;:&#160;<a class="el" href="codec_8h.html#acdfd88bde77364dd8342c55daa9ff151">codec.h</a></li>
+<li>th_comment_clear()&#160;:&#160;<a class="el" href="codec_8h.html#ae736c1afa514947a3feb223143af95e3">codec.h</a></li>
+<li>th_comment_init()&#160;:&#160;<a class="el" href="codec_8h.html#a6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a></li>
+<li>th_comment_query()&#160;:&#160;<a class="el" href="codec_8h.html#aa68e50bc76d5f94dd83260b15ca7d211">codec.h</a></li>
+<li>th_comment_query_count()&#160;:&#160;<a class="el" href="codec_8h.html#ab1b5b1a478c1e404b22b823dc95a1f51">codec.h</a></li>
+<li>th_decode_alloc()&#160;:&#160;<a class="el" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898">theoradec.h</a></li>
+<li>th_decode_ctl()&#160;:&#160;<a class="el" href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a></li>
+<li>th_decode_free()&#160;:&#160;<a class="el" href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a></li>
+<li>th_decode_headerin()&#160;:&#160;<a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a></li>
+<li>th_decode_packetin()&#160;:&#160;<a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a></li>
+<li>th_decode_ycbcr_out()&#160;:&#160;<a class="el" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a></li>
+<li>th_encode_alloc()&#160;:&#160;<a class="el" href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00">theoraenc.h</a></li>
+<li>th_encode_ctl()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a></li>
+<li>th_encode_flushheader()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408">theoraenc.h</a></li>
+<li>th_encode_free()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a36b23d216532231925c4107894204680">theoraenc.h</a></li>
+<li>th_encode_packetout()&#160;:&#160;<a class="el" href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a></li>
+<li>th_encode_ycbcr_in()&#160;:&#160;<a class="el" href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a></li>
+<li>th_granule_frame()&#160;:&#160;<a class="el" href="codec_8h.html#a95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a></li>
+<li>th_granule_time()&#160;:&#160;<a class="el" href="codec_8h.html#a707e1e281de788af0df39ef00f3fb432">codec.h</a></li>
+<li>th_info_clear()&#160;:&#160;<a class="el" href="codec_8h.html#ab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a></li>
+<li>th_info_init()&#160;:&#160;<a class="el" href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926">codec.h</a></li>
+<li>th_packet_isheader()&#160;:&#160;<a class="el" href="codec_8h.html#a02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a></li>
+<li>th_packet_iskeyframe()&#160;:&#160;<a class="el" href="codec_8h.html#afe95cfd06f0fef413266c9168a66248a">codec.h</a></li>
+<li>th_setup_free()&#160;:&#160;<a class="el" href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a></li>
+<li>th_version_number()&#160;:&#160;<a class="el" href="codec_8h.html#ab723a75c0f95b3eb817f7f769846016b">codec.h</a></li>
+<li>th_version_string()&#160;:&#160;<a class="el" href="codec_8h.html#a57a0637587e6f78a718d03c927f2c9fd">codec.h</a></li>
+<li>theora_clear()&#160;:&#160;<a class="el" href="theora_8h.html#ab252d5d81b925136dda72e8f1c09c5eb">theora.h</a></li>
+<li>theora_comment_add()&#160;:&#160;<a class="el" href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4">theora.h</a></li>
+<li>theora_comment_add_tag()&#160;:&#160;<a class="el" href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a></li>
+<li>theora_comment_clear()&#160;:&#160;<a class="el" href="theora_8h.html#a04c07c2eefba3a433e43f9fbde14719f">theora.h</a></li>
+<li>theora_comment_init()&#160;:&#160;<a class="el" href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0">theora.h</a></li>
+<li>theora_comment_query()&#160;:&#160;<a class="el" href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd">theora.h</a></li>
+<li>theora_comment_query_count()&#160;:&#160;<a class="el" href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b">theora.h</a></li>
+<li>theora_control()&#160;:&#160;<a class="el" href="theora_8h.html#a186773db3bc8cd550047e7df1b2ba2c9">theora.h</a></li>
+<li>theora_decode_header()&#160;:&#160;<a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82">theora.h</a></li>
+<li>theora_decode_init()&#160;:&#160;<a class="el" href="theora_8h.html#a264907c66003799ff77ecbd09eb33d2c">theora.h</a></li>
+<li>theora_decode_packetin()&#160;:&#160;<a class="el" href="theora_8h.html#aa65a9e53b46fd54ab344bd599fa96975">theora.h</a></li>
+<li>theora_decode_YUVout()&#160;:&#160;<a class="el" href="theora_8h.html#a09d47c80e1e94bff0a46a496816b8daa">theora.h</a></li>
+<li>theora_encode_comment()&#160;:&#160;<a class="el" href="theora_8h.html#a45e8db0713eaaca0f1144f3724cb834a">theora.h</a></li>
+<li>theora_encode_header()&#160;:&#160;<a class="el" href="theora_8h.html#a451feb58d6bde726edbae193689887be">theora.h</a></li>
+<li>theora_encode_init()&#160;:&#160;<a class="el" href="theora_8h.html#a0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a></li>
+<li>theora_encode_packetout()&#160;:&#160;<a class="el" href="theora_8h.html#a5f4929677a735bc2198c2309d235f1b3">theora.h</a></li>
+<li>theora_encode_tables()&#160;:&#160;<a class="el" href="theora_8h.html#a5085baf20855b283fa01fc948505d9d2">theora.h</a></li>
+<li>theora_encode_YUVin()&#160;:&#160;<a class="el" href="theora_8h.html#ac0d33d896ca70cedfc94c5986d947078">theora.h</a></li>
+<li>theora_granule_frame()&#160;:&#160;<a class="el" href="theora_8h.html#a7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a></li>
+<li>theora_granule_shift()&#160;:&#160;<a class="el" href="theora_8h.html#acd9360e6a47139c761002410af457a02">theora.h</a></li>
+<li>theora_granule_time()&#160;:&#160;<a class="el" href="theora_8h.html#a4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a></li>
+<li>theora_info_clear()&#160;:&#160;<a class="el" href="theora_8h.html#aba7022d58edbc4825cacad03f68b3e0d">theora.h</a></li>
+<li>theora_info_init()&#160;:&#160;<a class="el" href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90">theora.h</a></li>
+<li>theora_packet_isheader()&#160;:&#160;<a class="el" href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b">theora.h</a></li>
+<li>theora_packet_iskeyframe()&#160;:&#160;<a class="el" href="theora_8h.html#a39ccc8f847a748d7074c926b4fdd12b2">theora.h</a></li>
+<li>theora_version_number()&#160;:&#160;<a class="el" href="theora_8h.html#ad181f4b19d455dcc2bef2533530b84c8">theora.h</a></li>
+<li>theora_version_string()&#160;:&#160;<a class="el" href="theora_8h.html#ac52e77d5dab481f2181c8162549c0cb9">theora.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/globals_type.html b/doc/libtheora-1.2/globals_type.html
index 58a52b4..88d2d06 100644
--- a/doc/libtheora-1.2/globals_type.html
+++ b/doc/libtheora-1.2/globals_type.html
@@ -1,70 +1,58 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Data Fields</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Globals</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_vars.html"><span>Variables</span></a></li>
-      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-&nbsp;<ul>
-<li>th_comment
-: <a class="el" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">codec.h</a>
-</li>
-<li>th_dec_ctx
-: <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a>
-</li>
-<li>th_enc_ctx
-: <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a>
-</li>
-<li>th_quant_base
-: <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a>
-</li>
-<li>th_setup_info
-: <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a>
-</li>
-<li>th_stripe_decoded_func
-: <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">theoradec.h</a>
-</li>
-<li>th_ycbcr_buffer
-: <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a>
-</li>
-<li>theora_comment
-: <a class="el" href="group__oldfuncs.html#gaa504e8a56a4bf9c8e44f77d05aef0bb5">theora.h</a>
-</li>
+&#160;<ul>
+<li>th_comment&#160;:&#160;<a class="el" href="codec_8h.html#a96239eba5d663e3d9ccb40031b2dcfe4">codec.h</a></li>
+<li>th_dec_ctx&#160;:&#160;<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a></li>
+<li>th_enc_ctx&#160;:&#160;<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a></li>
+<li>th_quant_base&#160;:&#160;<a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a></li>
+<li>th_setup_info&#160;:&#160;<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a></li>
+<li>th_stripe_decoded_func&#160;:&#160;<a class="el" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">theoradec.h</a></li>
+<li>th_ycbcr_buffer&#160;:&#160;<a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a></li>
+<li>theora_comment&#160;:&#160;<a class="el" href="theora_8h.html#acaae73fc38efbc2ef0b0fb61dbbda3fc">theora.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/globals_vars.html b/doc/libtheora-1.2/globals_vars.html
index 8032a60..9aae64f 100644
--- a/doc/libtheora-1.2/globals_vars.html
+++ b/doc/libtheora-1.2/globals_vars.html
@@ -1,52 +1,52 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Data Fields</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Globals</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="contents">
-&nbsp;<ul>
-<li>TH_VP31_HUFF_CODES
-: <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a>
-</li>
-<li>TH_VP31_QUANT_INFO
-: <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a>
-</li>
+&#160;<ul>
+<li>TH_VP31_HUFF_CODES&#160;:&#160;<a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a></li>
+<li>TH_VP31_QUANT_INFO&#160;:&#160;<a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/group__basefuncs.html b/doc/libtheora-1.2/group__basefuncs.html
index 81c1067..5f44e29 100644
--- a/doc/libtheora-1.2/group__basefuncs.html
+++ b/doc/libtheora-1.2/group__basefuncs.html
@@ -1,548 +1,51 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: Functions Shared by Encode and Decode</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="headertitle">
-<h1>Functions Shared by Encode and Decode</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">Functions Shared by Encode and Decode</div></div>
+</div><!--header-->
 <div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="member-group"></a>
-Basic shared functions</h2></td></tr>
-<tr><td colspan="2"><p><a class="anchor" id="amgrpb625c22fa07613c734f71c378fe32d7a"></a> </p>
-<br/><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">th_version_string</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves a human-readable string to identify the library vendor and version.  <a href="#ga04846066738d9f2024fc9961162b2dbc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">th_version_number</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the library version number.  <a href="#gab723a75c0f95b3eb817f7f769846016b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute frame index, starting at <code>0</code>.  <a href="#ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">th_granule_time</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute time in seconds.  <a href="#ga707e1e281de788af0df39ef00f3fb432"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a> (ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a Theora packet is a header or not.  <a href="#ga02f3f38261a9b39452d8a5e6f8737cc1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a> (ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a theora packet is a key frame or not.  <a href="#gafe95cfd06f0fef413266c9168a66248a"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="member-group"></a>
-Functions for manipulating header data</h2></td></tr>
-<tr><td colspan="2"><p><a class="anchor" id="amgrp14ef5f819e97c870c128539ed1f334e3"></a> </p>
-<br/><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">th_info_init</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="#ga430d9c605816a6ca0bdce3a0b965b926"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="#gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">th_comment_add</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_comment)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#ga19a1f7b8032db957df151a34e5ac9272"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">th_comment_add_tag</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, char *_val)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">th_comment_query</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, int _count)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by its tag.  <a href="#ga33c8b4f57a03217636d704c2ebb211fa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">th_comment_query_count</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="#ga81d518dc4426f63ceaedcbe2668679fc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">th_comment_clear</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#gae736c1afa514947a3feb223143af95e3"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="ga19a1f7b8032db957df151a34e5ac9272"></a><!-- doxytag: member="codec.h::th_comment_add" ref="ga19a1f7b8032db957df151a34e5ac9272" args="(th_comment *_tc, char *_comment)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_comment_add </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>_comment</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Neither <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_comment</em>&nbsp;</td><td>Must be a null-terminated UTF-8 string containing the comment in "TAG=the value" form. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><!-- doxytag: member="codec.h::th_comment_add_tag" ref="ga6c5edc201ca220a30787ca6c1ddcaeaf" args="(th_comment *_tc, char *_tag, char *_val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_comment_add_tag </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>_tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>_val</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Neither <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_val</em>&nbsp;</td><td>The corresponding value as a null-terminated string. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gae736c1afa514947a3feb223143af95e3"></a><!-- doxytag: member="codec.h::th_comment_clear" ref="gae736c1afa514947a3feb223143af95e3" args="(th_comment *_tc)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_comment_clear </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_tc</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
-<p>This should be called on a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure after it is no longer needed. It will free all memory used by the structure members. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to clear. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><!-- doxytag: member="codec.h::th_comment_init" ref="ga6c8ab25988e7ea9d7b1e31a54cf58f09" args="(th_comment *_tc)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_comment_init </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_tc</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
-<p>This should be called on a freshly allocated <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure before attempting to use it. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to initialize. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga33c8b4f57a03217636d704c2ebb211fa"></a><!-- doxytag: member="codec.h::th_comment_query" ref="ga33c8b4f57a03217636d704c2ebb211fa" args="(th_comment *_tc, char *_tag, int _count)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">char* th_comment_query </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>_tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>_count</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Look up a comment value by its tag. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_count</em>&nbsp;</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct value, so an index is required to retrieve them all. The order in which these values appear is significant and should be preserved. Use <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc" title="Look up the number of instances of a tag.">th_comment_query_count()</a> to get the legal range for the <em>_count</em> parameter. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the queried tag's value. This points directly to data in the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. It should not be modified or freed by the application, and modifications to the structure may invalidate the pointer. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If no matching tag is found. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga81d518dc4426f63ceaedcbe2668679fc"></a><!-- doxytag: member="codec.h::th_comment_query_count" ref="ga81d518dc4426f63ceaedcbe2668679fc" args="(th_comment *_tc, char *_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_comment_query_count </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>_tag</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Look up the number of instances of a tag. </p>
-<p>Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa" title="Look up a comment value by its tag.">th_comment_query()</a> to retrieve all the values for that tag in order. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The number on instances of this particular tag. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><!-- doxytag: member="codec.h::th_granule_frame" ref="ga95b10e76fc4c05d0240ea2dfd9fd62bd" args="(void *_encdec, ogg_int64_t _granpos)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ogg_int64_t th_granule_frame </td>
-          <td>(</td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname"> <em>_encdec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_int64_t&nbsp;</td>
-          <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Converts a granule position to an absolute frame index, starting at <code>0</code>. </p>
-<p>The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_encdec</em>&nbsp;</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute frame index corresponding to <em>_granpos</em>. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granule position was invalid (i.e. negative). </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga707e1e281de788af0df39ef00f3fb432"></a><!-- doxytag: member="codec.h::th_granule_time" ref="ga707e1e281de788af0df39ef00f3fb432" args="(void *_encdec, ogg_int64_t _granpos)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double th_granule_time </td>
-          <td>(</td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname"> <em>_encdec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_int64_t&nbsp;</td>
-          <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Converts a granule position to an absolute time in seconds. </p>
-<p>The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_encdec</em>&nbsp;</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute time in seconds corresponding to <em>_granpos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granule position was invalid (i.e. negative). </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><!-- doxytag: member="codec.h::th_info_clear" ref="gab3d6441ab4a4969859ef5fd78a9e3c1c" args="(th_info *_info)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_info_clear </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>_info</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
-<p>This should be called on a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure after it is no longer needed. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to clear. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga430d9c605816a6ca0bdce3a0b965b926"></a><!-- doxytag: member="codec.h::th_info_init" ref="ga430d9c605816a6ca0bdce3a0b965b926" args="(th_info *_info)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_info_init </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>_info</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
-<p>This should be called on a freshly allocated <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure before attempting to use it. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to initialize. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga02f3f38261a9b39452d8a5e6f8737cc1"></a><!-- doxytag: member="codec.h::th_packet_isheader" ref="ga02f3f38261a9b39452d8a5e6f8737cc1" args="(ogg_packet *_op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_packet_isheader </td>
-          <td>(</td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>_op</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Determines whether a Theora packet is a header or not. </p>
-<p>This function does no verification beyond checking the packet type bit, so it should not be used for bitstream identification; use <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a data packet (a delta frame with no coded blocks). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet is a header packet </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is a video data packet. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gafe95cfd06f0fef413266c9168a66248a"></a><!-- doxytag: member="codec.h::th_packet_iskeyframe" ref="gafe95cfd06f0fef413266c9168a66248a" args="(ogg_packet *_op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_packet_iskeyframe </td>
-          <td>(</td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>_op</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Determines whether a theora packet is a key frame or not. </p>
-<p>This function does no verification beyond checking the packet type and key frame bits, so it should not be used for bitstream identification; use <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a delta frame (with no coded blocks). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet contains a key frame. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet contains a delta frame. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The packet is not a video data packet. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gab723a75c0f95b3eb817f7f769846016b"></a><!-- doxytag: member="codec.h::th_version_number" ref="gab723a75c0f95b3eb817f7f769846016b" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ogg_uint32_t th_version_number </td>
-          <td>(</td>
-          <td class="paramtype">void&nbsp;</td>
-          <td class="paramname"></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Retrieves the library version number. </p>
-<p>This is the highest bitstream version that the encoder library will produce, or that the decoder library can decode. This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p>
-<div class="fragment"><pre class="fragment"> (VERSION_MAJOR&lt;&lt;16)+(VERSION_MINOR&lt;&lt;8)+(VERSION_SUBMINOR)
-</pre></div> <dl class="return"><dt><b>Returns:</b></dt><dd>the version number. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ga04846066738d9f2024fc9961162b2dbc"></a><!-- doxytag: member="codec.h::th_version_string" ref="ga04846066738d9f2024fc9961162b2dbc" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* th_version_string </td>
-          <td>(</td>
-          <td class="paramtype">void&nbsp;</td>
-          <td class="paramname"></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Retrieves a human-readable string to identify the library vendor and version. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>the version string. </dd></dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/group__decfuncs.html b/doc/libtheora-1.2/group__decfuncs.html
index bd1aa68..65e9d74 100644
--- a/doc/libtheora-1.2/group__decfuncs.html
+++ b/doc/libtheora-1.2/group__decfuncs.html
@@ -1,372 +1,51 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: Functions for Decoding</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="headertitle">
-<h1>Functions for Decoding</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">Functions for Decoding</div></div>
+</div><!--header-->
 <div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="member-group"></a>
-Functions for decoding</h2></td></tr>
-<tr><td colspan="2"><p><a class="anchor" id="amgrp9d29c94aa62f20426aa5ff062c7daedd"></a>You must link to <code>libtheoradec</code> if you use any of the functions in this section.</p>
-<p>The functions are listed in the order they are used in a typical decode. The basic steps are:</p>
-<ul>
-<li>Parse the header packets by repeatedly calling <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>.</li>
-<li>Allocate a <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle with <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</li>
-<li>Call <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> to free any memory used for codec setup information.</li>
-<li>Perform any additional decoder configuration with <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</li>
-<li>For each video data packet:<ul>
-<li>Submit the packet to the decoder via <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>.</li>
-<li>Retrieve the uncompressed video data via <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>.</li>
-</ul>
-</li>
-<li>Call <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free()</a> to release all decoder memory. </li>
-</ul>
-<br/><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a> (<a class="el" href="structth__info.html">th_info</a> *_info, <a class="el" href="structth__comment.html">th_comment</a> *_tc, <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup, ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decodes the header packets of a Theora stream.  <a href="#ga006d01d36fbe64768c571e6a12b7fc50"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">th_decode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info, const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates a decoder instance.  <a href="#ga0ef07a9a97849054aa606c595a2d807e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a> (<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases all storage used for the decoder setup information.  <a href="#gadef55431b68aaa59d0d7b32b2f118f27"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, int _req, void *_buf, size_t _buf_sz)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decoder control function.  <a href="#ga1a8051958d75b1012573b6e3c8f670e1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits a packet containing encoded video data to the decoder.  <a href="#ga31c814bf09b2232aff69c57ae20f04eb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next available frame of decoded Y'CbCr data.  <a href="#gaa9cc8af63fa8540e0fc95572f259cdcb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated decoder instance.  <a href="#gafb6684ad8ba507b71112bc9de148e7d0"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="ga0ef07a9a97849054aa606c595a2d807e"></a><!-- doxytag: member="theoradec.h::th_decode_alloc" ref="ga0ef07a9a97849054aa606c595a2d807e" args="(const th_info *_info, const th_setup_info *_setup)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>* th_decode_alloc </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>_info</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>_setup</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates a decoder instance. </p>
-<p><b>Security Warning:</b> The Theora format supports very large frame sizes, potentially even larger than the address space of a 32-bit machine, and creating a decoder context allocates the space for several frames of data. If the allocation fails here, your program will crash, possibly at some future point because the OS kernel returned a valid memory range and will only fail when it tries to map the pages in it the first time they are used. Even if it succeeds, you may experience a denial of service if the frame size is large enough to cause excessive paging. If you are integrating libtheora in a larger application where such things are undesirable, it is highly recommended that you check the frame size in <em>_info</em> before calling this function and refuse to decode streams where it is larger than some reasonable maximum. libtheora will not check this for you, because there may be machines that can handle such streams and applications that wish to. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled via <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> handle returned via <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The initialized <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If the decoding parameters were invalid. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga1a8051958d75b1012573b6e3c8f670e1"></a><!-- doxytag: member="theoradec.h::th_decode_ctl" ref="ga1a8051958d75b1012573b6e3c8f670e1" args="(th_dec_ctx *_dec, int _req, void *_buf, size_t _buf_sz)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_decode_ctl </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_dec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>_req</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname"> <em>_buf</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&nbsp;</td>
-          <td class="paramname"> <em>_buf_sz</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Decoder control function. </p>
-<p>This is used to provide advanced control of the decoding process. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="theoradec_8h.html#decctlcodes">the list of available control codes</a> for details. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gafb6684ad8ba507b71112bc9de148e7d0"></a><!-- doxytag: member="theoradec.h::th_decode_free" ref="gafb6684ad8ba507b71112bc9de148e7d0" args="(th_dec_ctx *_dec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_decode_free </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_dec</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Frees an allocated decoder instance. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga006d01d36fbe64768c571e6a12b7fc50"></a><!-- doxytag: member="theoradec.h::th_decode_headerin" ref="ga006d01d36fbe64768c571e6a12b7fc50" args="(th_info *_info, th_comment *_tc, th_setup_info **_setup, ogg_packet *_op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_decode_headerin </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>_info</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **&nbsp;</td>
-          <td class="paramname"> <em>_setup</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Decodes the header packets of a Theora stream. </p>
-<p>This should be called on the initial packets of the stream, in succession, until it returns <code>0</code>, indicating that all headers have been processed, or an error is encountered. At least three header packets are required, and additional optional header packets may follow. This can be used on the first packet of any logical stream to determine if that stream is a Theora stream. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure to fill in. This must have been previously initialized with <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a>. The application may immediately begin using the contents of this structure after the first header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>A <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure to fill in. The application may immediately begin using the contents of this structure after the second header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>Returns a pointer to additional, private setup information needed by the decoder. The contents of this pointer must be initialized to <code>NULL</code> on the first call, and the returned value must continue to be passed in on all subsequent calls. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure which contains one of the initial packets of an Ogg logical stream. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a Theora header was successfully processed. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The first video data packet was encountered after all required header packets were parsed. The packet just passed in on this call should be saved and fed to <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a> to begin decoding video data. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td>One of <em>_info</em>, <em>_tc</em>, or <em>_setup</em> was <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EBADHEADER</em>&nbsp;</td><td><em>_op</em> was <code>NULL</code>, the packet was not the next header packet in the expected sequence, or the format of the header data was invalid. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EVERSION</em>&nbsp;</td><td>The packet data was a Theora info header, but for a bitstream version not decodable with this version of <code>libtheoradec</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_ENOTFORMAT</em>&nbsp;</td><td>The packet was not a Theora header. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga31c814bf09b2232aff69c57ae20f04eb"></a><!-- doxytag: member="theoradec.h::th_decode_packetin" ref="ga31c814bf09b2232aff69c57ae20f04eb" args="(th_dec_ctx *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_decode_packetin </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_dec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>_op</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_int64_t *&nbsp;</td>
-          <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Submits a packet containing encoded video data to the decoder. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded video data. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>Returns the granule position of the decoded packet. If non-<code>NULL</code>, the granule position for this specific packet is stored in this location. This is computed incrementally from previously decoded packets. After a seek, the correct granule position must be set via <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5" title="Sets the granule position.">TH_DECCTL_SET_GRANPOS</a> for this to work properly. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. A new decoded frame can be retrieved by calling <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_DUPFRAME</em>&nbsp;</td><td>The packet represented a dropped frame (either a 0-byte frame or an INTER frame with no coded blocks). The player can skip the call to <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>, as the contents of the decoded frame buffer have not changed. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EBADPACKET</em>&nbsp;</td><td><em>_op</em> does not contain encoded video data. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>The video data uses bitstream features which this library does not support. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gaa9cc8af63fa8540e0fc95572f259cdcb"></a><!-- doxytag: member="theoradec.h::th_decode_ycbcr_out" ref="gaa9cc8af63fa8540e0fc95572f259cdcb" args="(th_dec_ctx *_dec, th_ycbcr_buffer _ycbcr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_decode_ycbcr_out </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_dec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&nbsp;</td>
-          <td class="paramname"> <em>_ycbcr</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Outputs the next available frame of decoded Y'CbCr data. </p>
-<p>If a striped decode callback has been set with <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>, then the application does not need to call this function. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_ycbcr</em>&nbsp;</td><td>A video buffer structure to fill in. <code>libtheoradec</code> will fill in all the members of this structure, including the pointers to the uncompressed video data. The memory for this video data is owned by <code>libtheoradec</code>. It may be freed or overwritten without notification when subsequent frames are decoded. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec</em> or <em>_ycbcr</em> was <code>NULL</code>. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gadef55431b68aaa59d0d7b32b2f118f27"></a><!-- doxytag: member="theoradec.h::th_setup_free" ref="gadef55431b68aaa59d0d7b32b2f118f27" args="(th_setup_info *_setup)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_setup_free </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>_setup</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Releases all storage used for the decoder setup information. </p>
-<p>This should be called after you no longer want to create any decoders for a stream whose headers you have parsed with <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>The setup information to free. This can safely be <code>NULL</code>. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/group__encfuncs.html b/doc/libtheora-1.2/group__encfuncs.html
index 17d70a7..5318e2d 100644
--- a/doc/libtheora-1.2/group__encfuncs.html
+++ b/doc/libtheora-1.2/group__encfuncs.html
@@ -1,322 +1,51 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: Functions for Encoding</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="headertitle">
-<h1>Functions for Encoding</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">Functions for Encoding</div></div>
+</div><!--header-->
 <div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="member-group"></a>
-Functions for encoding</h2></td></tr>
-<tr><td colspan="2"><p><a class="anchor" id="amgrpc58fb8743a7ca83eb895d57e29e032c8"></a>You must link to <code>libtheoraenc</code> and <code>libtheoradec</code> if you use any of the functions in this section.</p>
-<p>The functions are listed in the order they are used in a typical encode. The basic steps are:</p>
-<ul>
-<li>Fill in a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure with details on the format of the video you wish to encode.</li>
-<li>Allocate a <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle with <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>.</li>
-<li>Perform any additional encoder configuration required with <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</li>
-<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> to retrieve all the header packets.</li>
-<li>For each uncompressed frame:<ul>
-<li>Submit the uncompressed frame via <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a></li>
-<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> to retrieve any video data packets that are ready.</li>
-</ul>
-</li>
-<li>Call <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free()</a> to release all encoder memory. </li>
-</ul>
-<br/><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">th_encode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates an encoder instance.  <a href="#gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _req, void *_buf, size_t _buf_sz)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="#ga3a427f6514dfdc01ea72172c469d51d9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">th_encode_flushheader</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="structth__comment.html">th_comment</a> *_comments, ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next header packet.  <a href="#ga9439d61b566039d194ff782681fbc408"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits an uncompressed frame to the encoder.  <a href="#gadbe7dd66b411c2d61ab8153c15308750"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _last, ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves encoded video data packets.  <a href="#ga96d8ac1dda53187455352f99bbb5b04b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">th_encode_free</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated encoder instance.  <a href="#ga36b23d216532231925c4107894204680"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><!-- doxytag: member="theoraenc.h::th_encode_alloc" ref="gaa91e47bc9dd5f6ee52045bd7b815e5a7" args="(const th_info *_info)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>* th_encode_alloc </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>_info</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates an encoder instance. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled with the desired encoding parameters. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The initialized <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If the encoding parameters were invalid. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga3a427f6514dfdc01ea72172c469d51d9"></a><!-- doxytag: member="theoraenc.h::th_encode_ctl" ref="ga3a427f6514dfdc01ea72172c469d51d9" args="(th_enc_ctx *_enc, int _req, void *_buf, size_t _buf_sz)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_encode_ctl </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_enc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>_req</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname"> <em>_buf</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&nbsp;</td>
-          <td class="paramname"> <em>_buf_sz</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Encoder control function. </p>
-<p>This is used to provide advanced control the encoding process. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available control codes</a> for details. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga9439d61b566039d194ff782681fbc408"></a><!-- doxytag: member="theoraenc.h::th_encode_flushheader" ref="ga9439d61b566039d194ff782681fbc408" args="(th_enc_ctx *_enc, th_comment *_comments, ogg_packet *_op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_encode_flushheader </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_enc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>_comments</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Outputs the next header packet. </p>
-<p>This should be called repeatedly after encoder initialization until it returns 0 in order to get all of the header packets, in order, before encoding actual video data. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_comments</em>&nbsp;</td><td>The metadata to place in the comment header, when it is encoded. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the header data. The memory for the header data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a header packet was successfully produced. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No packet was produced, and no more header packets remain. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em>, <em>_comments</em>, or <em>_op</em> was <code>NULL</code>. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga36b23d216532231925c4107894204680"></a><!-- doxytag: member="theoraenc.h::th_encode_free" ref="ga36b23d216532231925c4107894204680" args="(th_enc_ctx *_enc)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void th_encode_free </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_enc</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Frees an allocated encoder instance. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga96d8ac1dda53187455352f99bbb5b04b"></a><!-- doxytag: member="theoraenc.h::th_encode_packetout" ref="ga96d8ac1dda53187455352f99bbb5b04b" args="(th_enc_ctx *_enc, int _last, ogg_packet *_op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_encode_packetout </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_enc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>_last</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Retrieves encoded video data packets. </p>
-<p>This should be called repeatedly after each frame is submitted to flush any encoded packets, until it returns 0. The encoder will not buffer these packets as subsequent frames are compressed, so a failure to do so will result in lost video data. </p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Currently the encoder operates in a one-frame-in, one-packet-out manner. However, this may be changed in the future. </dd></dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_last</em>&nbsp;</td><td>Set this flag to a non-zero value if no more uncompressed frames will be submitted. This ensures that a proper EOS flag is set on the last packet. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the video data. The memory for the video data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a video data packet was successfully produced. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No packet was produced, and no more encoded video data remains. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gadbe7dd66b411c2d61ab8153c15308750"></a><!-- doxytag: member="theoraenc.h::th_encode_ycbcr_in" ref="gadbe7dd66b411c2d61ab8153c15308750" args="(th_enc_ctx *_enc, th_ycbcr_buffer _ycbcr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int th_encode_ycbcr_in </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
-          <td class="paramname"> <em>_enc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&nbsp;</td>
-          <td class="paramname"> <em>_ycbcr</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Submits an uncompressed frame to the encoder. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_ycbcr</em>&nbsp;</td><td>A buffer of Y'CbCr data to encode. If the width and height of the buffer matches the frame size the encoder was initialized with, the encoder will only reference the portion inside the picture region. Any data outside this region will be ignored, and need not map to a valid address. Alternatively, you can pass a buffer equal to the size of the picture region, if this is less than the full frame size. When using subsampled chroma planes, odd picture sizes or odd picture offsets may require an unexpected chroma plane size, and their use is generally discouraged, as they will not be well-supported by players and other media frameworks. See Section 4.4 of <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a> for details if you wish to use them anyway. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_ycbcr</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>The buffer size matches neither the frame size nor the picture size the encoder was initialized with, or encoding has already completed. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/group__oldfuncs.html b/doc/libtheora-1.2/group__oldfuncs.html
index 3893232..8add940 100644
--- a/doc/libtheora-1.2/group__oldfuncs.html
+++ b/doc/libtheora-1.2/group__oldfuncs.html
@@ -1,1646 +1,61 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: Legacy pre-1.0 C API</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#files">Files</a> &#124;
-<a href="#define-members">Defines</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>Legacy pre-1.0 C API</h1>  </div>
-</div>
+<a href="#files">Files</a>  </div>
+  <div class="headertitle"><div class="title">Legacy pre-1.0 C API</div></div>
+</div><!--header-->
 <div class="contents">
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A YUV buffer for passing uncompressed frames to and from the codec.  <a href="structyuv__buffer.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html">theora_info</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream info.  <a href="structtheora__info.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html">theora_state</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Codec internal state and context.  <a href="structtheora__state.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html">theora_comment</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata.  <a href="structtheora__comment.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="files"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
 Files</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html">theora.h</a></td></tr>
-
-<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The libtheora pre-1.0 legacy C API. </p>
-<br/></td></tr>
-</p>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">OC_FAULT</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">General failure.  <a href="#gaa4370e13ed3aea6441ccf69dcab2506e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">OC_EINVAL</a>&nbsp;&nbsp;&nbsp;-10</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Library encountered invalid internal data.  <a href="#ga43d15091b1a03a734a124e9a04d3be55"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">OC_DISABLED</a>&nbsp;&nbsp;&nbsp;-11</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Requested action is disabled.  <a href="#ga38b9fa0af856d5930c534db26e2ac2d1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">OC_BADHEADER</a>&nbsp;&nbsp;&nbsp;-20</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Header packet was corrupt/invalid.  <a href="#ga809cbad2eb36be17a235a3cadfb737ba"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">OC_NOTFORMAT</a>&nbsp;&nbsp;&nbsp;-21</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is not a theora packet.  <a href="#ga9558d6d9eacd2273c8da27f945d725ad"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">OC_VERSION</a>&nbsp;&nbsp;&nbsp;-22</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitstream version is not handled.  <a href="#ga4611cfd61160405721d1e2ab0ec2564b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">OC_IMPL</a>&nbsp;&nbsp;&nbsp;-23</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Feature or action not implemented.  <a href="#ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">OC_BADPACKET</a>&nbsp;&nbsp;&nbsp;-24</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is corrupt.  <a href="#ga117774c062a63dfad2a5b4d092fa2bb1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">OC_NEWPACKET</a>&nbsp;&nbsp;&nbsp;-25</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is an (ignorable) unhandled extension.  <a href="#ga60be4dc92c933eac3542bce3ce076496"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">OC_DUPFRAME</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is a dropped frame.  <a href="#ga84a8d2f5080ad62b415a4e7551941cbb"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structtheora__comment.html">theora_comment</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa504e8a56a4bf9c8e44f77d05aef0bb5">theora_comment</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata.  <a href="#gaa504e8a56a4bf9c8e44f77d05aef0bb5"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> { <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>, 
-<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>, 
-<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>, 
-<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>
- }</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Colorspace. </p>
- <a href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> { <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>, 
-<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>, 
-<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>, 
-<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>
- }</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Chroma subsampling. </p>
- <a href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora_version_string</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a human-readable string to identify the encoder vendor and version.  <a href="#ga5a3da8fd262a60f055f96536eec06df2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a 32-bit version number.  <a href="#gad181f4b19d455dcc2bef2533530b84c8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the theora encoder.  <a href="#ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submit a YUV buffer to the theora encoder.  <a href="#gac0d33d896ca70cedfc94c5986d947078"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, int last_p, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request the next packet of encoded video.  <a href="#ga5f4929677a735bc2198c2309d235f1b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora_encode_header</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the initial header.  <a href="#ga451feb58d6bde726edbae193689887be"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a comment header packet from provided metadata.  <a href="#ga45e8db0713eaaca0f1144f3724cb834a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the codebook tables for the stream.  <a href="#ga5085baf20855b283fa01fc948505d9d2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ci, <a class="el" href="structtheora__comment.html">theora_comment</a> *cc, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.  <a href="#ga02915e63c1bd733ee291f577a8b75a82"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding.  <a href="#ga264907c66003799ff77ecbd09eb33d2c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input a packet containing encoded data into the theora decoder.  <a href="#gaa65a9e53b46fd54ab344bd599fa96975"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output the next available frame of decoded YUV data.  <a href="#ga09d47c80e1e94bff0a46a496816b8daa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a> (ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> for that.  <a href="#gab969f9d0407683f0e5abe73d0839a25b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a> (ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a keyframe or not.  <a href="#ga39ccc8f847a748d7074c926b4fdd12b2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora_granule_shift</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report the granulepos shift radix.  <a href="#gacd9360e6a47139c761002410af457a02"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to an absolute frame index, starting at 0.  <a href="#ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to absolute time in seconds.  <a href="#ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora_info_init</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="#ga3091c87d48f1faba018c5956379a6d90"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="#gaba7022d58edbc4825cacad03f68b3e0d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.  <a href="#gab252d5d81b925136dda72e8f1c09c5eb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="#ga811b92785df3bdbbebb3de612d9d6ce0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora_comment_add</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *comment)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="#ga650642ed23894e41109bbc42ec393ed4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, char *value)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="#ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora_comment_query</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, int count)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by tag.  <a href="#ga4361f6001abb5c83c36a2ddfb648a8dc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="#ga10f66a3c752442a3e0c0098e0f88df8b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed.  <a href="#ga04c07c2eefba3a433e43f9fbde14719f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora_control</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, int req, void *buf, size_t buf_sz)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="#ga186773db3bc8cd550047e7df1b2ba2c9"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="member-group"></a>
-theora_control() codes</h2></td></tr>
-<tr><td colspan="2"><p><a class="anchor" id="amgrp13fd61986cff4566fe89a40e30b74ad9"></a> </p>
-<br/><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum post-processing level.  <a href="#gab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the post-processing level.  <a href="#ga87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="#ga27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the granule position.  <a href="#ga1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use.  <a href="#ga3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="#ga382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level.  <a href="#ga9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level.  <a href="#gabd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
+<tr class="memitem:theora_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html">theora.h</a></td></tr>
+<tr class="memdesc:theora_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The libtheora pre-1.0 legacy C API. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="ga809cbad2eb36be17a235a3cadfb737ba"></a><!-- doxytag: member="theora.h::OC_BADHEADER" ref="ga809cbad2eb36be17a235a3cadfb737ba" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_BADHEADER&nbsp;&nbsp;&nbsp;-20</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Header packet was corrupt/invalid. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga117774c062a63dfad2a5b4d092fa2bb1"></a><!-- doxytag: member="theora.h::OC_BADPACKET" ref="ga117774c062a63dfad2a5b4d092fa2bb1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_BADPACKET&nbsp;&nbsp;&nbsp;-24</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Packet is corrupt. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga38b9fa0af856d5930c534db26e2ac2d1"></a><!-- doxytag: member="theora.h::OC_DISABLED" ref="ga38b9fa0af856d5930c534db26e2ac2d1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_DISABLED&nbsp;&nbsp;&nbsp;-11</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Requested action is disabled. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga84a8d2f5080ad62b415a4e7551941cbb"></a><!-- doxytag: member="theora.h::OC_DUPFRAME" ref="ga84a8d2f5080ad62b415a4e7551941cbb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_DUPFRAME&nbsp;&nbsp;&nbsp;1</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Packet is a dropped frame. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga43d15091b1a03a734a124e9a04d3be55"></a><!-- doxytag: member="theora.h::OC_EINVAL" ref="ga43d15091b1a03a734a124e9a04d3be55" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_EINVAL&nbsp;&nbsp;&nbsp;-10</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Library encountered invalid internal data. </p>
-
-</div>
-</div>
-<a class="anchor" id="gaa4370e13ed3aea6441ccf69dcab2506e"></a><!-- doxytag: member="theora.h::OC_FAULT" ref="gaa4370e13ed3aea6441ccf69dcab2506e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_FAULT&nbsp;&nbsp;&nbsp;-1</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>General failure. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><!-- doxytag: member="theora.h::OC_IMPL" ref="ga895dc2597b3bf9c97bf7701c6eff5b0c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_IMPL&nbsp;&nbsp;&nbsp;-23</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Feature or action not implemented. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga60be4dc92c933eac3542bce3ce076496"></a><!-- doxytag: member="theora.h::OC_NEWPACKET" ref="ga60be4dc92c933eac3542bce3ce076496" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_NEWPACKET&nbsp;&nbsp;&nbsp;-25</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Packet is an (ignorable) unhandled extension. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga9558d6d9eacd2273c8da27f945d725ad"></a><!-- doxytag: member="theora.h::OC_NOTFORMAT" ref="ga9558d6d9eacd2273c8da27f945d725ad" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_NOTFORMAT&nbsp;&nbsp;&nbsp;-21</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Packet is not a theora packet. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga4611cfd61160405721d1e2ab0ec2564b"></a><!-- doxytag: member="theora.h::OC_VERSION" ref="ga4611cfd61160405721d1e2ab0ec2564b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define OC_VERSION&nbsp;&nbsp;&nbsp;-22</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Bitstream version is not handled. </p>
-
-</div>
-</div>
-<a class="anchor" id="gab31f251c9319f2140d247585d30b3d07"></a><!-- doxytag: member="theora.h::TH_DECCTL_GET_PPLEVEL_MAX" ref="gab31f251c9319f2140d247585d30b3d07" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&nbsp;&nbsp;&nbsp;(1)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Get the maximum post-processing level. </p>
-<p>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. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga1e870c654d35394f0d490045df04e0f5"></a><!-- doxytag: member="theora.h::TH_DECCTL_SET_GRANPOS" ref="ga1e870c654d35394f0d490045df04e0f5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_DECCTL_SET_GRANPOS&nbsp;&nbsp;&nbsp;(5)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Set the granule position. </p>
-<p>Call this after a seek, to update the internal granulepos in the decoder, to insure that subsequent frames are marked properly. If you track timestamps yourself and do not use the granule postion returned by the decoder, then you do not need to use this control. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga87774c35e1a755a84e2d705b38ebef0d"></a><!-- doxytag: member="theora.h::TH_DECCTL_SET_PPLEVEL" ref="ga87774c35e1a755a84e2d705b38ebef0d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_DECCTL_SET_PPLEVEL&nbsp;&nbsp;&nbsp;(3)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Set the post-processing level. </p>
-<p>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 TH_DECCTL_GET_PPLEVEL_MAX. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga9baf5bdd206e80c78a8fd44687e89783"></a><!-- doxytag: member="theora.h::TH_ENCCTL_GET_SPLEVEL_MAX" ref="ga9baf5bdd206e80c78a8fd44687e89783" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&nbsp;&nbsp;&nbsp;(12)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Gets the maximum speed level. </p>
-<p>Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. CQI, etc.).</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td>int: The maximum encoding speed level. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga27e755e15b4b5604c54974b304037a49"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE" ref="ga27e755e15b4b5604c54974b304037a49" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&nbsp;&nbsp;&nbsp;(4)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the maximum distance between key frames. </p>
-<p>This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga3befcdd66678f8d27034f9c4b16d1b9c"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_QUANT_PARAMS" ref="ga3befcdd66678f8d27034f9c4b16d1b9c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&nbsp;&nbsp;&nbsp;(2)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the quantization parameters to use. </p>
-<p><a class="anchor" id="encctlcodes_old"></a> The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td>Encoding has already begun, the quantization parameters are not acceptable to this version of the encoder, <em>buf</em> is <code>NULL</code> and <em>buf_sz</em> is not zero, or <em>buf</em> is non-<code>NULL</code> and <em>buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gabd9fbcb6a25a77d991d3620164fe59d6"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_SPLEVEL" ref="gabd9fbcb6a25a77d991d3620164fe59d6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&nbsp;&nbsp;&nbsp;(14)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the speed level. </p>
-<p>By default a speed value of 1 is used.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td>int: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga382d685a39a34d8e6ba76b00d804efd8"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_VP3_COMPATIBLE" ref="ga382d685a39a34d8e6ba76b00d804efd8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&nbsp;&nbsp;&nbsp;(10)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Disables any encoder features that would prevent lossless transcoding back to VP3. </p>
-<p>This primarily means disabling block-level QI values and not using 4MV mode when any of the luma blocks in a macro block are not coded. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="gaa504e8a56a4bf9c8e44f77d05aef0bb5"></a><!-- doxytag: member="theora.h::theora_comment" ref="gaa504e8a56a4bf9c8e44f77d05aef0bb5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structtheora__comment.html">theora_comment</a>  <a class="el" href="structtheora__comment.html">theora_comment</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Comment header metadata. </p>
-<p>This structure holds the in-stream metadata corresponding to the 'comment' header packet.</p>
-<p>Meta data is stored as a series of (tag, value) pairs, in length-encoded string vectors. The first occurence of the '=' character delimits the tag and value. A particular tag may occur more than once. The character set encoding for the strings is always UTF-8, but the tag names are limited to case-insensitive ASCII. See the spec for details.</p>
-<p>In filling in this structure, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean, and so the length array should be treated as authoritative for their length. </p>
-
-</div>
-</div>
-<hr/><h2>Enumeration Type Documentation</h2>
-<a class="anchor" id="gaa567da4ce591f7373149ce3ef3acdac9"></a><!-- doxytag: member="theora.h::theora_colorspace" ref="gaa567da4ce591f7373149ce3ef3acdac9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>A Colorspace. </p>
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f"></a><!-- doxytag: member="OC_CS_UNSPECIFIED" ref="ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f" args="" -->OC_CS_UNSPECIFIED</em>&nbsp;</td><td>
-<p>The colorspace is unknown or unspecified. </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294"></a><!-- doxytag: member="OC_CS_ITU_REC_470M" ref="ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294" args="" -->OC_CS_ITU_REC_470M</em>&nbsp;</td><td>
-<p>This is the best option for 'NTSC' content. </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a"></a><!-- doxytag: member="OC_CS_ITU_REC_470BG" ref="ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a" args="" -->OC_CS_ITU_REC_470BG</em>&nbsp;</td><td>
-<p>This is the best option for 'PAL' content. </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186"></a><!-- doxytag: member="OC_CS_NSPACES" ref="ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186" args="" -->OC_CS_NSPACES</em>&nbsp;</td><td>
-<p>This marks the end of the defined colorspaces. </p>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gae169da05bfaaf4e964a6866552d45079"></a><!-- doxytag: member="theora.h::theora_pixelformat" ref="gae169da05bfaaf4e964a6866552d45079" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>A Chroma subsampling. </p>
-<p>These enumerate the available chroma subsampling options supported by the theora format. See Section 4.4 of the specification for exact definitions. </p>
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b"></a><!-- doxytag: member="OC_PF_420" ref="ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b" args="" -->OC_PF_420</em>&nbsp;</td><td>
-<p>Chroma subsampling by 2 in each direction (4:2:0). </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb"></a><!-- doxytag: member="OC_PF_RSVD" ref="ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb" args="" -->OC_PF_RSVD</em>&nbsp;</td><td>
-<p>Reserved value. </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b"></a><!-- doxytag: member="OC_PF_422" ref="ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b" args="" -->OC_PF_422</em>&nbsp;</td><td>
-<p>Horizonatal chroma subsampling by 2 (4:2:2). </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044"></a><!-- doxytag: member="OC_PF_444" ref="ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044" args="" -->OC_PF_444</em>&nbsp;</td><td>
-<p>No chroma subsampling at all (4:4:4). </p>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="gab252d5d81b925136dda72e8f1c09c5eb"></a><!-- doxytag: member="theora.h::theora_clear" ref="gab252d5d81b925136dda72e8f1c09c5eb" args="(theora_state *t)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void theora_clear </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>t</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga650642ed23894e41109bbc42ec393ed4"></a><!-- doxytag: member="theora.h::theora_comment_add" ref="ga650642ed23894e41109bbc42ec393ed4" args="(theora_comment *tc, char *comment)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void theora_comment_add </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>comment</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A previously initialized theora comment structure </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>comment</em>&nbsp;</td><td>A null-terminated string encoding the comment in the form "TAG=the value"</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Neither <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><!-- doxytag: member="theora.h::theora_comment_add_tag" ref="ga339bd80b5bf4bb168b7052d8ec0b5a92" args="(theora_comment *tc, char *tag, char *value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void theora_comment_add_tag </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A previously initialized theora comment structure </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The corresponding value as a null-terminated string</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Neither <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga04c07c2eefba3a433e43f9fbde14719f"></a><!-- doxytag: member="theora.h::theora_comment_clear" ref="ga04c07c2eefba3a433e43f9fbde14719f" args="(theora_comment *tc)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void theora_comment_clear </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>tc</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga811b92785df3bdbbebb3de612d9d6ce0"></a><!-- doxytag: member="theora.h::theora_comment_init" ref="ga811b92785df3bdbbebb3de612d9d6ce0" args="(theora_comment *tc)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void theora_comment_init </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>tc</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga4361f6001abb5c83c36a2ddfb648a8dc"></a><!-- doxytag: member="theora.h::theora_comment_query" ref="ga4361f6001abb5c83c36a2ddfb648a8dc" args="(theora_comment *tc, char *tag, int count)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">char* theora_comment_query </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Look up a comment value by tag. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>Tn initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>The tag to look up </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct and ordered value, so an index is required to retrieve them all. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the queried tag's value </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>No matching tag is found</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="note"><dt><b>Note:</b></dt><dd>Use <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b" title="Look up the number of instances of a tag.">theora_comment_query_count()</a> to get the legal range for the count parameter. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ga10f66a3c752442a3e0c0098e0f88df8b"></a><!-- doxytag: member="theora.h::theora_comment_query_count" ref="ga10f66a3c752442a3e0c0098e0f88df8b" args="(theora_comment *tc, char *tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_comment_query_count </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&nbsp;</td>
-          <td class="paramname"> <em>tag</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Look up the number of instances of a tag. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>The tag to look up </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The number on instances of a particular tag.</dd></dl>
-<p>Call this first when querying for a specific tag and then interate over the number of instances with separate calls to <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc" title="Look up a comment value by tag.">theora_comment_query()</a> to retrieve all instances in order. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga186773db3bc8cd550047e7df1b2ba2c9"></a><!-- doxytag: member="theora.h::theora_control" ref="ga186773db3bc8cd550047e7df1b2ba2c9" args="(theora_state *th, int req, void *buf, size_t buf_sz)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_control </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>th</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>req</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname"> <em>buf</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&nbsp;</td>
-          <td class="paramname"> <em>buf_sz</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Encoder control function. </p>
-<p>This is used to provide advanced control the encoding process. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="group__oldfuncs.html#encctlcodes_old">the list of available </a> control codes" for details. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga02915e63c1bd733ee291f577a8b75a82"></a><!-- doxytag: member="theora.h::theora_decode_header" ref="ga02915e63c1bd733ee291f577a8b75a82" args="(theora_info *ci, theora_comment *cc, ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_decode_header </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>ci</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>cc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>ci</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure to fill. This must have been previously initialized with <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a>. If <em>op</em> contains an initial header, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> will fill <em>ci</em> with the parsed header values. If <em>op</em> contains codebook tables, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> will parse these and attach an internal representation to <em>ci-&gt;codec_setup</em>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cc</em>&nbsp;</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure to fill. If <em>op</em> contains comment data, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> will fill <em>cc</em> with the parsed comments. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure which you expect contains an initial header, comment data or codebook tables.</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OC_BADHEADER</em>&nbsp;</td><td><em>op</em> is NULL; OR the first byte of <em>op-&gt;packet</em> has the signature of an initial packet, but op is not a b_o_s packet; OR this packet has the signature of an initial header packet, but an initial header packet has already been seen; OR this packet has the signature of a comment packet, but the initial header has not yet been seen; OR this packet has the signature of a comment packet, but contains invalid data; OR this packet has the signature of codebook tables, but the initial header or comments have not yet been seen; OR this packet has the signature of codebook tables, but contains invalid data; OR the stream being decoded has a compatible version but this packet does not have the signature of a theora initial header, comments, or codebook packet </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_VERSION</em>&nbsp;</td><td>The packet data of <em>op</em> is an initial header with a version which is incompatible with this version of libtheora. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_NEWPACKET</em>&nbsp;</td><td>the stream being decoded has an incompatible (future) version and contains an unknown signature. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="note"><dt><b>Note:</b></dt><dd>The normal usage is that <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> be called on the first three packets of a theora logical bitstream in succession. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ga264907c66003799ff77ecbd09eb33d2c"></a><!-- doxytag: member="theora.h::theora_decode_init" ref="ga264907c66003799ff77ecbd09eb33d2c" args="(theora_state *th, theora_info *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_decode_init </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>th</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired decoding parameters. This is of course usually obtained from a previous call to <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a>. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gaa65a9e53b46fd54ab344bd599fa96975"></a><!-- doxytag: member="theora.h::theora_decode_packetin" ref="gaa65a9e53b46fd54ab344bd599fa96975" args="(theora_state *th, ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_decode_packetin </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>th</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Input a packet containing encoded data into the theora decoder. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OC_BADPACKET</em>&nbsp;</td><td><em>op</em> does not contain encoded video data </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga09d47c80e1e94bff0a46a496816b8daa"></a><!-- doxytag: member="theora.h::theora_decode_YUVout" ref="ga09d47c80e1e94bff0a46a496816b8daa" args="(theora_state *th, yuv_buffer *yuv)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_decode_YUVout </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>th</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&nbsp;</td>
-          <td class="paramname"> <em>yuv</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Output the next available frame of decoded YUV data. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>yuv</em>&nbsp;</td><td>A <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> in which libtheora should place the decoded data. Note that the buffer struct itself is allocated by the user, but that the luma and chroma pointers will be filled in by the library. Also note that these luma and chroma regions should be considered read-only by the user. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga45e8db0713eaaca0f1144f3724cb834a"></a><!-- doxytag: member="theora.h::theora_encode_comment" ref="ga45e8db0713eaaca0f1144f3724cb834a" args="(theora_comment *tc, ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_encode_comment </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
-          <td class="paramname"> <em>tc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Request a comment header packet from provided metadata. </p>
-<p>A pointer to the comment data is placed in a user-provided ogg_packet structure. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure filled with the desired metadata </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the encoded comment data. The memory for the comment data is owned by libtheora. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga451feb58d6bde726edbae193689887be"></a><!-- doxytag: member="theora.h::theora_encode_header" ref="ga451feb58d6bde726edbae193689887be" args="(theora_state *t, ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_encode_header </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>t</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Request a packet containing the initial header. </p>
-<p>A pointer to the header data is placed in a user-provided ogg_packet structure. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the header data. The memory for the header data is owned by libtheora. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><!-- doxytag: member="theora.h::theora_encode_init" ref="ga0f7ad4d4b2343278cb4ba8fb2bd5109a" args="(theora_state *th, theora_info *ti)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_encode_init </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>th</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>ti</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initialize the theora encoder. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize for encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired encoding parameters. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga5f4929677a735bc2198c2309d235f1b3"></a><!-- doxytag: member="theora.h::theora_encode_packetout" ref="ga5f4929677a735bc2198c2309d235f1b3" args="(theora_state *t, int last_p, ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_encode_packetout </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>t</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>last_p</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Request the next packet of encoded video. </p>
-<p>The encoded data is placed in a user-provided ogg_packet structure. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>last_p</em>&nbsp;</td><td>whether this is the last packet the encoder should produce. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to encoded data. The memory for the encoded data is owned by libtheora. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No internal storage exists OR no packet is ready </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The encoding process has completed </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga5085baf20855b283fa01fc948505d9d2"></a><!-- doxytag: member="theora.h::theora_encode_tables" ref="ga5085baf20855b283fa01fc948505d9d2" args="(theora_state *t, ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_encode_tables </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>t</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Request a packet containing the codebook tables for the stream. </p>
-<p>A pointer to the codebook data is placed in a user-provided ogg_packet structure. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the codebook data. The memory for the header data is owned by libtheora. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gac0d33d896ca70cedfc94c5986d947078"></a><!-- doxytag: member="theora.h::theora_encode_YUVin" ref="gac0d33d896ca70cedfc94c5986d947078" args="(theora_state *t, yuv_buffer *yuv)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_encode_YUVin </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>t</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&nbsp;</td>
-          <td class="paramname"> <em>yuv</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Submit a YUV buffer to the theora encoder. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>yuv</em>&nbsp;</td><td>A buffer of YUV data to encode. Note that both the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct and the luma/chroma buffers within should be allocated by the user. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td>Encoder is not ready, or is finished. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The size of the given frame differs from those previously input </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><!-- doxytag: member="theora.h::theora_granule_frame" ref="ga7bfa3ceb2fb4b41a282456c56e1dd269" args="(theora_state *th, ogg_int64_t granulepos)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ogg_int64_t theora_granule_frame </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>th</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_int64_t&nbsp;</td>
-          <td class="paramname"> <em>granulepos</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convert a granulepos to an absolute frame index, starting at 0. </p>
-<p>The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.</p>
-<p>Note that while the granulepos encodes the frame count (i.e. starting from 1) this call returns the frame index, starting from zero. Thus One can calculate the presentation time by multiplying the index by the rate.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>granulepos</em>&nbsp;</td><td>The granulepos to convert. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The frame index corresponding to <em>granulepos</em>. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granulepos is undefined (i.e. negative)</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Thus function was added in the 1.0alpha4 release. </p>
-
-</div>
-</div>
-<a class="anchor" id="gacd9360e6a47139c761002410af457a02"></a><!-- doxytag: member="theora.h::theora_granule_shift" ref="gacd9360e6a47139c761002410af457a02" args="(theora_info *ti)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_granule_shift </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>ti</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Report the granulepos shift radix. </p>
-<p>When embedded in Ogg, Theora uses a two-part granulepos, splitting the 64-bit field into two pieces. The more-significant section represents the frame count at the last keyframe, and the less-significant section represents the count of frames since the last keyframe. In this way the overall field is still non-decreasing with time, but usefully encodes a pointer to the last keyframe, which is necessary for correctly restarting decode after a seek.</p>
-<p>This function reports the number of bits used to represent the distance to the last keyframe, and thus how the granulepos field must be shifted or masked to obtain the two parts.</p>
-<p>Since libtheora returns compressed data in an ogg_packet structure, this may be generally useful even if the Theora packets are not being used in an Ogg container.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The bit shift dividing the two granulepos fields</dd></dl>
-<p>This function was added in the 1.0alpha5 release. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><!-- doxytag: member="theora.h::theora_granule_time" ref="ga4376358b12b9fa23ce6fe21cb5c65ac6" args="(theora_state *th, ogg_int64_t granulepos)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double theora_granule_time </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
-          <td class="paramname"> <em>th</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ogg_int64_t&nbsp;</td>
-          <td class="paramname"> <em>granulepos</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convert a granulepos to absolute time in seconds. </p>
-<p>The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle, and gives the end time of a frame's presentation as used in Ogg mux ordering.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>granulepos</em>&nbsp;</td><td>The granulepos to convert. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute time in seconds corresponding to <em>granulepos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>-1.</em>&nbsp;</td><td>The given granulepos is undefined (i.e. negative), or </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>-1.</em>&nbsp;</td><td>The function has been disabled because floating point support is not available. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gaba7022d58edbc4825cacad03f68b3e0d"></a><!-- doxytag: member="theora.h::theora_info_clear" ref="gaba7022d58edbc4825cacad03f68b3e0d" args="(theora_info *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void theora_info_clear </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>c</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
-<p>All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are cleared, and associated internal codec setup data is freed. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ga3091c87d48f1faba018c5956379a6d90"></a><!-- doxytag: member="theora.h::theora_info_init" ref="ga3091c87d48f1faba018c5956379a6d90" args="(theora_info *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void theora_info_init </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
-          <td class="paramname"> <em>c</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
-<p>All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are initialized, and space is allocated within libtheora for internal codec setup data. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="gab969f9d0407683f0e5abe73d0839a25b"></a><!-- doxytag: member="theora.h::theora_packet_isheader" ref="gab969f9d0407683f0e5abe73d0839a25b" args="(ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_packet_isheader </td>
-          <td>(</td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> for that. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet is a header packet </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is not a header packet (and so contains frame data)</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Thus function was added in the 1.0alpha4 release. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga39ccc8f847a748d7074c926b4fdd12b2"></a><!-- doxytag: member="theora.h::theora_packet_iskeyframe" ref="ga39ccc8f847a748d7074c926b4fdd12b2" args="(ogg_packet *op)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int theora_packet_iskeyframe </td>
-          <td>(</td>
-          <td class="paramtype">ogg_packet *&nbsp;</td>
-          <td class="paramname"> <em>op</em></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Report whether a theora packet is a keyframe or not. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet contains a keyframe image </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is contains an interframe delta </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The packet is not an image data packet at all</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Thus function was added in the 1.0alpha4 release. </p>
-
-</div>
-</div>
-<a class="anchor" id="gad181f4b19d455dcc2bef2533530b84c8"></a><!-- doxytag: member="theora.h::theora_version_number" ref="gad181f4b19d455dcc2bef2533530b84c8" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ogg_uint32_t theora_version_number </td>
-          <td>(</td>
-          <td class="paramtype">void&nbsp;</td>
-          <td class="paramname"></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Retrieve a 32-bit version number. </p>
-<p>This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p>
-<pre>
-   (VERSION_MAJOR&lt;&lt;16) + (VERSION_MINOR&lt;&lt;8) + (VERSION_SUB)
-</pre> <dl class="return"><dt><b>Returns:</b></dt><dd>The version number. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ga5a3da8fd262a60f055f96536eec06df2"></a><!-- doxytag: member="theora.h::theora_version_string" ref="ga5a3da8fd262a60f055f96536eec06df2" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* theora_version_string </td>
-          <td>(</td>
-          <td class="paramtype">void&nbsp;</td>
-          <td class="paramname"></td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Retrieve a human-readable string to identify the encoder vendor and version. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A version string. </dd></dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/index.html b/doc/libtheora-1.2/index.html
index 7af4ea6..0c57fe8 100644
--- a/doc/libtheora-1.2/index.html
+++ b/doc/libtheora-1.2/index.html
@@ -1,44 +1,66 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Main Page</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: libtheora</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>libtheora Documentation</h1>  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div><div class="header">
+  <div class="headertitle"><div class="title">libtheora </div></div>
+</div><!--header-->
 <div class="contents">
-<h3 class="version">1.2.0alpha1 </h3><h2><a class="anchor" id="intro"></a>
-Introduction</h2>
-<p>This is the documentation for <code>libtheora</code> C API. The current reference implementation for <a href="http://www.theora.org/">Theora</a>, a free, patent-unencumbered video codec. Theora is derived from On2's VP3 codec with additional features and integration with Ogg multimedia formats by <a href="http://www.xiph.org/">the Xiph.Org Foundation</a>. Complete documentation of the format itself is available in <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>.</p>
-<h3><a class="anchor" id="Organization"></a>
-Organization</h3>
-<p>The functions documented here are actually subdivided into three separate libraries:</p>
-<ul>
+<div class="textblock"><h1><a class="anchor" id="intro"></a>
+Introduction</h1>
+<p >This is the documentation for the <code>libtheora</code> C API.</p>
+<p >The <code>libtheora</code> package is the current reference implementation for <a href="https://www.theora.org/">Theora</a>, a free, patent-unencumbered video codec. Theora is derived from On2's VP3 codec with additional features and integration with Ogg multimedia formats by <a href="https://www.xiph.org/">the Xiph.Org Foundation</a>. Complete documentation of the format itself is available in <a href="https://www.theora.org/doc/Theora.pdf">the Theora specification</a>.</p>
+<h1><a class="anchor" id="Organization"></a>
+Organization</h1>
+<p >The functions documented here are divided between two separate libraries:</p><ul>
 <li><code>libtheoraenc</code> contains the encoder interface, described in <a class="el" href="group__encfuncs.html">Functions for Encoding</a>.</li>
-<li><code>libtheoradec</code> contains the decoder interface and routines shared with the encoder. You must also link to this if you link to <code>libtheoraenc</code>. The routines in this library are described in <a class="el" href="group__decfuncs.html">Functions for Decoding</a> and <a class="el" href="group__basefuncs.html">Functions Shared by Encode and Decode</a>.</li>
-<li><code>libtheora</code> contains the <a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>.</li>
+<li><code>libtheoradec</code> contains the decoder interface, described in <a class="el" href="group__decfuncs.html">Functions for Decoding</a>, <br  />
+ and additional <a class="el" href="group__basefuncs.html">Functions Shared by Encode and Decode</a>.</li>
 </ul>
-<p>New code should link to <code>libtheoradec</code> and, if using encoder features, <code>libtheoraenc</code>. Together these two export both the standard and the legacy API, so this is all that is needed by any code. The older <code>libtheora</code> library is provided just for compatibility with older build configurations.</p>
-<p>In general the recommended 1.x API symbols can be distinguished by their <code>th_</code> or <code>TH_</code> namespace prefix. The older, legacy API uses <code>theora_</code> or <code>OC_</code> prefixes instead. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+<p >New code should link to <code>libtheoradec</code>. If using encoder features, it must also link to <code>libtheoraenc</code>.</p>
+<p >During initial development, prior to the 1.0 release, <code>libtheora</code> exported a different <a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a> which combined both encode and decode functions. In general, legacy API symbols can be identified by their <code>theora_</code> or <code>OC_</code> namespace prefixes. The current API uses <code>th_</code> or <code>TH_</code> instead.</p>
+<p >While deprecated, <code>libtheoraenc</code> and <code>libtheoradec</code> together export the legacy api as well at the one documented above. Likewise, the legacy <code>libtheora</code> included with this package exports the new 1.x API. Older code and build scripts can therefore but updated independently to the current scheme. </p>
+</div></div><!-- PageDoc -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/jquery.js b/doc/libtheora-1.2/jquery.js
new file mode 100644
index 0000000..c9ed3d9
--- /dev/null
+++ b/doc/libtheora-1.2/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
+/*! jQuery UI - v1.12.1 - 2019-01-27
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
\ No newline at end of file
diff --git a/doc/libtheora-1.2/menu.js b/doc/libtheora-1.2/menu.js
new file mode 100644
index 0000000..818b859
--- /dev/null
+++ b/doc/libtheora-1.2/menu.js
@@ -0,0 +1,135 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
+  function makeTree(data,relPath) {
+    var result='';
+    if ('children' in data) {
+      result+='<ul>';
+      for (var i in data.children) {
+        var url;
+        var link;
+        link = data.children[i].url;
+        if (link.substring(0,1)=='^') {
+          url = link.substring(1);
+        } else {
+          url = relPath+link;
+        }
+        result+='<li><a href="'+url+'">'+
+                                data.children[i].text+'</a>'+
+                                makeTree(data.children[i],relPath)+'</li>';
+      }
+      result+='</ul>';
+    }
+    return result;
+  }
+  var searchBox;
+  if (searchEnabled) {
+    if (serverSide) {
+      searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
+                 '<div class="left">'+
+                  '<form id="FSearchBox" action="'+relPath+searchPage+
+                    '" method="get"><img id="MSearchSelect" src="'+
+                    relPath+'search/mag.svg" alt=""/>'+
+                  '<input type="text" id="MSearchField" name="query" value="'+search+
+                    '" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)"'+
+                    ' onblur="searchBox.OnSearchFieldFocus(false)">'+
+                  '</form>'+
+                 '</div>'+
+                 '<div class="right"></div>'+
+                '</div>';
+    } else {
+      searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
+                 '<span class="left">'+
+                  '<img id="MSearchSelect" src="'+relPath+
+                     'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()"'+
+                     ' onmouseout="return searchBox.OnSearchSelectHide()" alt=""/>'+
+                  '<input type="text" id="MSearchField" value="'+search+
+                    '" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" '+
+                    'onblur="searchBox.OnSearchFieldFocus(false)" '+
+                    'onkeyup="searchBox.OnSearchFieldChange(event)"/>'+
+                 '</span>'+
+                 '<span class="right"><a id="MSearchClose" '+
+                  'href="javascript:searchBox.CloseResultsWindow()">'+
+                  '<img id="MSearchCloseImg" border="0" src="'+relPath+
+                  'search/close.svg" alt=""/></a>'
+                 '</span>'
+                '</div>';
+    }
+  }
+
+  $('#main-nav').before('<div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>'+
+                        '<label class="main-menu-btn" for="main-menu-state">'+
+                        '<span class="main-menu-btn-icon"></span> '+
+                        'Toggle main menu visibility</label>'+
+                        '<span id="searchBoxPos1" style="position:absolute;right:8px;top:8px;height:36px;"></span>'+
+                        '</div>');
+  $('#main-nav').append(makeTree(menudata,relPath));
+  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+  if (searchBox) {
+    $('#main-menu').append('<li id="searchBoxPos2" style="float:right"></li>');
+  }
+  var $mainMenuState = $('#main-menu-state');
+  var prevWidth = 0;
+  if ($mainMenuState.length) {
+    function initResizableIfExists() {
+      if (typeof initResizable==='function') initResizable();
+    }
+    // animate mobile menu
+    $mainMenuState.change(function(e) {
+      var $menu = $('#main-menu');
+      var options = { duration: 250, step: initResizableIfExists };
+      if (this.checked) {
+        options['complete'] = function() { $menu.css('display', 'block') };
+        $menu.hide().slideDown(options);
+      } else {
+        options['complete'] = function() { $menu.css('display', 'none') };
+        $menu.show().slideUp(options);
+      }
+    });
+    // set default menu visibility
+    function resetState() {
+      var $menu = $('#main-menu');
+      var $mainMenuState = $('#main-menu-state');
+      var newWidth = $(window).outerWidth();
+      if (newWidth!=prevWidth) {
+        if ($(window).outerWidth()<768) {
+          $mainMenuState.prop('checked',false); $menu.hide();
+          $('#searchBoxPos1').html(searchBox);
+          $('#searchBoxPos2').hide();
+        } else {
+          $menu.show();
+          $('#searchBoxPos1').empty();
+          $('#searchBoxPos2').html(searchBox);
+          $('#searchBoxPos2').show();
+        }
+        prevWidth = newWidth;
+      }
+    }
+    $(window).ready(function() { resetState(); initResizableIfExists(); });
+    $(window).resize(resetState);
+  }
+  $('#main-menu').smartmenus();
+}
+/* @license-end */
diff --git a/doc/libtheora-1.2/menudata.js b/doc/libtheora-1.2/menudata.js
new file mode 100644
index 0000000..8789964
--- /dev/null
+++ b/doc/libtheora-1.2/menudata.js
@@ -0,0 +1,87 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+*/
+var menudata={children:[
+{text:"Main Page",url:"index.html"},
+{text:"Modules",url:"modules.html"},
+{text:"Data Structures",url:"annotated.html",children:[
+{text:"Data Structures",url:"annotated.html"},
+{text:"Data Fields",url:"functions.html",children:[
+{text:"All",url:"functions.html",children:[
+{text:"a",url:"functions.html#index_a"},
+{text:"b",url:"functions.html#index_b"},
+{text:"c",url:"functions.html#index_c"},
+{text:"d",url:"functions.html#index_d"},
+{text:"f",url:"functions.html#index_f"},
+{text:"g",url:"functions.html#index_g"},
+{text:"h",url:"functions.html#index_h"},
+{text:"i",url:"functions.html#index_i"},
+{text:"k",url:"functions.html#index_k"},
+{text:"l",url:"functions.html#index_l"},
+{text:"n",url:"functions.html#index_n"},
+{text:"o",url:"functions.html#index_o"},
+{text:"p",url:"functions.html#index_p"},
+{text:"q",url:"functions.html#index_q"},
+{text:"s",url:"functions.html#index_s"},
+{text:"t",url:"functions.html#index_t"},
+{text:"u",url:"functions.html#index_u"},
+{text:"v",url:"functions.html#index_v"},
+{text:"w",url:"functions.html#index_w"},
+{text:"y",url:"functions.html#index_y"}]},
+{text:"Variables",url:"functions_vars.html",children:[
+{text:"a",url:"functions_vars.html#index_a"},
+{text:"b",url:"functions_vars.html#index_b"},
+{text:"c",url:"functions_vars.html#index_c"},
+{text:"d",url:"functions_vars.html#index_d"},
+{text:"f",url:"functions_vars.html#index_f"},
+{text:"g",url:"functions_vars.html#index_g"},
+{text:"h",url:"functions_vars.html#index_h"},
+{text:"i",url:"functions_vars.html#index_i"},
+{text:"k",url:"functions_vars.html#index_k"},
+{text:"l",url:"functions_vars.html#index_l"},
+{text:"n",url:"functions_vars.html#index_n"},
+{text:"o",url:"functions_vars.html#index_o"},
+{text:"p",url:"functions_vars.html#index_p"},
+{text:"q",url:"functions_vars.html#index_q"},
+{text:"s",url:"functions_vars.html#index_s"},
+{text:"t",url:"functions_vars.html#index_t"},
+{text:"u",url:"functions_vars.html#index_u"},
+{text:"v",url:"functions_vars.html#index_v"},
+{text:"w",url:"functions_vars.html#index_w"},
+{text:"y",url:"functions_vars.html#index_y"}]}]}]},
+{text:"Files",url:"files.html",children:[
+{text:"File List",url:"files.html"},
+{text:"Globals",url:"globals.html",children:[
+{text:"All",url:"globals.html",children:[
+{text:"o",url:"globals.html#index_o"},
+{text:"t",url:"globals.html#index_t"}]},
+{text:"Functions",url:"globals_func.html",children:[
+{text:"t",url:"globals_func.html#index_t"}]},
+{text:"Variables",url:"globals_vars.html"},
+{text:"Typedefs",url:"globals_type.html"},
+{text:"Enumerations",url:"globals_enum.html"},
+{text:"Enumerator",url:"globals_eval.html"},
+{text:"Macros",url:"globals_defs.html",children:[
+{text:"o",url:"globals_defs.html#index_o"},
+{text:"t",url:"globals_defs.html#index_t"}]}]}]}]}
diff --git a/doc/libtheora-1.2/modules.html b/doc/libtheora-1.2/modules.html
index 8328785..4e39511 100644
--- a/doc/libtheora-1.2/modules.html
+++ b/doc/libtheora-1.2/modules.html
@@ -1,37 +1,59 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>libtheora: Module Index</title>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>libtheora: Modules</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="headertitle">
-<h1>Modules</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">Modules</div></div>
+</div><!--header-->
 <div class="contents">
-Here is a list of all modules:<ul>
-<li><a class="el" href="group__basefuncs.html">Functions Shared by Encode and Decode</a></li>
-<li><a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a></li>
-<li><a class="el" href="group__decfuncs.html">Functions for Decoding</a></li>
-<li><a class="el" href="group__encfuncs.html">Functions for Encoding</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+<div class="textblock">Here is a list of all modules:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__basefuncs.html" target="_self">Functions Shared by Encode and Decode</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__oldfuncs.html" target="_self">Legacy pre-1.0 C API</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__decfuncs.html" target="_self">Functions for Decoding</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__encfuncs.html" target="_self">Functions for Encoding</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/nav_f.png b/doc/libtheora-1.2/nav_f.png
index 1b07a16207e67c95fe2ee17e7016e6d08ac7ac99..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 100644
GIT binary patch
delta 124
zcmV-?0E7RZ0hs}iBz0g(L_t(|0qxyO4uBvGMbVbGTL*^tfkM%3YvRPhNE{fKaB|bU
zE`pBpg6fW>8&Wn}AXZ5Qu@Xg)f;DQhglrV^nwx1!n5^FF=Snb)(Gk%vj{BRL9T9c-
e@$=rlHgf|=7$DsN0QGqQ0000<MNUMnLSTY(*EYcb

delta 130
zcmV-|0Db?N0iOYoBztB_L_t(|0qxyM4ni>u1W`M6+rL23&uBa0+90uE%OD|+(2G{R
zL&)v^AmWO}#(ZP3n7)~|7`7NQ=yTCV&_+<ZQ+rUFQ<`&D<7`f@MlMD!ljAayi2Svr
k?_X8FjJ}x9{;P?|6G#{!-EEYxl>h($07*qoM6N<$f|0vDeE<Le

diff --git a/doc/libtheora-1.2/nav_g.png b/doc/libtheora-1.2/nav_g.png
new file mode 100644
index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81
GIT binary patch
literal 95
zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE
tr?otc=hd~V+ws&_A@j8Fiv!K<?EJwDd;c`qumW{3c)I$ztaD0e0syCC7$E=v

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/nav_h.png b/doc/libtheora-1.2/nav_h.png
index 01f5fa6a596e36bd12c2d6ceff1b0169fda7e699..33389b101d9cd9b4c98ad286b5d9c46a6671f650 100644
GIT binary patch
delta 67
zcmYdHnxJB*>FMGaQo;E4t|J$N1BX-KT4wgmvu@A6u&D20{R2$}&DVbwUM3!Wac4i{
Xv3!>HpqvZ$8Gyjk)z4*}Q$iB}sjeJQ

delta 66
zcmYdFoS<T>;pyTSQo;E4?nX`q10H6_y+#`jhHjhAEv}d?b4SFhXw`bg=6O+n|1%uR
WXKDW<@M10l5O})!xvX<aXaWE=KN$!B

diff --git a/doc/libtheora-1.2/open.png b/doc/libtheora-1.2/open.png
index 7b35d2c2c389743089632fe24c3104f2173d97af..30f75c7efe2dd0c9e956e35b69777a02751f048b 100644
GIT binary patch
delta 92
zcmV-i0HgnQdyphoLP<nHRCodH-N6ZfFboCI*R0i<T)+XkfHOIlVj&l)IeUEYNj@Ya
yz~8j}I4`Kg*m{F6&ptB1Th3=`RV**8e!KzCTnxkyIoY@X0000<MNUMnLSTYL)+YA=

delta 87
zcmV-d0I2_ac90}eJxN4CRCodHoiPyrAPfVO*s7))KtK(k30*KTz)@IPeoAsbL;^m9
trMCW(6mGl;;YQ7n2>_sd$oj(R;{eZG48+5s|MCC;002ovPDHLkV1lT^BSioJ

diff --git a/doc/libtheora-1.2/splitbar.png b/doc/libtheora-1.2/splitbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e
GIT binary patch
literal 314
zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc>
z_*`QK&+BH@jW<lVxsx`Ym~nPnqw$O~`M84{XS6<Mm0<Zit<Tk``D^RashfFq{wG<#
zZG2vRxL<$IhkFMSBd@N1`uRtp)t>rYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O
zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|E<fHWtM%;-WUJ&>EGLnJsniYK!2U1
Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/structth__comment.html b/doc/libtheora-1.2/structth__comment.html
index a4ba33a..9068187 100644
--- a/doc/libtheora-1.2/structth__comment.html
+++ b/doc/libtheora-1.2/structth__comment.html
@@ -1,126 +1,148 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: th_comment Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>th_comment Struct Reference</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">th_comment Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="th_comment" -->
+
 <p>The comment information.  
-<a href="#_details">More...</a></p>
+ <a href="structth__comment.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">user_comments</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The array of comment string vectors.  <a href="#ad72830e183e707bb0df423eb73b00de4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">comment_lengths</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of the corresponding length of each vector, in bytes.  <a href="#a723dc6fdf75757e70e28eea864b10898"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">comments</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The total number of comment strings.  <a href="#a5990c34932376f070ad0fc314daaeb78"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">vendor</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The null-terminated vendor string.  <a href="#a93fbe894d23603f56843be15b0cbdba0"></a><br/></td></tr>
+<tr class="memitem:ad72830e183e707bb0df423eb73b00de4"><td class="memItemLeft" align="right" valign="top">char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">user_comments</a></td></tr>
+<tr class="memdesc:ad72830e183e707bb0df423eb73b00de4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The array of comment string vectors.  <a href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">More...</a><br /></td></tr>
+<tr class="separator:ad72830e183e707bb0df423eb73b00de4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a723dc6fdf75757e70e28eea864b10898"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">comment_lengths</a></td></tr>
+<tr class="memdesc:a723dc6fdf75757e70e28eea864b10898"><td class="mdescLeft">&#160;</td><td class="mdescRight">An array of the corresponding length of each vector, in bytes.  <a href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">More...</a><br /></td></tr>
+<tr class="separator:a723dc6fdf75757e70e28eea864b10898"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5990c34932376f070ad0fc314daaeb78"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">comments</a></td></tr>
+<tr class="memdesc:a5990c34932376f070ad0fc314daaeb78"><td class="mdescLeft">&#160;</td><td class="mdescRight">The total number of comment strings.  <a href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">More...</a><br /></td></tr>
+<tr class="separator:a5990c34932376f070ad0fc314daaeb78"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93fbe894d23603f56843be15b0cbdba0"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">vendor</a></td></tr>
+<tr class="memdesc:a93fbe894d23603f56843be15b0cbdba0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The null-terminated vendor string.  <a href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">More...</a><br /></td></tr>
+<tr class="separator:a93fbe894d23603f56843be15b0cbdba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The comment information. </p>
-<p>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.</p>
-<p>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 UTF-8, but the tag names are limited to ASCII, and treated as case-insensitive. See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 6.3.3 for details.</p>
-<p>In filling in this structure, <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> 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. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a723dc6fdf75757e70e28eea864b10898"></a><!-- doxytag: member="th_comment::comment_lengths" ref="a723dc6fdf75757e70e28eea864b10898" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >The comment information. </p>
+<p >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.</p>
+<p >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 UTF-8, but the tag names are limited to ASCII, and treated as case-insensitive. See <a href="https://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 6.3.3 for details.</p>
+<p >In filling in this structure, <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> 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, so the length array should be treated as their authoritative length. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a723dc6fdf75757e70e28eea864b10898" name="a723dc6fdf75757e70e28eea864b10898"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a723dc6fdf75757e70e28eea864b10898">&#9670;&nbsp;</a></span>comment_lengths</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int* <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment::comment_lengths</a></td>
+          <td class="memname">int* th_comment::comment_lengths</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>An array of the corresponding length of each vector, in bytes. </p>
 
 </div>
 </div>
-<a class="anchor" id="a5990c34932376f070ad0fc314daaeb78"></a><!-- doxytag: member="th_comment::comments" ref="a5990c34932376f070ad0fc314daaeb78" args="" -->
+<a id="a5990c34932376f070ad0fc314daaeb78" name="a5990c34932376f070ad0fc314daaeb78"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5990c34932376f070ad0fc314daaeb78">&#9670;&nbsp;</a></span>comments</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment::comments</a></td>
+          <td class="memname">int th_comment::comments</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The total number of comment strings. </p>
 
 </div>
 </div>
-<a class="anchor" id="ad72830e183e707bb0df423eb73b00de4"></a><!-- doxytag: member="th_comment::user_comments" ref="ad72830e183e707bb0df423eb73b00de4" args="" -->
+<a id="ad72830e183e707bb0df423eb73b00de4" name="ad72830e183e707bb0df423eb73b00de4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad72830e183e707bb0df423eb73b00de4">&#9670;&nbsp;</a></span>user_comments</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char** <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment::user_comments</a></td>
+          <td class="memname">char** th_comment::user_comments</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The array of comment string vectors. </p>
 
 </div>
 </div>
-<a class="anchor" id="a93fbe894d23603f56843be15b0cbdba0"></a><!-- doxytag: member="th_comment::vendor" ref="a93fbe894d23603f56843be15b0cbdba0" args="" -->
+<a id="a93fbe894d23603f56843be15b0cbdba0" name="a93fbe894d23603f56843be15b0cbdba0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93fbe894d23603f56843be15b0cbdba0">&#9670;&nbsp;</a></span>vendor</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char* <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment::vendor</a></td>
+          <td class="memname">char* th_comment::vendor</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The null-terminated vendor string. </p>
-<p>This identifies the software used to encode the stream. </p>
+<p >This identifies the software used to encode the stream. </p>
 
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="codec_8h_source.html">codec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structth__huff__code.html b/doc/libtheora-1.2/structth__huff__code.html
index 4861187..cc6480d 100644
--- a/doc/libtheora-1.2/structth__huff__code.html
+++ b/doc/libtheora-1.2/structth__huff__code.html
@@ -1,79 +1,96 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: th_huff_code Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>th_huff_code Struct Reference</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">th_huff_code Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="th_huff_code" -->
+
 <p>A Huffman code for a Theora DCT token.  
-<a href="#_details">More...</a></p>
+ <a href="structth__huff__code.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">pattern</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word.  <a href="#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">nbits</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of bits in the code.  <a href="#aaf97b8f2f90042f7bc136a7b2bc35e35"></a><br/></td></tr>
+<tr class="memitem:a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">pattern</a></td></tr>
+<tr class="memdesc:a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word.  <a href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">More...</a><br /></td></tr>
+<tr class="separator:a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf97b8f2f90042f7bc136a7b2bc35e35"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">nbits</a></td></tr>
+<tr class="memdesc:aaf97b8f2f90042f7bc136a7b2bc35e35"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of bits in the code.  <a href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">More...</a><br /></td></tr>
+<tr class="separator:aaf97b8f2f90042f7bc136a7b2bc35e35"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A Huffman code for a Theora DCT token. </p>
-<p>Each set of Huffman codes in a given table must form a complete, prefix-free code. There is no requirement that all the tokens in a table have a valid code, but the current encoder is not optimized to take advantage of this. If each of the five grouops of 16 tables does not contain at least one table with a code for every token, then the encoder may fail to encode certain frames. The complete table in the first group of 16 does not have to be in the same place as the complete table in the other groups, but the complete tables in the remaining four groups must all be in the same place. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="aaf97b8f2f90042f7bc136a7b2bc35e35"></a><!-- doxytag: member="th_huff_code::nbits" ref="aaf97b8f2f90042f7bc136a7b2bc35e35" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >A Huffman code for a Theora DCT token. </p>
+<p >Each set of Huffman codes in a given table must form a complete, prefix-free code. There is no requirement that all the tokens in a table have a valid code, but the current encoder is not optimized to take advantage of this. If each of the five grouops of 16 tables does not contain at least one table with a code for every token, then the encoder may fail to encode certain frames. The complete table in the first group of 16 does not have to be in the same place as the complete table in the other groups, but the complete tables in the remaining four groups must all be in the same place. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="aaf97b8f2f90042f7bc136a7b2bc35e35" name="aaf97b8f2f90042f7bc136a7b2bc35e35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaf97b8f2f90042f7bc136a7b2bc35e35">&#9670;&nbsp;</a></span>nbits</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code::nbits</a></td>
+          <td class="memname">int th_huff_code::nbits</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The number of bits in the code. </p>
-<p>This must be between 0 and 32, inclusive. </p>
+<p >This must be between 0 and 32, inclusive. </p>
 
 </div>
 </div>
-<a class="anchor" id="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"></a><!-- doxytag: member="th_huff_code::pattern" ref="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4" args="" -->
+<a id="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4" name="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">&#9670;&nbsp;</a></span>pattern</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code::pattern</a></td>
+          <td class="memname">ogg_uint32_t th_huff_code::pattern</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word. </p>
 
@@ -82,9 +99,10 @@ Data Fields</h2></td></tr>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="codec_8h_source.html">codec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structth__img__plane.html b/doc/libtheora-1.2/structth__img__plane.html
index 9445676..3032839 100644
--- a/doc/libtheora-1.2/structth__img__plane.html
+++ b/doc/libtheora-1.2/structth__img__plane.html
@@ -1,112 +1,133 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: th_img_plane Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>th_img_plane Struct Reference</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">th_img_plane Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="th_img_plane" -->
+
 <p>A buffer for a single color plane in an uncompressed image.  
-<a href="#_details">More...</a></p>
+ <a href="structth__img__plane.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">width</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The width of this plane.  <a href="#a58cc297a99cd4594c3d30e56f2ed6b74"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">height</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The height of this plane.  <a href="#a21aea1367894468de489d529d7eaf44d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">stride</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The offset in bytes between successive rows.  <a href="#ab1100f071ffee3b37e07e3222f819bad"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">data</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A pointer to the beginning of the first row.  <a href="#af8133681516ce88b5a201c1b4b7e6ba2"></a><br/></td></tr>
+<tr class="memitem:a58cc297a99cd4594c3d30e56f2ed6b74"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">width</a></td></tr>
+<tr class="memdesc:a58cc297a99cd4594c3d30e56f2ed6b74"><td class="mdescLeft">&#160;</td><td class="mdescRight">The width of this plane.  <a href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">More...</a><br /></td></tr>
+<tr class="separator:a58cc297a99cd4594c3d30e56f2ed6b74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a21aea1367894468de489d529d7eaf44d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">height</a></td></tr>
+<tr class="memdesc:a21aea1367894468de489d529d7eaf44d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The height of this plane.  <a href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">More...</a><br /></td></tr>
+<tr class="separator:a21aea1367894468de489d529d7eaf44d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1100f071ffee3b37e07e3222f819bad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">stride</a></td></tr>
+<tr class="memdesc:ab1100f071ffee3b37e07e3222f819bad"><td class="mdescLeft">&#160;</td><td class="mdescRight">The offset in bytes between successive rows.  <a href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">More...</a><br /></td></tr>
+<tr class="separator:ab1100f071ffee3b37e07e3222f819bad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af8133681516ce88b5a201c1b4b7e6ba2"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">data</a></td></tr>
+<tr class="memdesc:af8133681516ce88b5a201c1b4b7e6ba2"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the beginning of the first row.  <a href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">More...</a><br /></td></tr>
+<tr class="separator:af8133681516ce88b5a201c1b4b7e6ba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A buffer for a single color plane in an uncompressed image. </p>
-<p>This contains the image data in a left-to-right, top-down format. Each row of pixels is stored contiguously in memory, but successive rows need not be. Use <em>stride</em> to compute the offset of the next row. The encoder accepts both positive <em>stride</em> values (top-down in memory) and negative (bottom-up in memory). The decoder currently always generates images with positive strides. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="af8133681516ce88b5a201c1b4b7e6ba2"></a><!-- doxytag: member="th_img_plane::data" ref="af8133681516ce88b5a201c1b4b7e6ba2" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >A buffer for a single color plane in an uncompressed image. </p>
+<p >This contains the image data in a left-to-right, top-down format. Each row of pixels is stored contiguously in memory, but successive rows need not be. Use <em>stride</em> to compute the offset of the next row. The encoder accepts both positive <em>stride</em> values (top-down in memory) and negative (bottom-up in memory). The decoder currently always generates images with positive strides. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="af8133681516ce88b5a201c1b4b7e6ba2" name="af8133681516ce88b5a201c1b4b7e6ba2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af8133681516ce88b5a201c1b4b7e6ba2">&#9670;&nbsp;</a></span>data</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char* <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane::data</a></td>
+          <td class="memname">unsigned char* th_img_plane::data</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>A pointer to the beginning of the first row. </p>
 
 </div>
 </div>
-<a class="anchor" id="a21aea1367894468de489d529d7eaf44d"></a><!-- doxytag: member="th_img_plane::height" ref="a21aea1367894468de489d529d7eaf44d" args="" -->
+<a id="a21aea1367894468de489d529d7eaf44d" name="a21aea1367894468de489d529d7eaf44d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a21aea1367894468de489d529d7eaf44d">&#9670;&nbsp;</a></span>height</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane::height</a></td>
+          <td class="memname">int th_img_plane::height</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The height of this plane. </p>
 
 </div>
 </div>
-<a class="anchor" id="ab1100f071ffee3b37e07e3222f819bad"></a><!-- doxytag: member="th_img_plane::stride" ref="ab1100f071ffee3b37e07e3222f819bad" args="" -->
+<a id="ab1100f071ffee3b37e07e3222f819bad" name="ab1100f071ffee3b37e07e3222f819bad"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab1100f071ffee3b37e07e3222f819bad">&#9670;&nbsp;</a></span>stride</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane::stride</a></td>
+          <td class="memname">int th_img_plane::stride</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The offset in bytes between successive rows. </p>
 
 </div>
 </div>
-<a class="anchor" id="a58cc297a99cd4594c3d30e56f2ed6b74"></a><!-- doxytag: member="th_img_plane::width" ref="a58cc297a99cd4594c3d30e56f2ed6b74" args="" -->
+<a id="a58cc297a99cd4594c3d30e56f2ed6b74" name="a58cc297a99cd4594c3d30e56f2ed6b74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a58cc297a99cd4594c3d30e56f2ed6b74">&#9670;&nbsp;</a></span>width</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane::width</a></td>
+          <td class="memname">int th_img_plane::width</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The width of this plane. </p>
 
@@ -115,9 +136,10 @@ Data Fields</h2></td></tr>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="codec_8h_source.html">codec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structth__info.html b/doc/libtheora-1.2/structth__info.html
index f349f2d..17007f9 100644
--- a/doc/libtheora-1.2/structth__info.html
+++ b/doc/libtheora-1.2/structth__info.html
@@ -1,365 +1,416 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: th_info Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>th_info Struct Reference</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">th_info Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="th_info" -->
+
 <p>Theora bitstream information.  
-<a href="#_details">More...</a></p>
+ <a href="structth__info.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">frame_width</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoded frame width.  <a href="#a6b8087a4d831da53011a43b8d74087a0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">frame_height</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoded frame height.  <a href="#a6b1adc3a16a8336a72692b0a5937214c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">pic_width</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The displayed picture width.  <a href="#a5048edf77b141dd3e9a92ca85e317345"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">pic_height</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The displayed picture height.  <a href="#a775178474283c5990ba73f9ba7f6b88b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">pic_x</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The X offset of the displayed picture.  <a href="#a5b3f834bcf141564e7bb14f49101870f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">pic_y</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Y offset of the displayed picture.  <a href="#a8aacc575cab2dfe3735001c2ad32aa14"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">colorspace</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The color space.  <a href="#a8c7828cd0e023e9d21108160d53659a6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">pixel_fmt</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pixel format.  <a href="#a2301388ef3755c41ab12fd144c1fc54e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">target_bitrate</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The target bit-rate in bits per second.  <a href="#a1d9c8d768a4ae623269f5bd8f6f7a015"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">quality</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The target quality level.  <a href="#aa4cdcf96cb46b256821993e9a830ee02"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">keyframe_granule_shift</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The amount to shift to extract the last keyframe number from the granule position.  <a href="#a693ca4ab11fbc0c3f32594b4bb8766ed"></a><br/></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Theora version</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf735645ddddaaf44dc0647da0e883f6c"></a>Bitstream version information.</p>
+<tr><td colspan="2"><div class="groupText"><p >Bitstream version information. </p>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">version_major</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">version_minor</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">version_subminor</a></td></tr>
+<tr class="memitem:a60b3e2cac006fee0e105a918d6a5a9f9"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">version_major</a></td></tr>
+<tr class="separator:a60b3e2cac006fee0e105a918d6a5a9f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abb1d4887a8079c6c5aaa6d7229f243d7"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">version_minor</a></td></tr>
+<tr class="separator:abb1d4887a8079c6c5aaa6d7229f243d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abfacc79b7cabae12b6ac2484f76602d3"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">version_subminor</a></td></tr>
+<tr class="separator:abfacc79b7cabae12b6ac2484f76602d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b8087a4d831da53011a43b8d74087a0"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">frame_width</a></td></tr>
+<tr class="memdesc:a6b8087a4d831da53011a43b8d74087a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The encoded frame width.  <a href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">More...</a><br /></td></tr>
+<tr class="separator:a6b8087a4d831da53011a43b8d74087a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b1adc3a16a8336a72692b0a5937214c"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">frame_height</a></td></tr>
+<tr class="memdesc:a6b1adc3a16a8336a72692b0a5937214c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The encoded frame height.  <a href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">More...</a><br /></td></tr>
+<tr class="separator:a6b1adc3a16a8336a72692b0a5937214c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5048edf77b141dd3e9a92ca85e317345"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">pic_width</a></td></tr>
+<tr class="memdesc:a5048edf77b141dd3e9a92ca85e317345"><td class="mdescLeft">&#160;</td><td class="mdescRight">The displayed picture width.  <a href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">More...</a><br /></td></tr>
+<tr class="separator:a5048edf77b141dd3e9a92ca85e317345"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a775178474283c5990ba73f9ba7f6b88b"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">pic_height</a></td></tr>
+<tr class="memdesc:a775178474283c5990ba73f9ba7f6b88b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The displayed picture height.  <a href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">More...</a><br /></td></tr>
+<tr class="separator:a775178474283c5990ba73f9ba7f6b88b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b3f834bcf141564e7bb14f49101870f"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">pic_x</a></td></tr>
+<tr class="memdesc:a5b3f834bcf141564e7bb14f49101870f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The X offset of the displayed picture.  <a href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">More...</a><br /></td></tr>
+<tr class="separator:a5b3f834bcf141564e7bb14f49101870f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8aacc575cab2dfe3735001c2ad32aa14"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">pic_y</a></td></tr>
+<tr class="memdesc:a8aacc575cab2dfe3735001c2ad32aa14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Y offset of the displayed picture.  <a href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">More...</a><br /></td></tr>
+<tr class="separator:a8aacc575cab2dfe3735001c2ad32aa14"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Frame rate</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp801309c4a0e25a4db3fe5739b322b0a7"></a>The frame rate, as a fraction.</p>
-<p>If either is 0, the frame rate is undefined. </p>
+<tr><td colspan="2"><div class="groupText"><p >The frame rate, as a fraction.</p>
+<p >If either is 0, the frame rate is undefined. </p>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">fps_numerator</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">fps_denominator</a></td></tr>
+<tr class="memitem:a20606e61676f585a7e59cfc96de190a5"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">fps_numerator</a></td></tr>
+<tr class="separator:a20606e61676f585a7e59cfc96de190a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa619408f70c03935529f1d3eda7a3ec2"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">fps_denominator</a></td></tr>
+<tr class="separator:aa619408f70c03935529f1d3eda7a3ec2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Aspect ratio</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdeca19914b5126815a2220f15d067c9b"></a>The aspect ratio of the pixels.</p>
-<p>If either value is zero, the aspect ratio is undefined. If not specified by any external means, 1:1 should be assumed. The aspect ratio of the full picture can be computed as </p>
-<div class="fragment"><pre class="fragment">  <a class="code" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a>*<a class="code" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a>/(<a class="code" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a>*<a class="code" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>).
-</pre></div> </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a></td></tr>
+<tr><td colspan="2"><div class="groupText"><p >The aspect ratio of the pixels.</p>
+<p >If either value is zero, the aspect ratio is undefined. If not specified by any external means, 1:1 should be assumed. The aspect ratio of the full picture can be computed as </p><div class="fragment"><div class="line"><a class="code hl_variable" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a>*<a class="code hl_variable" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">pic_width</a>/(<a class="code hl_variable" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a>*<a class="code hl_variable" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">pic_height</a>).</div>
+<div class="ttc" id="astructth__info_html_a04c0bd477222d747a76085d8720322e2"><div class="ttname"><a href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info::aspect_denominator</a></div><div class="ttdeci">ogg_uint32_t aspect_denominator</div><div class="ttdef"><b>Definition:</b> codec.h:255</div></div>
+<div class="ttc" id="astructth__info_html_a5048edf77b141dd3e9a92ca85e317345"><div class="ttname"><a href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info::pic_width</a></div><div class="ttdeci">ogg_uint32_t pic_width</div><div class="ttdoc">The displayed picture width.</div><div class="ttdef"><b>Definition:</b> codec.h:222</div></div>
+<div class="ttc" id="astructth__info_html_a5be65dac9f75e37864cf73dd543570cd"><div class="ttname"><a href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info::aspect_numerator</a></div><div class="ttdeci">ogg_uint32_t aspect_numerator</div><div class="ttdef"><b>Definition:</b> codec.h:254</div></div>
+<div class="ttc" id="astructth__info_html_a775178474283c5990ba73f9ba7f6b88b"><div class="ttname"><a href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info::pic_height</a></div><div class="ttdeci">ogg_uint32_t pic_height</div><div class="ttdoc">The displayed picture height.</div><div class="ttdef"><b>Definition:</b> codec.h:225</div></div>
+</div><!-- fragment --> </div></td></tr>
+<tr class="memitem:a5be65dac9f75e37864cf73dd543570cd"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a></td></tr>
+<tr class="separator:a5be65dac9f75e37864cf73dd543570cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04c0bd477222d747a76085d8720322e2"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a></td></tr>
+<tr class="separator:a04c0bd477222d747a76085d8720322e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c7828cd0e023e9d21108160d53659a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">colorspace</a></td></tr>
+<tr class="memdesc:a8c7828cd0e023e9d21108160d53659a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">The color space.  <a href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">More...</a><br /></td></tr>
+<tr class="separator:a8c7828cd0e023e9d21108160d53659a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2301388ef3755c41ab12fd144c1fc54e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">pixel_fmt</a></td></tr>
+<tr class="memdesc:a2301388ef3755c41ab12fd144c1fc54e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The pixel format.  <a href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">More...</a><br /></td></tr>
+<tr class="separator:a2301388ef3755c41ab12fd144c1fc54e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d9c8d768a4ae623269f5bd8f6f7a015"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">target_bitrate</a></td></tr>
+<tr class="memdesc:a1d9c8d768a4ae623269f5bd8f6f7a015"><td class="mdescLeft">&#160;</td><td class="mdescRight">The target bit-rate in bits per second.  <a href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">More...</a><br /></td></tr>
+<tr class="separator:a1d9c8d768a4ae623269f5bd8f6f7a015"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa4cdcf96cb46b256821993e9a830ee02"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">quality</a></td></tr>
+<tr class="memdesc:aa4cdcf96cb46b256821993e9a830ee02"><td class="mdescLeft">&#160;</td><td class="mdescRight">The target quality level.  <a href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">More...</a><br /></td></tr>
+<tr class="separator:aa4cdcf96cb46b256821993e9a830ee02"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a693ca4ab11fbc0c3f32594b4bb8766ed"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">keyframe_granule_shift</a></td></tr>
+<tr class="memdesc:a693ca4ab11fbc0c3f32594b4bb8766ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">The amount to shift to extract the last keyframe number from the granule position.  <a href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">More...</a><br /></td></tr>
+<tr class="separator:a693ca4ab11fbc0c3f32594b4bb8766ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Theora bitstream information. </p>
-<p>This contains the basic playback parameters for a stream, and corresponds to the initial 'info' header packet. To initialize an encoder, the application fills in this structure and passes it to <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>. A default encoding mode is chosen based on the values of the <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02" title="The target quality level.">quality</a> and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> fields. On decode, it is filled in by <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>, and then passed to <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</p>
-<p>Encoded Theora frames must be a multiple of 16 in size; this is what the <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a> and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a> members represent. To handle arbitrary picture sizes, a crop rectangle is specified in the <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a> members.</p>
-<p>All frame buffers contain pointers to the full, padded frame. However, the current encoder <em>will not</em> reference pixels outside of the cropped picture region, and the application does not need to fill them in. The decoder <em>will</em> allocate storage for a full frame, but the application <em>should not</em> rely on the padding containing sensible data.</p>
-<p>It is also generally recommended that the offsets and sizes should still be multiples of 2 to avoid chroma sampling shifts when chroma is sub-sampled. See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for more details.</p>
-<p>Frame rate, in frames per second, is stored as a rational fraction, as is the pixel aspect ratio. Note that this refers to the aspect ratio of the individual pixels, not of the overall frame itself. The frame aspect ratio can be computed from pixel aspect ratio using the image dimensions. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a04c0bd477222d747a76085d8720322e2"></a><!-- doxytag: member="th_info::aspect_denominator" ref="a04c0bd477222d747a76085d8720322e2" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >Theora bitstream information. </p>
+<p >This contains the basic playback parameters for a stream, and corresponds to the initial 'info' header packet. To initialize an encoder, the application fills in this structure and passes it to <a class="el" href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00" title="Allocates an encoder instance.">th_encode_alloc()</a>. A default encoding mode is chosen based on the values of the <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02" title="The target quality level.">quality</a> and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> fields. On decode, it is filled in by <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>, and then passed to <a class="el" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898" title="Allocates a decoder instance.">th_decode_alloc()</a>.</p>
+<p >Encoded Theora frames must be a multiple of 16 in size; this is what the <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a> and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a> members represent. To handle arbitrary picture sizes, a crop rectangle is specified in the <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a> members.</p>
+<p >All frame buffers contain pointers to the full, padded frame. However, the current encoder <em>will not</em> reference pixels outside of the cropped picture region, and the application does not need to fill them in. The decoder <em>will</em> allocate storage for a full frame, but the application <em>should not</em> rely on the padding containing sensible data.</p>
+<p >It is also generally recommended that the offsets and sizes should still be multiples of 2 to avoid chroma sampling shifts when chroma is sub-sampled. See <a href="https://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for more details.</p>
+<p >Frame rate, in frames per second, is stored as a rational fraction, as is the pixel aspect ratio. Note that this refers to the aspect ratio of the individual pixels, not of the overall frame itself. The frame aspect ratio can be computed from pixel aspect ratio using the image dimensions. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a04c0bd477222d747a76085d8720322e2" name="a04c0bd477222d747a76085d8720322e2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a04c0bd477222d747a76085d8720322e2">&#9670;&nbsp;</a></span>aspect_denominator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info::aspect_denominator</a></td>
+          <td class="memname">ogg_uint32_t th_info::aspect_denominator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a5be65dac9f75e37864cf73dd543570cd"></a><!-- doxytag: member="th_info::aspect_numerator" ref="a5be65dac9f75e37864cf73dd543570cd" args="" -->
+<a id="a5be65dac9f75e37864cf73dd543570cd" name="a5be65dac9f75e37864cf73dd543570cd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5be65dac9f75e37864cf73dd543570cd">&#9670;&nbsp;</a></span>aspect_numerator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info::aspect_numerator</a></td>
+          <td class="memname">ogg_uint32_t th_info::aspect_numerator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a8c7828cd0e023e9d21108160d53659a6"></a><!-- doxytag: member="th_info::colorspace" ref="a8c7828cd0e023e9d21108160d53659a6" args="" -->
+<a id="a8c7828cd0e023e9d21108160d53659a6" name="a8c7828cd0e023e9d21108160d53659a6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c7828cd0e023e9d21108160d53659a6">&#9670;&nbsp;</a></span>colorspace</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info::colorspace</a></td>
+          <td class="memname"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> th_info::colorspace</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The color space. </p>
 
 </div>
 </div>
-<a class="anchor" id="aa619408f70c03935529f1d3eda7a3ec2"></a><!-- doxytag: member="th_info::fps_denominator" ref="aa619408f70c03935529f1d3eda7a3ec2" args="" -->
+<a id="aa619408f70c03935529f1d3eda7a3ec2" name="aa619408f70c03935529f1d3eda7a3ec2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa619408f70c03935529f1d3eda7a3ec2">&#9670;&nbsp;</a></span>fps_denominator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info::fps_denominator</a></td>
+          <td class="memname">ogg_uint32_t th_info::fps_denominator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a20606e61676f585a7e59cfc96de190a5"></a><!-- doxytag: member="th_info::fps_numerator" ref="a20606e61676f585a7e59cfc96de190a5" args="" -->
+<a id="a20606e61676f585a7e59cfc96de190a5" name="a20606e61676f585a7e59cfc96de190a5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a20606e61676f585a7e59cfc96de190a5">&#9670;&nbsp;</a></span>fps_numerator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info::fps_numerator</a></td>
+          <td class="memname">ogg_uint32_t th_info::fps_numerator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a6b1adc3a16a8336a72692b0a5937214c"></a><!-- doxytag: member="th_info::frame_height" ref="a6b1adc3a16a8336a72692b0a5937214c" args="" -->
+<a id="a6b1adc3a16a8336a72692b0a5937214c" name="a6b1adc3a16a8336a72692b0a5937214c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b1adc3a16a8336a72692b0a5937214c">&#9670;&nbsp;</a></span>frame_height</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info::frame_height</a></td>
+          <td class="memname">ogg_uint32_t th_info::frame_height</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The encoded frame height. </p>
-<p>This must be a multiple of 16, and less than 1048576. </p>
+<p >This must be a multiple of 16, and less than 1048576. </p>
 
 </div>
 </div>
-<a class="anchor" id="a6b8087a4d831da53011a43b8d74087a0"></a><!-- doxytag: member="th_info::frame_width" ref="a6b8087a4d831da53011a43b8d74087a0" args="" -->
+<a id="a6b8087a4d831da53011a43b8d74087a0" name="a6b8087a4d831da53011a43b8d74087a0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b8087a4d831da53011a43b8d74087a0">&#9670;&nbsp;</a></span>frame_width</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info::frame_width</a></td>
+          <td class="memname">ogg_uint32_t th_info::frame_width</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The encoded frame width. </p>
-<p>This must be a multiple of 16, and less than 1048576. </p>
+<p >This must be a multiple of 16, and less than 1048576. </p>
 
 </div>
 </div>
-<a class="anchor" id="a693ca4ab11fbc0c3f32594b4bb8766ed"></a><!-- doxytag: member="th_info::keyframe_granule_shift" ref="a693ca4ab11fbc0c3f32594b4bb8766ed" args="" -->
+<a id="a693ca4ab11fbc0c3f32594b4bb8766ed" name="a693ca4ab11fbc0c3f32594b4bb8766ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a693ca4ab11fbc0c3f32594b4bb8766ed">&#9670;&nbsp;</a></span>keyframe_granule_shift</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info::keyframe_granule_shift</a></td>
+          <td class="memname">int th_info::keyframe_granule_shift</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The amount to shift to extract the last keyframe number from the granule position. </p>
-<p>This can be at most 31. <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a> will set this to a default value (currently <code>6</code>, which is good for streaming applications), but you can set it to 0 to make every frame a keyframe. The maximum distance between key frames is <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">keyframe_granule_shift</a></code>. The keyframe frequency can be more finely controlled with <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49" title="Sets the maximum distance between key frames.">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>, which can also be adjusted during encoding (for example, to force the next frame to be a keyframe), but it cannot be set larger than the amount permitted by this field after the headers have been output. </p>
+<p >This can be at most 31. <a class="el" href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a> will set this to a default value (currently <code>6</code>, which is good for streaming applications), but you can set it to 0 to make every frame a keyframe. The maximum distance between key frames is <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">keyframe_granule_shift</a></code>. The keyframe frequency can be more finely controlled with <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49" title="Sets the maximum distance between key frames.">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>, which can also be adjusted during encoding (for example, to force the next frame to be a keyframe), but it cannot be set larger than the amount permitted by this field after the headers have been output. </p>
 
 </div>
 </div>
-<a class="anchor" id="a775178474283c5990ba73f9ba7f6b88b"></a><!-- doxytag: member="th_info::pic_height" ref="a775178474283c5990ba73f9ba7f6b88b" args="" -->
+<a id="a775178474283c5990ba73f9ba7f6b88b" name="a775178474283c5990ba73f9ba7f6b88b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a775178474283c5990ba73f9ba7f6b88b">&#9670;&nbsp;</a></span>pic_height</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info::pic_height</a></td>
+          <td class="memname">ogg_uint32_t th_info::pic_height</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The displayed picture height. </p>
-<p>This must be no larger than height. </p>
+<p >This must be no larger than height. </p>
 
 </div>
 </div>
-<a class="anchor" id="a5048edf77b141dd3e9a92ca85e317345"></a><!-- doxytag: member="th_info::pic_width" ref="a5048edf77b141dd3e9a92ca85e317345" args="" -->
+<a id="a5048edf77b141dd3e9a92ca85e317345" name="a5048edf77b141dd3e9a92ca85e317345"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5048edf77b141dd3e9a92ca85e317345">&#9670;&nbsp;</a></span>pic_width</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info::pic_width</a></td>
+          <td class="memname">ogg_uint32_t th_info::pic_width</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The displayed picture width. </p>
-<p>This must be no larger than width. </p>
+<p >This must be no larger than width. </p>
 
 </div>
 </div>
-<a class="anchor" id="a5b3f834bcf141564e7bb14f49101870f"></a><!-- doxytag: member="th_info::pic_x" ref="a5b3f834bcf141564e7bb14f49101870f" args="" -->
+<a id="a5b3f834bcf141564e7bb14f49101870f" name="a5b3f834bcf141564e7bb14f49101870f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5b3f834bcf141564e7bb14f49101870f">&#9670;&nbsp;</a></span>pic_x</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info::pic_x</a></td>
+          <td class="memname">ogg_uint32_t th_info::pic_x</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The X offset of the displayed picture. </p>
-<p>This must be no larger than <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a>-<a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> or 255, whichever is smaller. </p>
+<p >This must be no larger than <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a>-<a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> or 255, whichever is smaller. </p>
 
 </div>
 </div>
-<a class="anchor" id="a8aacc575cab2dfe3735001c2ad32aa14"></a><!-- doxytag: member="th_info::pic_y" ref="a8aacc575cab2dfe3735001c2ad32aa14" args="" -->
+<a id="a8aacc575cab2dfe3735001c2ad32aa14" name="a8aacc575cab2dfe3735001c2ad32aa14"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8aacc575cab2dfe3735001c2ad32aa14">&#9670;&nbsp;</a></span>pic_y</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info::pic_y</a></td>
+          <td class="memname">ogg_uint32_t th_info::pic_y</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The Y offset of the displayed picture. </p>
-<p>This must be no larger than <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>, and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>-<a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a> must be no larger than 255. This slightly funny restriction is due to the fact that the offset is specified from the top of the image for consistency with the standard graphics left-handed coordinate system used throughout this API, while it is stored in the encoded stream as an offset from the bottom. </p>
+<p >This must be no larger than <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>, and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>-<a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a> must be no larger than 255. This slightly funny restriction is due to the fact that the offset is specified from the top of the image for consistency with the standard graphics left-handed coordinate system used throughout this API, while it is stored in the encoded stream as an offset from the bottom. </p>
 
 </div>
 </div>
-<a class="anchor" id="a2301388ef3755c41ab12fd144c1fc54e"></a><!-- doxytag: member="th_info::pixel_fmt" ref="a2301388ef3755c41ab12fd144c1fc54e" args="" -->
+<a id="a2301388ef3755c41ab12fd144c1fc54e" name="a2301388ef3755c41ab12fd144c1fc54e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2301388ef3755c41ab12fd144c1fc54e">&#9670;&nbsp;</a></span>pixel_fmt</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info::pixel_fmt</a></td>
+          <td class="memname"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> th_info::pixel_fmt</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The pixel format. </p>
 
 </div>
 </div>
-<a class="anchor" id="aa4cdcf96cb46b256821993e9a830ee02"></a><!-- doxytag: member="th_info::quality" ref="aa4cdcf96cb46b256821993e9a830ee02" args="" -->
+<a id="aa4cdcf96cb46b256821993e9a830ee02" name="aa4cdcf96cb46b256821993e9a830ee02"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa4cdcf96cb46b256821993e9a830ee02">&#9670;&nbsp;</a></span>quality</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info::quality</a></td>
+          <td class="memname">int th_info::quality</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The target quality level. </p>
-<p>Valid values range from 0 to 63, inclusive, with higher values giving higher quality. If initializing an encoder with this struct, and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> is set to zero, VBR encoding at this quality will be activated by default. </p>
+<p >Valid values range from 0 to 63, inclusive, with higher values giving higher quality. If initializing an encoder with this struct, and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> is set to zero, VBR encoding at this quality will be activated by default. </p>
 
 </div>
 </div>
-<a class="anchor" id="a1d9c8d768a4ae623269f5bd8f6f7a015"></a><!-- doxytag: member="th_info::target_bitrate" ref="a1d9c8d768a4ae623269f5bd8f6f7a015" args="" -->
+<a id="a1d9c8d768a4ae623269f5bd8f6f7a015" name="a1d9c8d768a4ae623269f5bd8f6f7a015"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1d9c8d768a4ae623269f5bd8f6f7a015">&#9670;&nbsp;</a></span>target_bitrate</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info::target_bitrate</a></td>
+          <td class="memname">int th_info::target_bitrate</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The target bit-rate in bits per second. </p>
-<p>If initializing an encoder with this struct, set this field to a non-zero value to activate CBR encoding by default. </p>
+<p >If initializing an encoder with this struct, set this field to a non-zero value to activate CBR encoding by default. </p>
 
 </div>
 </div>
-<a class="anchor" id="a60b3e2cac006fee0e105a918d6a5a9f9"></a><!-- doxytag: member="th_info::version_major" ref="a60b3e2cac006fee0e105a918d6a5a9f9" args="" -->
+<a id="a60b3e2cac006fee0e105a918d6a5a9f9" name="a60b3e2cac006fee0e105a918d6a5a9f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60b3e2cac006fee0e105a918d6a5a9f9">&#9670;&nbsp;</a></span>version_major</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info::version_major</a></td>
+          <td class="memname">unsigned char th_info::version_major</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="abb1d4887a8079c6c5aaa6d7229f243d7"></a><!-- doxytag: member="th_info::version_minor" ref="abb1d4887a8079c6c5aaa6d7229f243d7" args="" -->
+<a id="abb1d4887a8079c6c5aaa6d7229f243d7" name="abb1d4887a8079c6c5aaa6d7229f243d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abb1d4887a8079c6c5aaa6d7229f243d7">&#9670;&nbsp;</a></span>version_minor</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info::version_minor</a></td>
+          <td class="memname">unsigned char th_info::version_minor</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="abfacc79b7cabae12b6ac2484f76602d3"></a><!-- doxytag: member="th_info::version_subminor" ref="abfacc79b7cabae12b6ac2484f76602d3" args="" -->
+<a id="abfacc79b7cabae12b6ac2484f76602d3" name="abfacc79b7cabae12b6ac2484f76602d3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abfacc79b7cabae12b6ac2484f76602d3">&#9670;&nbsp;</a></span>version_subminor</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info::version_subminor</a></td>
+          <td class="memname">unsigned char th_info::version_subminor</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="codec_8h_source.html">codec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structth__quant__info.html b/doc/libtheora-1.2/structth__quant__info.html
index f6505c2..d4fc1c6 100644
--- a/doc/libtheora-1.2/structth__quant__info.html
+++ b/doc/libtheora-1.2/structth__quant__info.html
@@ -1,128 +1,147 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: th_quant_info Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>th_quant_info Struct Reference</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">th_quant_info Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="th_quant_info" -->
+
 <p>A complete set of quantization parameters.  
-<a href="#_details">More...</a></p>
+ <a href="structth__quant__info.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">dc_scale</a> [64]</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The DC scaling factors.  <a href="#ad5c1c0d1aa4127fcf864ae747d732ed9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">ac_scale</a> [64]</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The AC scaling factors.  <a href="#a102f079c8f4a135dc0895c10768aeb06"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">loop_filter_limits</a> [64]</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The loop filter limit values.  <a href="#a4ac56bf0a45b5743b36daf85d5cd9e33"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">qi_ranges</a> [2][3]</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <em>qi</em> ranges for each <em>ci</em> and <em>pli</em>.  <a href="#a6feacf4b365e305a7df7b93d87ee7bb8"></a><br/></td></tr>
+<tr class="memitem:ad5c1c0d1aa4127fcf864ae747d732ed9"><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">dc_scale</a> [64]</td></tr>
+<tr class="memdesc:ad5c1c0d1aa4127fcf864ae747d732ed9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The DC scaling factors.  <a href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">More...</a><br /></td></tr>
+<tr class="separator:ad5c1c0d1aa4127fcf864ae747d732ed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a102f079c8f4a135dc0895c10768aeb06"><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">ac_scale</a> [64]</td></tr>
+<tr class="memdesc:a102f079c8f4a135dc0895c10768aeb06"><td class="mdescLeft">&#160;</td><td class="mdescRight">The AC scaling factors.  <a href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">More...</a><br /></td></tr>
+<tr class="separator:a102f079c8f4a135dc0895c10768aeb06"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ac56bf0a45b5743b36daf85d5cd9e33"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">loop_filter_limits</a> [64]</td></tr>
+<tr class="memdesc:a4ac56bf0a45b5743b36daf85d5cd9e33"><td class="mdescLeft">&#160;</td><td class="mdescRight">The loop filter limit values.  <a href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">More...</a><br /></td></tr>
+<tr class="separator:a4ac56bf0a45b5743b36daf85d5cd9e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6feacf4b365e305a7df7b93d87ee7bb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">qi_ranges</a> [2][3]</td></tr>
+<tr class="memdesc:a6feacf4b365e305a7df7b93d87ee7bb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <em>qi</em> ranges for each <em>ci</em> and <em>pli</em>.  <a href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">More...</a><br /></td></tr>
+<tr class="separator:a6feacf4b365e305a7df7b93d87ee7bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A complete set of quantization parameters. </p>
-<p>The quantizer for each coefficient is calculated as: </p>
-<div class="fragment"><pre class="fragment">    Q=MAX(MIN(qmin[qti][ci!=0],scale[ci!=0][qi]*base[qti][pli][qi][ci]/100),
-     1024).
-</pre></div><p><em>qti</em> is the quantization type index: 0 for intra, 1 for inter. <code>ci!=0</code> is 0 for the DC coefficient and 1 for AC coefficients. <em>qi</em> is the quality index, ranging between 0 (low quality) and 63 (high quality). <em>pli</em> is the color plane index: 0 for Y', 1 for Cb, 2 for Cr. <em>ci</em> is the DCT coefficient index. Coefficient indices correspond to the normal 2D DCT block ordering--row-major with low frequencies first--<em>not</em> zig-zag order.</p>
-<p>Minimum quantizers are constant, and are given by: </p>
-<div class="fragment"><pre class="fragment">   qmin[2][2]={{4,2},{8,4}}.
-</pre></div><p>Parameters that can be stored in the bitstream are as follows:</p>
-<ul>
-<li>The two scale matrices ac_scale and dc_scale. <div class="fragment"><pre class="fragment">      scale[2][64]={<a class="code" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9" title="The DC scaling factors.">dc_scale</a>,<a class="code" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06" title="The AC scaling factors.">ac_scale</a>}.
-</pre></div></li>
-<li>The base matrices for each <em>qi</em>, <em>qti</em> and <em>pli</em> (up to 384 in all). In order to avoid storing a full 384 base matrices, only a sparse set of matrices are stored, and the rest are linearly interpolated. This is done as follows. For each <em>qti</em> and <em>pli</em>, a series of <em>n</em> <em>qi</em> ranges is defined. The size of each <em>qi</em> range can vary arbitrarily, but they must sum to 63. Then, <code>n+1</code> matrices are specified, one for each endpoint of the ranges. For interpolation purposes, each range's endpoints are the first <em>qi</em> value it contains and one past the last <em>qi</em> value it contains. Fractional values are rounded to the nearest integer, with ties rounded away from zero.</li>
-</ul>
-<p>Base matrices are stored by reference, so if the same matrices are used multiple times, they will only appear once in the bitstream. The bitstream is also capable of omitting an entire set of ranges and its associated matrices if they are the same as either the previous set (indexed in row-major order) or if the inter set is the same as the intra set.</p>
-<ul>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >A complete set of quantization parameters. </p>
+<p >The quantizer for each coefficient is calculated as: </p><div class="fragment"><div class="line">Q=MAX(MIN(qmin[qti][ci!=0],scale[ci!=0][qi]*base[qti][pli][qi][ci]/100),</div>
+<div class="line"> 1024).</div>
+</div><!-- fragment --><p ><em>qti</em> is the quantization type index: 0 for intra, 1 for inter. <code>ci!=0</code> is 0 for the DC coefficient and 1 for AC coefficients. <em>qi</em> is the quality index, ranging between 0 (low quality) and 63 (high quality). <em>pli</em> is the color plane index: 0 for Y', 1 for Cb, 2 for Cr. <em>ci</em> is the DCT coefficient index. Coefficient indices correspond to the normal 2D DCT block ordering&ndash;row-major with low frequencies first&ndash;<em>not</em> zig-zag order.</p>
+<p >Minimum quantizers are constant, and are given by: </p><div class="fragment"><div class="line">qmin[2][2]={{4,2},{8,4}}.</div>
+</div><!-- fragment --><p >Parameters that can be stored in the bitstream are as follows:</p><ul>
+<li>The two scale matrices ac_scale and dc_scale. <div class="fragment"><div class="line">scale[2][64]={<a class="code hl_variable" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">dc_scale</a>,<a class="code hl_variable" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">ac_scale</a>}.</div>
+<div class="ttc" id="astructth__quant__info_html_a102f079c8f4a135dc0895c10768aeb06"><div class="ttname"><a href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info::ac_scale</a></div><div class="ttdeci">ogg_uint16_t ac_scale[64]</div><div class="ttdoc">The AC scaling factors.</div><div class="ttdef"><b>Definition:</b> codec.h:415</div></div>
+<div class="ttc" id="astructth__quant__info_html_ad5c1c0d1aa4127fcf864ae747d732ed9"><div class="ttname"><a href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info::dc_scale</a></div><div class="ttdeci">ogg_uint16_t dc_scale[64]</div><div class="ttdoc">The DC scaling factors.</div><div class="ttdef"><b>Definition:</b> codec.h:413</div></div>
+</div><!-- fragment --></li>
+<li><p class="startli">The base matrices for each <em>qi</em>, <em>qti</em> and <em>pli</em> (up to 384 in all). In order to avoid storing a full 384 base matrices, only a sparse set of matrices are stored, and the rest are linearly interpolated. This is done as follows. For each <em>qti</em> and <em>pli</em>, a series of <em>n</em> <em>qi</em> ranges is defined. The size of each <em>qi</em> range can vary arbitrarily, but they must sum to 63. Then, <code>n+1</code> matrices are specified, one for each endpoint of the ranges. For interpolation purposes, each range's endpoints are the first <em>qi</em> value it contains and one past the last <em>qi</em> value it contains. Fractional values are rounded to the nearest integer, with ties rounded away from zero.</p>
+<p class="startli">Base matrices are stored by reference, so if the same matrices are used multiple times, they will only appear once in the bitstream. The bitstream is also capable of omitting an entire set of ranges and its associated matrices if they are the same as either the previous set (indexed in row-major order) or if the inter set is the same as the intra set.</p>
+</li>
 <li>Loop filter limit values. The same limits are used for the loop filter in all color planes, despite potentially differing levels of quantization in each.</li>
 </ul>
-<p>For the current encoder, <code>scale[ci!=0][qi]</code> must be no greater than <code>scale[ci!=0][qi-1]</code> and <code>base[qti][pli][qi][ci]</code> must be no greater than <code>base[qti][pli][qi-1][ci]</code>. These two conditions ensure that the actual quantizer for a given <em>qti</em>, <em>pli</em>, and <em>ci</em> does not increase as <em>qi</em> increases. This is not required by the decoder. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a102f079c8f4a135dc0895c10768aeb06"></a><!-- doxytag: member="th_quant_info::ac_scale" ref="a102f079c8f4a135dc0895c10768aeb06" args="[64]" -->
+<p >For the current encoder, <code>scale[ci!=0][qi]</code> must be no greater than <code>scale[ci!=0][qi-1]</code> and <code>base[qti][pli][qi][ci]</code> must be no greater than <code>base[qti][pli][qi-1][ci]</code>. These two conditions ensure that the actual quantizer for a given <em>qti</em>, <em>pli</em>, and <em>ci</em> does not increase as <em>qi</em> increases. This is not required by the decoder. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a102f079c8f4a135dc0895c10768aeb06" name="a102f079c8f4a135dc0895c10768aeb06"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a102f079c8f4a135dc0895c10768aeb06">&#9670;&nbsp;</a></span>ac_scale</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint16_t <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info::ac_scale</a>[64]</td>
+          <td class="memname">ogg_uint16_t th_quant_info::ac_scale[64]</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The AC scaling factors. </p>
 
 </div>
 </div>
-<a class="anchor" id="ad5c1c0d1aa4127fcf864ae747d732ed9"></a><!-- doxytag: member="th_quant_info::dc_scale" ref="ad5c1c0d1aa4127fcf864ae747d732ed9" args="[64]" -->
+<a id="ad5c1c0d1aa4127fcf864ae747d732ed9" name="ad5c1c0d1aa4127fcf864ae747d732ed9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad5c1c0d1aa4127fcf864ae747d732ed9">&#9670;&nbsp;</a></span>dc_scale</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint16_t <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info::dc_scale</a>[64]</td>
+          <td class="memname">ogg_uint16_t th_quant_info::dc_scale[64]</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The DC scaling factors. </p>
 
 </div>
 </div>
-<a class="anchor" id="a4ac56bf0a45b5743b36daf85d5cd9e33"></a><!-- doxytag: member="th_quant_info::loop_filter_limits" ref="a4ac56bf0a45b5743b36daf85d5cd9e33" args="[64]" -->
+<a id="a4ac56bf0a45b5743b36daf85d5cd9e33" name="a4ac56bf0a45b5743b36daf85d5cd9e33"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4ac56bf0a45b5743b36daf85d5cd9e33">&#9670;&nbsp;</a></span>loop_filter_limits</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info::loop_filter_limits</a>[64]</td>
+          <td class="memname">unsigned char th_quant_info::loop_filter_limits[64]</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The loop filter limit values. </p>
 
 </div>
 </div>
-<a class="anchor" id="a6feacf4b365e305a7df7b93d87ee7bb8"></a><!-- doxytag: member="th_quant_info::qi_ranges" ref="a6feacf4b365e305a7df7b93d87ee7bb8" args="[2][3]" -->
+<a id="a6feacf4b365e305a7df7b93d87ee7bb8" name="a6feacf4b365e305a7df7b93d87ee7bb8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6feacf4b365e305a7df7b93d87ee7bb8">&#9670;&nbsp;</a></span>qi_ranges</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a> <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info::qi_ranges</a>[2][3]</td>
+          <td class="memname"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a> th_quant_info::qi_ranges[2][3]</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The <em>qi</em> ranges for each <em>ci</em> and <em>pli</em>. </p>
 
@@ -131,9 +150,10 @@ Data Fields</h2></td></tr>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="codec_8h_source.html">codec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structth__quant__ranges.html b/doc/libtheora-1.2/structth__quant__ranges.html
index 3c0b7c4..dcfacf7 100644
--- a/doc/libtheora-1.2/structth__quant__ranges.html
+++ b/doc/libtheora-1.2/structth__quant__ranges.html
@@ -1,107 +1,127 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: th_quant_ranges Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>th_quant_ranges Struct Reference</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">th_quant_ranges Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="th_quant_ranges" -->
+
 <p>A set of <em>qi</em> ranges.  
-<a href="#_details">More...</a></p>
+ <a href="structth__quant__ranges.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">nranges</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of ranges in the set.  <a href="#a53e5a3d7f7a112100b4b670929b3ebab"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">sizes</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The size of each of the <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> ranges.  <a href="#af3188a373bc0b8ffaa330d0ab4c1a194"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">base_matrices</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> <code>+1</code> base matrices.  <a href="#a52cb432f034737087492ea448de20bdb"></a><br/></td></tr>
+<tr class="memitem:a53e5a3d7f7a112100b4b670929b3ebab"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">nranges</a></td></tr>
+<tr class="memdesc:a53e5a3d7f7a112100b4b670929b3ebab"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of ranges in the set.  <a href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">More...</a><br /></td></tr>
+<tr class="separator:a53e5a3d7f7a112100b4b670929b3ebab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af3188a373bc0b8ffaa330d0ab4c1a194"><td class="memItemLeft" align="right" valign="top">const int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">sizes</a></td></tr>
+<tr class="memdesc:af3188a373bc0b8ffaa330d0ab4c1a194"><td class="mdescLeft">&#160;</td><td class="mdescRight">The size of each of the <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> ranges.  <a href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">More...</a><br /></td></tr>
+<tr class="separator:af3188a373bc0b8ffaa330d0ab4c1a194"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a52cb432f034737087492ea448de20bdb"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">base_matrices</a></td></tr>
+<tr class="memdesc:a52cb432f034737087492ea448de20bdb"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> <code>+1</code> base matrices.  <a href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">More...</a><br /></td></tr>
+<tr class="separator:a52cb432f034737087492ea448de20bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A set of <em>qi</em> ranges. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a52cb432f034737087492ea448de20bdb"></a><!-- doxytag: member="th_quant_ranges::base_matrices" ref="a52cb432f034737087492ea448de20bdb" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >A set of <em>qi</em> ranges. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a52cb432f034737087492ea448de20bdb" name="a52cb432f034737087492ea448de20bdb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a52cb432f034737087492ea448de20bdb">&#9670;&nbsp;</a></span>base_matrices</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>* <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges::base_matrices</a></td>
+          <td class="memname">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>* th_quant_ranges::base_matrices</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> <code>+1</code> base matrices. </p>
-<p>Matrices <em>i</em> and <code>i+1</code> form the endpoints of range <em>i</em>. </p>
+<p >Matrices <em>i</em> and <code>i+1</code> form the endpoints of range <em>i</em>. </p>
 
 </div>
 </div>
-<a class="anchor" id="a53e5a3d7f7a112100b4b670929b3ebab"></a><!-- doxytag: member="th_quant_ranges::nranges" ref="a53e5a3d7f7a112100b4b670929b3ebab" args="" -->
+<a id="a53e5a3d7f7a112100b4b670929b3ebab" name="a53e5a3d7f7a112100b4b670929b3ebab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a53e5a3d7f7a112100b4b670929b3ebab">&#9670;&nbsp;</a></span>nranges</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges::nranges</a></td>
+          <td class="memname">int th_quant_ranges::nranges</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The number of ranges in the set. </p>
 
 </div>
 </div>
-<a class="anchor" id="af3188a373bc0b8ffaa330d0ab4c1a194"></a><!-- doxytag: member="th_quant_ranges::sizes" ref="af3188a373bc0b8ffaa330d0ab4c1a194" args="" -->
+<a id="af3188a373bc0b8ffaa330d0ab4c1a194" name="af3188a373bc0b8ffaa330d0ab4c1a194"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af3188a373bc0b8ffaa330d0ab4c1a194">&#9670;&nbsp;</a></span>sizes</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const int* <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges::sizes</a></td>
+          <td class="memname">const int* th_quant_ranges::sizes</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The size of each of the <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> ranges. </p>
-<p>These must sum to 63. </p>
+<p >These must sum to 63. </p>
 
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="codec_8h_source.html">codec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structth__stripe__callback.html b/doc/libtheora-1.2/structth__stripe__callback.html
index 4c5f4b3..5c19673 100644
--- a/doc/libtheora-1.2/structth__stripe__callback.html
+++ b/doc/libtheora-1.2/structth__stripe__callback.html
@@ -1,78 +1,95 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: th_stripe_callback Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>th_stripe_callback Struct Reference</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">th_stripe_callback Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="th_stripe_callback" -->
+
 <p>The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>.  
-<a href="#_details">More...</a></p>
+ <a href="structth__stripe__callback.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="theoradec_8h_source.html">theoradec.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">ctx</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An application-provided context pointer.  <a href="#ab895162ce29a411fa98e0ba9661f47d4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">stripe_decoded</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The callback function pointer.  <a href="#a977c725680a37e3446e459f063b1f4a5"></a><br/></td></tr>
+<tr class="memitem:ab895162ce29a411fa98e0ba9661f47d4"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">ctx</a></td></tr>
+<tr class="memdesc:ab895162ce29a411fa98e0ba9661f47d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">An application-provided context pointer.  <a href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">More...</a><br /></td></tr>
+<tr class="separator:ab895162ce29a411fa98e0ba9661f47d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a977c725680a37e3446e459f063b1f4a5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">th_stripe_decoded_func</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">stripe_decoded</a></td></tr>
+<tr class="memdesc:a977c725680a37e3446e459f063b1f4a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The callback function pointer.  <a href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">More...</a><br /></td></tr>
+<tr class="separator:a977c725680a37e3446e459f063b1f4a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="ab895162ce29a411fa98e0ba9661f47d4"></a><!-- doxytag: member="th_stripe_callback::ctx" ref="ab895162ce29a411fa98e0ba9661f47d4" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="ab895162ce29a411fa98e0ba9661f47d4" name="ab895162ce29a411fa98e0ba9661f47d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab895162ce29a411fa98e0ba9661f47d4">&#9670;&nbsp;</a></span>ctx</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void* <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback::ctx</a></td>
+          <td class="memname">void* th_stripe_callback::ctx</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>An application-provided context pointer. </p>
-<p>This will be passed back verbatim to the application. </p>
+<p >This will be passed back verbatim to the application. </p>
 
 </div>
 </div>
-<a class="anchor" id="a977c725680a37e3446e459f063b1f4a5"></a><!-- doxytag: member="th_stripe_callback::stripe_decoded" ref="a977c725680a37e3446e459f063b1f4a5" args="" -->
+<a id="a977c725680a37e3446e459f063b1f4a5" name="a977c725680a37e3446e459f063b1f4a5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a977c725680a37e3446e459f063b1f4a5">&#9670;&nbsp;</a></span>stripe_decoded</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a> <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback::stripe_decoded</a></td>
+          <td class="memname"><a class="el" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">th_stripe_decoded_func</a> th_stripe_callback::stripe_decoded</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The callback function pointer. </p>
 
@@ -81,9 +98,10 @@ Data Fields</h2></td></tr>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="theoradec_8h_source.html">theoradec.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structtheora__comment.html b/doc/libtheora-1.2/structtheora__comment.html
index 131dca7..00c2139 100644
--- a/doc/libtheora-1.2/structtheora__comment.html
+++ b/doc/libtheora-1.2/structtheora__comment.html
@@ -1,117 +1,135 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theora_comment Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>theora_comment Struct Reference<br/>
-<small>
-[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
-</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">theora_comment Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="theora_comment" -->
+
 <p>Comment header metadata.  
-<a href="#_details">More...</a></p>
+ <a href="structtheora__comment.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">user_comments</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of comment string vectors.  <a href="#a1e236fd180dfce19be89081399444cf5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">comment_lengths</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of corresponding string vector lengths in bytes.  <a href="#a5ab4a376d3c217282a684577c9c9f49a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">comments</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The total number of comment string vectors.  <a href="#a122393035c8352ff9be42d69e73aee00"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">vendor</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The vendor string identifying the encoder, null terminated.  <a href="#adb371baf8f0daed42af8b875cf8430ef"></a><br/></td></tr>
+<tr class="memitem:a1e236fd180dfce19be89081399444cf5"><td class="memItemLeft" align="right" valign="top">char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">user_comments</a></td></tr>
+<tr class="memdesc:a1e236fd180dfce19be89081399444cf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">An array of comment string vectors.  <a href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">More...</a><br /></td></tr>
+<tr class="separator:a1e236fd180dfce19be89081399444cf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ab4a376d3c217282a684577c9c9f49a"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">comment_lengths</a></td></tr>
+<tr class="memdesc:a5ab4a376d3c217282a684577c9c9f49a"><td class="mdescLeft">&#160;</td><td class="mdescRight">An array of corresponding string vector lengths in bytes.  <a href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">More...</a><br /></td></tr>
+<tr class="separator:a5ab4a376d3c217282a684577c9c9f49a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a122393035c8352ff9be42d69e73aee00"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">comments</a></td></tr>
+<tr class="memdesc:a122393035c8352ff9be42d69e73aee00"><td class="mdescLeft">&#160;</td><td class="mdescRight">The total number of comment string vectors.  <a href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">More...</a><br /></td></tr>
+<tr class="separator:a122393035c8352ff9be42d69e73aee00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adb371baf8f0daed42af8b875cf8430ef"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">vendor</a></td></tr>
+<tr class="memdesc:adb371baf8f0daed42af8b875cf8430ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">The vendor string identifying the encoder, null terminated.  <a href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">More...</a><br /></td></tr>
+<tr class="separator:adb371baf8f0daed42af8b875cf8430ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Comment header metadata. </p>
-<p>This structure holds the in-stream metadata corresponding to the 'comment' header packet.</p>
-<p>Meta data is stored as a series of (tag, value) pairs, in length-encoded string vectors. The first occurence of the '=' character delimits the tag and value. A particular tag may occur more than once. The character set encoding for the strings is always UTF-8, but the tag names are limited to case-insensitive ASCII. See the spec for details.</p>
-<p>In filling in this structure, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean, and so the length array should be treated as authoritative for their length. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a5ab4a376d3c217282a684577c9c9f49a"></a><!-- doxytag: member="theora_comment::comment_lengths" ref="a5ab4a376d3c217282a684577c9c9f49a" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >Comment header metadata. </p>
+<p >This structure holds the in-stream metadata corresponding to the 'comment' header packet.</p>
+<p >Meta data 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. The character set encoding for the strings is always UTF-8, but the tag names are limited to case-insensitive ASCII. See the spec for details.</p>
+<p >In filling in this structure, <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean, and so the length array should be treated as authoritative for their length. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a5ab4a376d3c217282a684577c9c9f49a" name="a5ab4a376d3c217282a684577c9c9f49a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5ab4a376d3c217282a684577c9c9f49a">&#9670;&nbsp;</a></span>comment_lengths</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int* <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment::comment_lengths</a></td>
+          <td class="memname">int* theora_comment::comment_lengths</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>An array of corresponding string vector lengths in bytes. </p>
 
 </div>
 </div>
-<a class="anchor" id="a122393035c8352ff9be42d69e73aee00"></a><!-- doxytag: member="theora_comment::comments" ref="a122393035c8352ff9be42d69e73aee00" args="" -->
+<a id="a122393035c8352ff9be42d69e73aee00" name="a122393035c8352ff9be42d69e73aee00"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a122393035c8352ff9be42d69e73aee00">&#9670;&nbsp;</a></span>comments</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment::comments</a></td>
+          <td class="memname">int theora_comment::comments</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The total number of comment string vectors. </p>
 
 </div>
 </div>
-<a class="anchor" id="a1e236fd180dfce19be89081399444cf5"></a><!-- doxytag: member="theora_comment::user_comments" ref="a1e236fd180dfce19be89081399444cf5" args="" -->
+<a id="a1e236fd180dfce19be89081399444cf5" name="a1e236fd180dfce19be89081399444cf5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e236fd180dfce19be89081399444cf5">&#9670;&nbsp;</a></span>user_comments</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char** <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment::user_comments</a></td>
+          <td class="memname">char** theora_comment::user_comments</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>An array of comment string vectors. </p>
 
 </div>
 </div>
-<a class="anchor" id="adb371baf8f0daed42af8b875cf8430ef"></a><!-- doxytag: member="theora_comment::vendor" ref="adb371baf8f0daed42af8b875cf8430ef" args="" -->
+<a id="adb371baf8f0daed42af8b875cf8430ef" name="adb371baf8f0daed42af8b875cf8430ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb371baf8f0daed42af8b875cf8430ef">&#9670;&nbsp;</a></span>vendor</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">char* <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment::vendor</a></td>
+          <td class="memname">char* theora_comment::vendor</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The vendor string identifying the encoder, null terminated. </p>
 
@@ -120,9 +138,10 @@ Data Fields</h2></td></tr>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="theora_8h_source.html">theora.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structtheora__info.html b/doc/libtheora-1.2/structtheora__info.html
index cf7a694..b7df79e 100644
--- a/doc/libtheora-1.2/structtheora__info.html
+++ b/doc/libtheora-1.2/structtheora__info.html
@@ -1,498 +1,569 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theora_info Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>theora_info Struct Reference<br/>
-<small>
-[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
-</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">theora_info Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="theora_info" -->
+
 <p>Theora bitstream info.  
-<a href="#_details">More...</a></p>
+ <a href="structtheora__info.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">width</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encoded frame width  <a href="#a17c2fc651bb3329f1ea6b13ff1d3957b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">height</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encoded frame height  <a href="#ae6f0274fc4a7f285c422d91abb35f9c6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">frame_width</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display frame width  <a href="#a8f28f4018a25634d40e4ae861fbbccfa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">frame_height</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display frame height  <a href="#a287e4c194f1d2e6deb39d59f1748ea48"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">offset_x</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">horizontal offset of the displayed frame  <a href="#af5949a02bef29512f2705e6f6c944e3b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">offset_y</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">vertical offset of the displayed frame  <a href="#a91c3922097ba32a85acd584a01dc2c93"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">fps_numerator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">frame rate numerator  <a href="#a3478199aa5ab213816c1819f70085ad7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">fps_denominator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">frame rate denominator  <a href="#a9aa7e826e0323a4ae8cd8646a6cfbfea"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">aspect_numerator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pixel aspect ratio numerator  <a href="#a5a3ed8c79815fba1aa06c3f7d8e48b35"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">aspect_denominator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pixel aspect ratio denominator  <a href="#afebc4d0cbfb34b68c833a8c79e83ae12"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">colorspace</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">colorspace  <a href="#a5eaba99c96706d47b426ab7b7602dc5d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">target_bitrate</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">nominal bitrate in bits per second  <a href="#a0cfba041767ae2416dd190a406afe713"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">quality</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Nominal quality setting, 0-63.  <a href="#a71a4748a5f31bd58d0e403b7806c980d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">quick_p</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Quick encode/decode.  <a href="#a2dfae4fd175dbd19254eaf0697778ff5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">version_major</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">version_minor</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">version_subminor</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">codec_setup</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">dropframes_p</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">keyframe_auto_p</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">keyframe_frequency</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">keyframe_frequency_force</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">keyframe_data_target_bitrate</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">keyframe_auto_threshold</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">keyframe_mindistance</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">noise_sensitivity</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">sharpness</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">pixelformat</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">chroma subsampling mode to expect  <a href="#a65ab4376ab5242ee82e06c78fb7008ab"></a><br/></td></tr>
+<tr class="memitem:a17c2fc651bb3329f1ea6b13ff1d3957b"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">width</a></td></tr>
+<tr class="memdesc:a17c2fc651bb3329f1ea6b13ff1d3957b"><td class="mdescLeft">&#160;</td><td class="mdescRight">encoded frame width <br  />
+  <a href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">More...</a><br /></td></tr>
+<tr class="separator:a17c2fc651bb3329f1ea6b13ff1d3957b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6f0274fc4a7f285c422d91abb35f9c6"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">height</a></td></tr>
+<tr class="memdesc:ae6f0274fc4a7f285c422d91abb35f9c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">encoded frame height  <a href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">More...</a><br /></td></tr>
+<tr class="separator:ae6f0274fc4a7f285c422d91abb35f9c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8f28f4018a25634d40e4ae861fbbccfa"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">frame_width</a></td></tr>
+<tr class="memdesc:a8f28f4018a25634d40e4ae861fbbccfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">display frame width <br  />
+  <a href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">More...</a><br /></td></tr>
+<tr class="separator:a8f28f4018a25634d40e4ae861fbbccfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a287e4c194f1d2e6deb39d59f1748ea48"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">frame_height</a></td></tr>
+<tr class="memdesc:a287e4c194f1d2e6deb39d59f1748ea48"><td class="mdescLeft">&#160;</td><td class="mdescRight">display frame height  <a href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">More...</a><br /></td></tr>
+<tr class="separator:a287e4c194f1d2e6deb39d59f1748ea48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5949a02bef29512f2705e6f6c944e3b"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">offset_x</a></td></tr>
+<tr class="memdesc:af5949a02bef29512f2705e6f6c944e3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">horizontal offset of the displayed frame  <a href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">More...</a><br /></td></tr>
+<tr class="separator:af5949a02bef29512f2705e6f6c944e3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a91c3922097ba32a85acd584a01dc2c93"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">offset_y</a></td></tr>
+<tr class="memdesc:a91c3922097ba32a85acd584a01dc2c93"><td class="mdescLeft">&#160;</td><td class="mdescRight">vertical offset of the displayed frame  <a href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">More...</a><br /></td></tr>
+<tr class="separator:a91c3922097ba32a85acd584a01dc2c93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3478199aa5ab213816c1819f70085ad7"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">fps_numerator</a></td></tr>
+<tr class="memdesc:a3478199aa5ab213816c1819f70085ad7"><td class="mdescLeft">&#160;</td><td class="mdescRight">frame rate numerator  <a href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">More...</a><br /></td></tr>
+<tr class="separator:a3478199aa5ab213816c1819f70085ad7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9aa7e826e0323a4ae8cd8646a6cfbfea"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">fps_denominator</a></td></tr>
+<tr class="memdesc:a9aa7e826e0323a4ae8cd8646a6cfbfea"><td class="mdescLeft">&#160;</td><td class="mdescRight">frame rate denominator  <a href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">More...</a><br /></td></tr>
+<tr class="separator:a9aa7e826e0323a4ae8cd8646a6cfbfea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a3ed8c79815fba1aa06c3f7d8e48b35"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">aspect_numerator</a></td></tr>
+<tr class="memdesc:a5a3ed8c79815fba1aa06c3f7d8e48b35"><td class="mdescLeft">&#160;</td><td class="mdescRight">pixel aspect ratio numerator  <a href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">More...</a><br /></td></tr>
+<tr class="separator:a5a3ed8c79815fba1aa06c3f7d8e48b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afebc4d0cbfb34b68c833a8c79e83ae12"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">aspect_denominator</a></td></tr>
+<tr class="memdesc:afebc4d0cbfb34b68c833a8c79e83ae12"><td class="mdescLeft">&#160;</td><td class="mdescRight">pixel aspect ratio denominator  <a href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">More...</a><br /></td></tr>
+<tr class="separator:afebc4d0cbfb34b68c833a8c79e83ae12"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5eaba99c96706d47b426ab7b7602dc5d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">colorspace</a></td></tr>
+<tr class="memdesc:a5eaba99c96706d47b426ab7b7602dc5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">colorspace  <a href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">More...</a><br /></td></tr>
+<tr class="separator:a5eaba99c96706d47b426ab7b7602dc5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0cfba041767ae2416dd190a406afe713"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">target_bitrate</a></td></tr>
+<tr class="memdesc:a0cfba041767ae2416dd190a406afe713"><td class="mdescLeft">&#160;</td><td class="mdescRight">nominal bitrate in bits per second  <a href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">More...</a><br /></td></tr>
+<tr class="separator:a0cfba041767ae2416dd190a406afe713"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a71a4748a5f31bd58d0e403b7806c980d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">quality</a></td></tr>
+<tr class="memdesc:a71a4748a5f31bd58d0e403b7806c980d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nominal quality setting, 0-63.  <a href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">More...</a><br /></td></tr>
+<tr class="separator:a71a4748a5f31bd58d0e403b7806c980d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2dfae4fd175dbd19254eaf0697778ff5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">quick_p</a></td></tr>
+<tr class="memdesc:a2dfae4fd175dbd19254eaf0697778ff5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Quick encode/decode.  <a href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">More...</a><br /></td></tr>
+<tr class="separator:a2dfae4fd175dbd19254eaf0697778ff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7c5ebb9e6700aaef87f29f7c6074e474"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">version_major</a></td></tr>
+<tr class="separator:a7c5ebb9e6700aaef87f29f7c6074e474"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75eda4f30270d833c7b9dba43932a06a"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">version_minor</a></td></tr>
+<tr class="separator:a75eda4f30270d833c7b9dba43932a06a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa07967ecd6e20bd2928ead42b6397b3d"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">version_subminor</a></td></tr>
+<tr class="separator:aa07967ecd6e20bd2928ead42b6397b3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a719a1d77a4a3bfeab79aa5747dbbb04c"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">codec_setup</a></td></tr>
+<tr class="separator:a719a1d77a4a3bfeab79aa5747dbbb04c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af294db65a8363a0bcf43f4727763b291"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">dropframes_p</a></td></tr>
+<tr class="separator:af294db65a8363a0bcf43f4727763b291"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23648173369174f687085c0ce85ef30e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">keyframe_auto_p</a></td></tr>
+<tr class="separator:a23648173369174f687085c0ce85ef30e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a03e1b3e337af5f9dabaaaeb9050f145a"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">keyframe_frequency</a></td></tr>
+<tr class="separator:a03e1b3e337af5f9dabaaaeb9050f145a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad9d2e22c44a53473010e6d1042dfe0d8"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">keyframe_frequency_force</a></td></tr>
+<tr class="separator:ad9d2e22c44a53473010e6d1042dfe0d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a588942d1ee90a26a7effdf6a0e98b9ce"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">keyframe_data_target_bitrate</a></td></tr>
+<tr class="separator:a588942d1ee90a26a7effdf6a0e98b9ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a95cb8958e29ad3d24047ee8f9e7fd99b"><td class="memItemLeft" align="right" valign="top">ogg_int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">keyframe_auto_threshold</a></td></tr>
+<tr class="separator:a95cb8958e29ad3d24047ee8f9e7fd99b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa79ca8c0e77a884d4487fd627fae32e9"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">keyframe_mindistance</a></td></tr>
+<tr class="separator:aa79ca8c0e77a884d4487fd627fae32e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4789034f547b57d1075e035050eeed9"><td class="memItemLeft" align="right" valign="top">ogg_int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">noise_sensitivity</a></td></tr>
+<tr class="separator:ac4789034f547b57d1075e035050eeed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3fb695de2b2f56dd0203b9e2eb0df1cc"><td class="memItemLeft" align="right" valign="top">ogg_int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">sharpness</a></td></tr>
+<tr class="separator:a3fb695de2b2f56dd0203b9e2eb0df1cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65ab4376ab5242ee82e06c78fb7008ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">pixelformat</a></td></tr>
+<tr class="memdesc:a65ab4376ab5242ee82e06c78fb7008ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">chroma subsampling mode to expect  <a href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">More...</a><br /></td></tr>
+<tr class="separator:a65ab4376ab5242ee82e06c78fb7008ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Theora bitstream info. </p>
-<p>Contains the basic playback parameters for a stream, corresponding to the initial 'info' header packet.</p>
-<p>Encoded theora frames must be a multiple of 16 in width and height. To handle other frame sizes, a crop rectangle is specified in frame_height and frame_width, offset_x and * offset_y. The offset and size should still be a multiple of 2 to avoid chroma sampling shifts. Offset values in this structure are measured from the upper left of the image.</p>
-<p>Frame rate, in frames per second, is stored as a rational fraction. Aspect ratio is also stored as a rational fraction, and refers to the aspect ratio of the frame pixels, not of the overall frame itself.</p>
-<p>See <a href="http://svn.xiph.org/trunk/theora/examples/encoder_example.c">examples/encoder_example.c</a> for usage examples of the other paramters and good default settings for the encoder parameters. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="afebc4d0cbfb34b68c833a8c79e83ae12"></a><!-- doxytag: member="theora_info::aspect_denominator" ref="afebc4d0cbfb34b68c833a8c79e83ae12" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >Theora bitstream info. </p>
+<p >Contains the basic playback parameters for a stream, corresponding to the initial 'info' header packet.</p>
+<p >Encoded theora frames must be a multiple of 16 in width and height. To handle other frame sizes, a crop rectangle is specified in frame_height and frame_width, offset_x and * offset_y. The offset and size should still be a multiple of 2 to avoid chroma sampling shifts. Offset values in this structure are measured from the upper left of the image.</p>
+<p >Frame rate, in frames per second, is stored as a rational fraction. Aspect ratio is also stored as a rational fraction, and refers to the aspect ratio of the frame pixels, not of the overall frame itself.</p>
+<p >See <a href="http://svn.xiph.org/trunk/theora/examples/encoder_example.c">examples/encoder_example.c</a> for usage examples of the other parameters and good default settings for the encoder parameters. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="afebc4d0cbfb34b68c833a8c79e83ae12" name="afebc4d0cbfb34b68c833a8c79e83ae12"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afebc4d0cbfb34b68c833a8c79e83ae12">&#9670;&nbsp;</a></span>aspect_denominator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info::aspect_denominator</a></td>
+          <td class="memname">ogg_uint32_t theora_info::aspect_denominator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>pixel aspect ratio denominator </p>
 
 </div>
 </div>
-<a class="anchor" id="a5a3ed8c79815fba1aa06c3f7d8e48b35"></a><!-- doxytag: member="theora_info::aspect_numerator" ref="a5a3ed8c79815fba1aa06c3f7d8e48b35" args="" -->
+<a id="a5a3ed8c79815fba1aa06c3f7d8e48b35" name="a5a3ed8c79815fba1aa06c3f7d8e48b35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a3ed8c79815fba1aa06c3f7d8e48b35">&#9670;&nbsp;</a></span>aspect_numerator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info::aspect_numerator</a></td>
+          <td class="memname">ogg_uint32_t theora_info::aspect_numerator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>pixel aspect ratio numerator </p>
 
 </div>
 </div>
-<a class="anchor" id="a719a1d77a4a3bfeab79aa5747dbbb04c"></a><!-- doxytag: member="theora_info::codec_setup" ref="a719a1d77a4a3bfeab79aa5747dbbb04c" args="" -->
+<a id="a719a1d77a4a3bfeab79aa5747dbbb04c" name="a719a1d77a4a3bfeab79aa5747dbbb04c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a719a1d77a4a3bfeab79aa5747dbbb04c">&#9670;&nbsp;</a></span>codec_setup</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void* <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info::codec_setup</a></td>
+          <td class="memname">void* theora_info::codec_setup</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a5eaba99c96706d47b426ab7b7602dc5d"></a><!-- doxytag: member="theora_info::colorspace" ref="a5eaba99c96706d47b426ab7b7602dc5d" args="" -->
+<a id="a5eaba99c96706d47b426ab7b7602dc5d" name="a5eaba99c96706d47b426ab7b7602dc5d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5eaba99c96706d47b426ab7b7602dc5d">&#9670;&nbsp;</a></span>colorspace</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info::colorspace</a></td>
+          <td class="memname"><a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> theora_info::colorspace</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>colorspace </p>
 
 </div>
 </div>
-<a class="anchor" id="af294db65a8363a0bcf43f4727763b291"></a><!-- doxytag: member="theora_info::dropframes_p" ref="af294db65a8363a0bcf43f4727763b291" args="" -->
+<a id="af294db65a8363a0bcf43f4727763b291" name="af294db65a8363a0bcf43f4727763b291"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af294db65a8363a0bcf43f4727763b291">&#9670;&nbsp;</a></span>dropframes_p</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info::dropframes_p</a></td>
+          <td class="memname">int theora_info::dropframes_p</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a9aa7e826e0323a4ae8cd8646a6cfbfea"></a><!-- doxytag: member="theora_info::fps_denominator" ref="a9aa7e826e0323a4ae8cd8646a6cfbfea" args="" -->
+<a id="a9aa7e826e0323a4ae8cd8646a6cfbfea" name="a9aa7e826e0323a4ae8cd8646a6cfbfea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9aa7e826e0323a4ae8cd8646a6cfbfea">&#9670;&nbsp;</a></span>fps_denominator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info::fps_denominator</a></td>
+          <td class="memname">ogg_uint32_t theora_info::fps_denominator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>frame rate denominator </p>
 
 </div>
 </div>
-<a class="anchor" id="a3478199aa5ab213816c1819f70085ad7"></a><!-- doxytag: member="theora_info::fps_numerator" ref="a3478199aa5ab213816c1819f70085ad7" args="" -->
+<a id="a3478199aa5ab213816c1819f70085ad7" name="a3478199aa5ab213816c1819f70085ad7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3478199aa5ab213816c1819f70085ad7">&#9670;&nbsp;</a></span>fps_numerator</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info::fps_numerator</a></td>
+          <td class="memname">ogg_uint32_t theora_info::fps_numerator</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>frame rate numerator </p>
 
 </div>
 </div>
-<a class="anchor" id="a287e4c194f1d2e6deb39d59f1748ea48"></a><!-- doxytag: member="theora_info::frame_height" ref="a287e4c194f1d2e6deb39d59f1748ea48" args="" -->
+<a id="a287e4c194f1d2e6deb39d59f1748ea48" name="a287e4c194f1d2e6deb39d59f1748ea48"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a287e4c194f1d2e6deb39d59f1748ea48">&#9670;&nbsp;</a></span>frame_height</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info::frame_height</a></td>
+          <td class="memname">ogg_uint32_t theora_info::frame_height</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>display frame height </p>
 
 </div>
 </div>
-<a class="anchor" id="a8f28f4018a25634d40e4ae861fbbccfa"></a><!-- doxytag: member="theora_info::frame_width" ref="a8f28f4018a25634d40e4ae861fbbccfa" args="" -->
+<a id="a8f28f4018a25634d40e4ae861fbbccfa" name="a8f28f4018a25634d40e4ae861fbbccfa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8f28f4018a25634d40e4ae861fbbccfa">&#9670;&nbsp;</a></span>frame_width</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info::frame_width</a></td>
+          <td class="memname">ogg_uint32_t theora_info::frame_width</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>display frame width </p>
+<p>display frame width <br  />
+ </p>
 
 </div>
 </div>
-<a class="anchor" id="ae6f0274fc4a7f285c422d91abb35f9c6"></a><!-- doxytag: member="theora_info::height" ref="ae6f0274fc4a7f285c422d91abb35f9c6" args="" -->
+<a id="ae6f0274fc4a7f285c422d91abb35f9c6" name="ae6f0274fc4a7f285c422d91abb35f9c6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae6f0274fc4a7f285c422d91abb35f9c6">&#9670;&nbsp;</a></span>height</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info::height</a></td>
+          <td class="memname">ogg_uint32_t theora_info::height</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>encoded frame height </p>
 
 </div>
 </div>
-<a class="anchor" id="a23648173369174f687085c0ce85ef30e"></a><!-- doxytag: member="theora_info::keyframe_auto_p" ref="a23648173369174f687085c0ce85ef30e" args="" -->
+<a id="a23648173369174f687085c0ce85ef30e" name="a23648173369174f687085c0ce85ef30e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a23648173369174f687085c0ce85ef30e">&#9670;&nbsp;</a></span>keyframe_auto_p</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info::keyframe_auto_p</a></td>
+          <td class="memname">int theora_info::keyframe_auto_p</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a95cb8958e29ad3d24047ee8f9e7fd99b"></a><!-- doxytag: member="theora_info::keyframe_auto_threshold" ref="a95cb8958e29ad3d24047ee8f9e7fd99b" args="" -->
+<a id="a95cb8958e29ad3d24047ee8f9e7fd99b" name="a95cb8958e29ad3d24047ee8f9e7fd99b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a95cb8958e29ad3d24047ee8f9e7fd99b">&#9670;&nbsp;</a></span>keyframe_auto_threshold</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info::keyframe_auto_threshold</a></td>
+          <td class="memname">ogg_int32_t theora_info::keyframe_auto_threshold</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a588942d1ee90a26a7effdf6a0e98b9ce"></a><!-- doxytag: member="theora_info::keyframe_data_target_bitrate" ref="a588942d1ee90a26a7effdf6a0e98b9ce" args="" -->
+<a id="a588942d1ee90a26a7effdf6a0e98b9ce" name="a588942d1ee90a26a7effdf6a0e98b9ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a588942d1ee90a26a7effdf6a0e98b9ce">&#9670;&nbsp;</a></span>keyframe_data_target_bitrate</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info::keyframe_data_target_bitrate</a></td>
+          <td class="memname">ogg_uint32_t theora_info::keyframe_data_target_bitrate</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a03e1b3e337af5f9dabaaaeb9050f145a"></a><!-- doxytag: member="theora_info::keyframe_frequency" ref="a03e1b3e337af5f9dabaaaeb9050f145a" args="" -->
+<a id="a03e1b3e337af5f9dabaaaeb9050f145a" name="a03e1b3e337af5f9dabaaaeb9050f145a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a03e1b3e337af5f9dabaaaeb9050f145a">&#9670;&nbsp;</a></span>keyframe_frequency</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info::keyframe_frequency</a></td>
+          <td class="memname">ogg_uint32_t theora_info::keyframe_frequency</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="ad9d2e22c44a53473010e6d1042dfe0d8"></a><!-- doxytag: member="theora_info::keyframe_frequency_force" ref="ad9d2e22c44a53473010e6d1042dfe0d8" args="" -->
+<a id="ad9d2e22c44a53473010e6d1042dfe0d8" name="ad9d2e22c44a53473010e6d1042dfe0d8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad9d2e22c44a53473010e6d1042dfe0d8">&#9670;&nbsp;</a></span>keyframe_frequency_force</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info::keyframe_frequency_force</a></td>
+          <td class="memname">ogg_uint32_t theora_info::keyframe_frequency_force</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="aa79ca8c0e77a884d4487fd627fae32e9"></a><!-- doxytag: member="theora_info::keyframe_mindistance" ref="aa79ca8c0e77a884d4487fd627fae32e9" args="" -->
+<a id="aa79ca8c0e77a884d4487fd627fae32e9" name="aa79ca8c0e77a884d4487fd627fae32e9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa79ca8c0e77a884d4487fd627fae32e9">&#9670;&nbsp;</a></span>keyframe_mindistance</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info::keyframe_mindistance</a></td>
+          <td class="memname">ogg_uint32_t theora_info::keyframe_mindistance</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="ac4789034f547b57d1075e035050eeed9"></a><!-- doxytag: member="theora_info::noise_sensitivity" ref="ac4789034f547b57d1075e035050eeed9" args="" -->
+<a id="ac4789034f547b57d1075e035050eeed9" name="ac4789034f547b57d1075e035050eeed9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4789034f547b57d1075e035050eeed9">&#9670;&nbsp;</a></span>noise_sensitivity</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info::noise_sensitivity</a></td>
+          <td class="memname">ogg_int32_t theora_info::noise_sensitivity</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="af5949a02bef29512f2705e6f6c944e3b"></a><!-- doxytag: member="theora_info::offset_x" ref="af5949a02bef29512f2705e6f6c944e3b" args="" -->
+<a id="af5949a02bef29512f2705e6f6c944e3b" name="af5949a02bef29512f2705e6f6c944e3b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af5949a02bef29512f2705e6f6c944e3b">&#9670;&nbsp;</a></span>offset_x</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info::offset_x</a></td>
+          <td class="memname">ogg_uint32_t theora_info::offset_x</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>horizontal offset of the displayed frame </p>
 
 </div>
 </div>
-<a class="anchor" id="a91c3922097ba32a85acd584a01dc2c93"></a><!-- doxytag: member="theora_info::offset_y" ref="a91c3922097ba32a85acd584a01dc2c93" args="" -->
+<a id="a91c3922097ba32a85acd584a01dc2c93" name="a91c3922097ba32a85acd584a01dc2c93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a91c3922097ba32a85acd584a01dc2c93">&#9670;&nbsp;</a></span>offset_y</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info::offset_y</a></td>
+          <td class="memname">ogg_uint32_t theora_info::offset_y</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>vertical offset of the displayed frame </p>
 
 </div>
 </div>
-<a class="anchor" id="a65ab4376ab5242ee82e06c78fb7008ab"></a><!-- doxytag: member="theora_info::pixelformat" ref="a65ab4376ab5242ee82e06c78fb7008ab" args="" -->
+<a id="a65ab4376ab5242ee82e06c78fb7008ab" name="a65ab4376ab5242ee82e06c78fb7008ab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65ab4376ab5242ee82e06c78fb7008ab">&#9670;&nbsp;</a></span>pixelformat</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info::pixelformat</a></td>
+          <td class="memname"><a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> theora_info::pixelformat</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>chroma subsampling mode to expect </p>
 
 </div>
 </div>
-<a class="anchor" id="a71a4748a5f31bd58d0e403b7806c980d"></a><!-- doxytag: member="theora_info::quality" ref="a71a4748a5f31bd58d0e403b7806c980d" args="" -->
+<a id="a71a4748a5f31bd58d0e403b7806c980d" name="a71a4748a5f31bd58d0e403b7806c980d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a71a4748a5f31bd58d0e403b7806c980d">&#9670;&nbsp;</a></span>quality</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info::quality</a></td>
+          <td class="memname">int theora_info::quality</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Nominal quality setting, 0-63. </p>
 
 </div>
 </div>
-<a class="anchor" id="a2dfae4fd175dbd19254eaf0697778ff5"></a><!-- doxytag: member="theora_info::quick_p" ref="a2dfae4fd175dbd19254eaf0697778ff5" args="" -->
+<a id="a2dfae4fd175dbd19254eaf0697778ff5" name="a2dfae4fd175dbd19254eaf0697778ff5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2dfae4fd175dbd19254eaf0697778ff5">&#9670;&nbsp;</a></span>quick_p</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info::quick_p</a></td>
+          <td class="memname">int theora_info::quick_p</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Quick encode/decode. </p>
 
 </div>
 </div>
-<a class="anchor" id="a3fb695de2b2f56dd0203b9e2eb0df1cc"></a><!-- doxytag: member="theora_info::sharpness" ref="a3fb695de2b2f56dd0203b9e2eb0df1cc" args="" -->
+<a id="a3fb695de2b2f56dd0203b9e2eb0df1cc" name="a3fb695de2b2f56dd0203b9e2eb0df1cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3fb695de2b2f56dd0203b9e2eb0df1cc">&#9670;&nbsp;</a></span>sharpness</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info::sharpness</a></td>
+          <td class="memname">ogg_int32_t theora_info::sharpness</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a0cfba041767ae2416dd190a406afe713"></a><!-- doxytag: member="theora_info::target_bitrate" ref="a0cfba041767ae2416dd190a406afe713" args="" -->
+<a id="a0cfba041767ae2416dd190a406afe713" name="a0cfba041767ae2416dd190a406afe713"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0cfba041767ae2416dd190a406afe713">&#9670;&nbsp;</a></span>target_bitrate</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info::target_bitrate</a></td>
+          <td class="memname">int theora_info::target_bitrate</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>nominal bitrate in bits per second </p>
 
 </div>
 </div>
-<a class="anchor" id="a7c5ebb9e6700aaef87f29f7c6074e474"></a><!-- doxytag: member="theora_info::version_major" ref="a7c5ebb9e6700aaef87f29f7c6074e474" args="" -->
+<a id="a7c5ebb9e6700aaef87f29f7c6074e474" name="a7c5ebb9e6700aaef87f29f7c6074e474"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7c5ebb9e6700aaef87f29f7c6074e474">&#9670;&nbsp;</a></span>version_major</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info::version_major</a></td>
+          <td class="memname">unsigned char theora_info::version_major</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a75eda4f30270d833c7b9dba43932a06a"></a><!-- doxytag: member="theora_info::version_minor" ref="a75eda4f30270d833c7b9dba43932a06a" args="" -->
+<a id="a75eda4f30270d833c7b9dba43932a06a" name="a75eda4f30270d833c7b9dba43932a06a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a75eda4f30270d833c7b9dba43932a06a">&#9670;&nbsp;</a></span>version_minor</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info::version_minor</a></td>
+          <td class="memname">unsigned char theora_info::version_minor</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="aa07967ecd6e20bd2928ead42b6397b3d"></a><!-- doxytag: member="theora_info::version_subminor" ref="aa07967ecd6e20bd2928ead42b6397b3d" args="" -->
+<a id="aa07967ecd6e20bd2928ead42b6397b3d" name="aa07967ecd6e20bd2928ead42b6397b3d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa07967ecd6e20bd2928ead42b6397b3d">&#9670;&nbsp;</a></span>version_subminor</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info::version_subminor</a></td>
+          <td class="memname">unsigned char theora_info::version_subminor</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a17c2fc651bb3329f1ea6b13ff1d3957b"></a><!-- doxytag: member="theora_info::width" ref="a17c2fc651bb3329f1ea6b13ff1d3957b" args="" -->
+<a id="a17c2fc651bb3329f1ea6b13ff1d3957b" name="a17c2fc651bb3329f1ea6b13ff1d3957b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a17c2fc651bb3329f1ea6b13ff1d3957b">&#9670;&nbsp;</a></span>width</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info::width</a></td>
+          <td class="memname">ogg_uint32_t theora_info::width</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>encoded frame width </p>
+<p>encoded frame width <br  />
+ </p>
 
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="theora_8h_source.html">theora.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structtheora__state.html b/doc/libtheora-1.2/structtheora__state.html
index ef22252..cfcc5e2 100644
--- a/doc/libtheora-1.2/structtheora__state.html
+++ b/doc/libtheora-1.2/structtheora__state.html
@@ -1,113 +1,132 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theora_state Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>theora_state Struct Reference<br/>
-<small>
-[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
-</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">theora_state Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="theora_state" -->
+
 <p>Codec internal state and context.  
-<a href="#_details">More...</a></p>
+ <a href="structtheora__state.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">i</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">granulepos</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">internal_encode</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">internal_decode</a></td></tr>
+<tr class="memitem:a0efc7ac581ef260b0ca17f518ace0731"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structtheora__info.html">theora_info</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">i</a></td></tr>
+<tr class="separator:a0efc7ac581ef260b0ca17f518ace0731"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5dd344a3f79ea7501b18c756772fab7b"><td class="memItemLeft" align="right" valign="top">ogg_int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">granulepos</a></td></tr>
+<tr class="separator:a5dd344a3f79ea7501b18c756772fab7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fbfd82fb7210cbcc4233cb680ec2af6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">internal_encode</a></td></tr>
+<tr class="separator:a1fbfd82fb7210cbcc4233cb680ec2af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad20c4eebbc5ed9764cf03ba8b90e796e"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">internal_decode</a></td></tr>
+<tr class="separator:ad20c4eebbc5ed9764cf03ba8b90e796e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Codec internal state and context. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a5dd344a3f79ea7501b18c756772fab7b"></a><!-- doxytag: member="theora_state::granulepos" ref="a5dd344a3f79ea7501b18c756772fab7b" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >Codec internal state and context. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a5dd344a3f79ea7501b18c756772fab7b" name="a5dd344a3f79ea7501b18c756772fab7b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5dd344a3f79ea7501b18c756772fab7b">&#9670;&nbsp;</a></span>granulepos</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ogg_int64_t <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state::granulepos</a></td>
+          <td class="memname">ogg_int64_t theora_state::granulepos</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a0efc7ac581ef260b0ca17f518ace0731"></a><!-- doxytag: member="theora_state::i" ref="a0efc7ac581ef260b0ca17f518ace0731" args="" -->
+<a id="a0efc7ac581ef260b0ca17f518ace0731" name="a0efc7ac581ef260b0ca17f518ace0731"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0efc7ac581ef260b0ca17f518ace0731">&#9670;&nbsp;</a></span>i</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="structtheora__info.html">theora_info</a>* <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state::i</a></td>
+          <td class="memname"><a class="el" href="structtheora__info.html">theora_info</a>* theora_state::i</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="ad20c4eebbc5ed9764cf03ba8b90e796e"></a><!-- doxytag: member="theora_state::internal_decode" ref="ad20c4eebbc5ed9764cf03ba8b90e796e" args="" -->
+<a id="ad20c4eebbc5ed9764cf03ba8b90e796e" name="ad20c4eebbc5ed9764cf03ba8b90e796e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad20c4eebbc5ed9764cf03ba8b90e796e">&#9670;&nbsp;</a></span>internal_decode</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void* <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state::internal_decode</a></td>
+          <td class="memname">void* theora_state::internal_decode</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a1fbfd82fb7210cbcc4233cb680ec2af6"></a><!-- doxytag: member="theora_state::internal_encode" ref="a1fbfd82fb7210cbcc4233cb680ec2af6" args="" -->
+<a id="a1fbfd82fb7210cbcc4233cb680ec2af6" name="a1fbfd82fb7210cbcc4233cb680ec2af6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fbfd82fb7210cbcc4233cb680ec2af6">&#9670;&nbsp;</a></span>internal_encode</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void* <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state::internal_encode</a></td>
+          <td class="memname">void* theora_state::internal_encode</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="theora_8h_source.html">theora.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/structyuv__buffer.html b/doc/libtheora-1.2/structyuv__buffer.html
index afa5dd9..93b6e22 100644
--- a/doc/libtheora-1.2/structyuv__buffer.html
+++ b/doc/libtheora-1.2/structyuv__buffer.html
@@ -1,203 +1,231 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: yuv_buffer Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>yuv_buffer Struct Reference<br/>
-<small>
-[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
-</h1>  </div>
-</div>
+  <div class="headertitle"><div class="title">yuv_buffer Struct Reference</div></div>
+</div><!--header-->
 <div class="contents">
-<!-- doxytag: class="yuv_buffer" -->
+
 <p>A YUV buffer for passing uncompressed frames to and from the codec.  
-<a href="#_details">More...</a></p>
+ <a href="structyuv__buffer.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">y_width</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Width of the Y' luminance plane.  <a href="#aaa6c06c071da933231647238418d5fc0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">y_height</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Height of the luminance plane.  <a href="#a5a8b60e012247e2caffcbbaca99414e0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">y_stride</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset in bytes between successive rows.  <a href="#a9cdf61834c11b2351640a4a243ad0549"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">uv_width</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Width of the Cb and Cr chroma planes.  <a href="#a8c59a57c35af0be519ee47f15e49fe2b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">uv_height</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Height of the chroma planes.  <a href="#a640f1a0b456d3807f9f0538b22f10097"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">uv_stride</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset between successive chroma rows.  <a href="#ab265cc24ffb5650bf52daf223b0debb9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">y</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of luminance data.  <a href="#a725727c70eeced6b8c90866973399ac1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">u</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of Cb data.  <a href="#a8b1857afe3ffac28f259499a57a559e1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">v</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of Cr data.  <a href="#aa429491dd112adb0254672c59ef55075"></a><br/></td></tr>
+<tr class="memitem:aaa6c06c071da933231647238418d5fc0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">y_width</a></td></tr>
+<tr class="memdesc:aaa6c06c071da933231647238418d5fc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Width of the Y' luminance plane.  <a href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">More...</a><br /></td></tr>
+<tr class="separator:aaa6c06c071da933231647238418d5fc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a8b60e012247e2caffcbbaca99414e0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">y_height</a></td></tr>
+<tr class="memdesc:a5a8b60e012247e2caffcbbaca99414e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Height of the luminance plane.  <a href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">More...</a><br /></td></tr>
+<tr class="separator:a5a8b60e012247e2caffcbbaca99414e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cdf61834c11b2351640a4a243ad0549"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">y_stride</a></td></tr>
+<tr class="memdesc:a9cdf61834c11b2351640a4a243ad0549"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset in bytes between successive rows.  <a href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">More...</a><br /></td></tr>
+<tr class="separator:a9cdf61834c11b2351640a4a243ad0549"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c59a57c35af0be519ee47f15e49fe2b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">uv_width</a></td></tr>
+<tr class="memdesc:a8c59a57c35af0be519ee47f15e49fe2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Width of the Cb and Cr chroma planes.  <a href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">More...</a><br /></td></tr>
+<tr class="separator:a8c59a57c35af0be519ee47f15e49fe2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a640f1a0b456d3807f9f0538b22f10097"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">uv_height</a></td></tr>
+<tr class="memdesc:a640f1a0b456d3807f9f0538b22f10097"><td class="mdescLeft">&#160;</td><td class="mdescRight">Height of the chroma planes.  <a href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">More...</a><br /></td></tr>
+<tr class="separator:a640f1a0b456d3807f9f0538b22f10097"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab265cc24ffb5650bf52daf223b0debb9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">uv_stride</a></td></tr>
+<tr class="memdesc:ab265cc24ffb5650bf52daf223b0debb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset between successive chroma rows.  <a href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">More...</a><br /></td></tr>
+<tr class="separator:ab265cc24ffb5650bf52daf223b0debb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a725727c70eeced6b8c90866973399ac1"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">y</a></td></tr>
+<tr class="memdesc:a725727c70eeced6b8c90866973399ac1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to start of luminance data.  <a href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">More...</a><br /></td></tr>
+<tr class="separator:a725727c70eeced6b8c90866973399ac1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b1857afe3ffac28f259499a57a559e1"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">u</a></td></tr>
+<tr class="memdesc:a8b1857afe3ffac28f259499a57a559e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to start of Cb data.  <a href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">More...</a><br /></td></tr>
+<tr class="separator:a8b1857afe3ffac28f259499a57a559e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa429491dd112adb0254672c59ef55075"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">v</a></td></tr>
+<tr class="memdesc:aa429491dd112adb0254672c59ef55075"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to start of Cr data.  <a href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">More...</a><br /></td></tr>
+<tr class="separator:aa429491dd112adb0254672c59ef55075"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A YUV buffer for passing uncompressed frames to and from the codec. </p>
-<p>This holds a Y'CbCr frame in planar format. The CbCr planes can be subsampled and have their own separate dimensions and row stride offsets. Note that the strides may be negative in some configurations. For theora the width and height of the largest plane must be a multiple of 16. The actual meaningful picture size and offset are stored in the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure; frames returned by the decoder may need to be cropped for display.</p>
-<p>All samples are 8 bits. Within each plane samples are ordered by row from the top of the frame to the bottom. Within each row samples are ordered from left to right.</p>
-<p>During decode, the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct is allocated by the user, but all fields (including luma and chroma pointers) are filled by the library. These pointers address library-internal memory and their contents should not be modified.</p>
-<p>Conversely, during encode the user allocates the struct and fills out all fields. The user also manages the data addressed by the luma and chroma pointers. See the encoder_example.c and dump_video.c example files in theora/examples/ for more information. </p>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a8b1857afe3ffac28f259499a57a559e1"></a><!-- doxytag: member="yuv_buffer::u" ref="a8b1857afe3ffac28f259499a57a559e1" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >A YUV buffer for passing uncompressed frames to and from the codec. </p>
+<p >This holds a Y'CbCr frame in planar format. The CbCr planes can be subsampled and have their own separate dimensions and row stride offsets. Note that the strides may be negative in some configurations. For theora the width and height of the largest plane must be a multiple of 16. The actual meaningful picture size and offset are stored in the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure; frames returned by the decoder may need to be cropped for display.</p>
+<p >All samples are 8 bits. Within each plane samples are ordered by row from the top of the frame to the bottom. Within each row samples are ordered from left to right.</p>
+<p >During decode, the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct is allocated by the user, but all fields (including luma and chroma pointers) are filled by the library. These pointers address library-internal memory and their contents should not be modified.</p>
+<p >Conversely, during encode the user allocates the struct and fills out all fields. The user also manages the data addressed by the luma and chroma pointers. See the encoder_example.c and dump_video.c example files in theora/examples/ for more information. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a8b1857afe3ffac28f259499a57a559e1" name="a8b1857afe3ffac28f259499a57a559e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8b1857afe3ffac28f259499a57a559e1">&#9670;&nbsp;</a></span>u</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer::u</a></td>
+          <td class="memname">unsigned char* yuv_buffer::u</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Pointer to start of Cb data. </p>
 
 </div>
 </div>
-<a class="anchor" id="a640f1a0b456d3807f9f0538b22f10097"></a><!-- doxytag: member="yuv_buffer::uv_height" ref="a640f1a0b456d3807f9f0538b22f10097" args="" -->
+<a id="a640f1a0b456d3807f9f0538b22f10097" name="a640f1a0b456d3807f9f0538b22f10097"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a640f1a0b456d3807f9f0538b22f10097">&#9670;&nbsp;</a></span>uv_height</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer::uv_height</a></td>
+          <td class="memname">int yuv_buffer::uv_height</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Height of the chroma planes. </p>
 
 </div>
 </div>
-<a class="anchor" id="ab265cc24ffb5650bf52daf223b0debb9"></a><!-- doxytag: member="yuv_buffer::uv_stride" ref="ab265cc24ffb5650bf52daf223b0debb9" args="" -->
+<a id="ab265cc24ffb5650bf52daf223b0debb9" name="ab265cc24ffb5650bf52daf223b0debb9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab265cc24ffb5650bf52daf223b0debb9">&#9670;&nbsp;</a></span>uv_stride</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer::uv_stride</a></td>
+          <td class="memname">int yuv_buffer::uv_stride</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Offset between successive chroma rows. </p>
 
 </div>
 </div>
-<a class="anchor" id="a8c59a57c35af0be519ee47f15e49fe2b"></a><!-- doxytag: member="yuv_buffer::uv_width" ref="a8c59a57c35af0be519ee47f15e49fe2b" args="" -->
+<a id="a8c59a57c35af0be519ee47f15e49fe2b" name="a8c59a57c35af0be519ee47f15e49fe2b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c59a57c35af0be519ee47f15e49fe2b">&#9670;&nbsp;</a></span>uv_width</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer::uv_width</a></td>
+          <td class="memname">int yuv_buffer::uv_width</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Width of the Cb and Cr chroma planes. </p>
 
 </div>
 </div>
-<a class="anchor" id="aa429491dd112adb0254672c59ef55075"></a><!-- doxytag: member="yuv_buffer::v" ref="aa429491dd112adb0254672c59ef55075" args="" -->
+<a id="aa429491dd112adb0254672c59ef55075" name="aa429491dd112adb0254672c59ef55075"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa429491dd112adb0254672c59ef55075">&#9670;&nbsp;</a></span>v</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer::v</a></td>
+          <td class="memname">unsigned char* yuv_buffer::v</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Pointer to start of Cr data. </p>
 
 </div>
 </div>
-<a class="anchor" id="a725727c70eeced6b8c90866973399ac1"></a><!-- doxytag: member="yuv_buffer::y" ref="a725727c70eeced6b8c90866973399ac1" args="" -->
+<a id="a725727c70eeced6b8c90866973399ac1" name="a725727c70eeced6b8c90866973399ac1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a725727c70eeced6b8c90866973399ac1">&#9670;&nbsp;</a></span>y</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer::y</a></td>
+          <td class="memname">unsigned char* yuv_buffer::y</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Pointer to start of luminance data. </p>
 
 </div>
 </div>
-<a class="anchor" id="a5a8b60e012247e2caffcbbaca99414e0"></a><!-- doxytag: member="yuv_buffer::y_height" ref="a5a8b60e012247e2caffcbbaca99414e0" args="" -->
+<a id="a5a8b60e012247e2caffcbbaca99414e0" name="a5a8b60e012247e2caffcbbaca99414e0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a8b60e012247e2caffcbbaca99414e0">&#9670;&nbsp;</a></span>y_height</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer::y_height</a></td>
+          <td class="memname">int yuv_buffer::y_height</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Height of the luminance plane. </p>
 
 </div>
 </div>
-<a class="anchor" id="a9cdf61834c11b2351640a4a243ad0549"></a><!-- doxytag: member="yuv_buffer::y_stride" ref="a9cdf61834c11b2351640a4a243ad0549" args="" -->
+<a id="a9cdf61834c11b2351640a4a243ad0549" name="a9cdf61834c11b2351640a4a243ad0549"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9cdf61834c11b2351640a4a243ad0549">&#9670;&nbsp;</a></span>y_stride</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer::y_stride</a></td>
+          <td class="memname">int yuv_buffer::y_stride</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Offset in bytes between successive rows. </p>
 
 </div>
 </div>
-<a class="anchor" id="aaa6c06c071da933231647238418d5fc0"></a><!-- doxytag: member="yuv_buffer::y_width" ref="aaa6c06c071da933231647238418d5fc0" args="" -->
+<a id="aaa6c06c071da933231647238418d5fc0" name="aaa6c06c071da933231647238418d5fc0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa6c06c071da933231647238418d5fc0">&#9670;&nbsp;</a></span>y_width</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer::y_width</a></td>
+          <td class="memname">int yuv_buffer::y_width</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Width of the Y' luminance plane. </p>
 
@@ -206,9 +234,10 @@ Data Fields</h2></td></tr>
 <hr/>The documentation for this struct was generated from the following file:<ul>
 <li><a class="el" href="theora_8h_source.html">theora.h</a></li>
 </ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/sync_off.png b/doc/libtheora-1.2/sync_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc
GIT binary patch
literal 853
zcmV-b1FHOqP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0009VNkl<ZcmeI*
zOK4PA7{KxW<S|JmGnqI|rb(KahDirA+8B+gVk8A)%pe9yF;+3L5iKZG7xuBS&@L(k
z33MTXOIxMHjirbWgs8M;qhM?(_-v^nS(KzU#%Ih_`hB-^XYSm&39)2*I6vmhow@fr
z=iKj{vvuv-e;!~uA+biR6pf-n<cdGVuox5<#BBg4c>oT|#XixUYy%lpuf3i8{fX!o
zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh
zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V
zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py;
zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK
zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh
zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO<q-Bsh$IuZaopT|9E
z-75alp&U9s%(|8uI^NA(#AD;nc=%{ivdZX(QFJ7~-yf%_Adjk`W@NhjJTyZ8*;|!n
z9=K#TJuZz+={YZ#>8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK&
z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sT<tBHx6XfOFDx2(ijpMiR>xLGlJY5nc&Re
zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y
zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb
zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E
f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j*

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/sync_on.png b/doc/libtheora-1.2/sync_on.png
new file mode 100644
index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76
GIT binary patch
literal 845
zcmV-T1G4;yP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0009NNkl<ZcmeI*
zUr1D09KiAKIOC-Ar)j4&EoU~y1|7@QCTmeCsMH~fFw#|0OWK8m>Y;xxyHF2B5Wzm|
zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I<ojWskx{8*sm){4kXJ+p2oO6HY
zoL5W7@h*VL_(ZL!7GaSmtl}SWU-XD;q7T4~4ZuW>_))aP?*T)ow&n59{}X4$3Goat
zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F<o_Z}1zllSWC8!Z+rkFN>={P0Y^?$4t
z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K
zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ
z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT
zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m
zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M
z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu
zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU#
z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+
z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a
z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$M<u9&-IHqnYs=DL+lbi3lG2ysF!p!_2H=p
zj-g89hmThki^;JHknVE4V`@zS$(ZbTd?1=dsrXLRiJbUBq7weAmVjEk@rP>j4Uq05
X8=0q~qBNan00000NkvXXu0mjfptF>5

literal 0
HcmV?d00001

diff --git a/doc/libtheora-1.2/tab_a.png b/doc/libtheora-1.2/tab_a.png
index 2d99ef23fed78c7683f0b5aa803d937060d288c4..3b725c41c5a527a3a3e40097077d0e206a681247 100644
GIT binary patch
delta 113
zcmV-%0FM8R0geHXBx+SjL_t(|0qvbj3V<*WLnm*fD2j+%#l7Gq+<5;Z*{QAP2nqR}
z!S?f}A6KSjBMmcj2}v0s95XABy!b`qeq0Yk9=#tquiN10l6OtFzxMxqe_8ck>OlfD
TS)Sv400000NkvXXu0mjf*h4XO

delta 111
zcmV-#0FeKV0gM5VBxqAfL_t(|0qvc;34lNp1b64jp`3`AD&~SsnAm?w2Jg;BhW$(p
zI<AMYZp`aWnHCrdwz0tkl8}TQ*iI(myk8)Y$*sx0ebu%&e(t{RPj_}L{{ZSi0yJ4E
R(R}~_002ovPDHLkV1oaGG5G)h

diff --git a/doc/libtheora-1.2/tab_b.png b/doc/libtheora-1.2/tab_b.png
index b2c3d2be3c7e518fbca6bb30f571882e72fc506d..e2b4a8638cb3496a016eaed9e16ffc12846dea18 100644
GIT binary patch
delta 141
zcmV;80CNAb0jU9yB!6&8L_t(|0qxyQ4uc>RMd8Q0(A2oN4s~GSz_eB{&>x`2eL8dp
zT|~jMkaNG}u7bAx%XOvre3E$i74E&jKK~gPF}n{Y8=!5(I0xKQ+0l61Ou$w991{_m
v-m(zHX%0n}isespgrbrefo^!<(&``6OBznHeiUi|0000<MFvhpu0mjf1=&Is

delta 150
zcmV;H0BQfJ0kQ#*B!78HL_t(|0qxz}4Z<K8fYCpEQ&!W6v|>UdP_Df=vx!f>I?0(t
zKHnd0dsF*K?I*b&<a#I(A(fp}4?^CFc_XBqSL{keaK7Vw!-a<P4Z9TVQkY%g;R@!N
z&^B?miJM&+=aq4ajMK{1L@p*U=)j;ogAPhWl!*KRJwPhyDi0jz*8l(j07*qoM6N<$
Ef^9uSK>z>%

diff --git a/doc/libtheora-1.2/tab_h.png b/doc/libtheora-1.2/tab_h.png
index c11f48f19bbe1f178d95397b98075bdd6d989328..fd5cb705488e60fcf30f56fcc951dee74f3b095b 100644
GIT binary patch
delta 149
zcmV;G0BZlh0kHv)B!75GL_t(|0qxyQ62U+ahT)!m5vAP5&XPrTh`$;lA(gU`WGdHk
z1V?cjJ&Jq0-&5VEkmu{I)5%E32^4itUiJ7}z+VH0qT^Twc6rPG(y=|aRzqfH=H?W8
zu=b6L2=la3=bR;9_2>VNqV~72jSdG9$8vRNwkSVmXck;)J`Q|y00000NkvXXu0mjf
D6ck2n

delta 164
zcmV;V09*gD0l)!}B!7oVL_t(|0qxz}34&l4fZ>n-rMielilPI8Xqs6b(hUF1GLI8B
zKx4E>cg^waA@9$ZOEHk@UWo{)9!PXglJ~@UN0_xl*Nz}-Ii`&g5f0}XKWXsd8aI03
zgcWvBVV|Cu{^QT^N{oHU#wpmkcUHTC^{!xHX_nTFrKOphS{;dqnv77h>G%f#Ln7el
SP(6SE0000<MNUMnLSTY<q)v_i

diff --git a/doc/libtheora-1.2/tab_s.png b/doc/libtheora-1.2/tab_s.png
index 978943ac807718de0e69e5a585a8f0a1e5999285..ab478c95b67371d700a20869f7de1ddd73522d50 100644
GIT binary patch
delta 156
zcmV;N0Av5X0k{E>B!7QNL_t(|0qxy^34%ZXK+&T=Q4$n|q#~N4C8kM{mx^YVHd`CC
zNW<h&gFN0E;`RQJU7loeAkBZ0b3Yo0Pd(A`@pmW8Mu(0d?eO+3esaT&Tb$^Mt?U}C
zZG#!stb-ceuh6}U)kY~<x+M#zU~U)8EIAQEpqY}XA<>Ln{S^f~#UuRg?v)<^0000<
KMNUMnLSTXuTSx)`

delta 161
zcmV;S0AByN0lfi`B!7fSL_t(|0qx!E34%}nK;cVgA|)siNkx32C8kNCHx(ag+H7sm
zA`R1z8sytUyxt%3+ml=_WaUp<%%sIaa-E4UkH3j1pNP&QVK(BQ27>gCn+!N{j~(~e
z#}4bzVMZ<cutg6VbiYCK8Z@tF=hkeUij7^dw&Y3(foe(=LmHwQC5j=xJjEmY1Hi<q
P00000NkvXXu0mjfm7qsF

diff --git a/doc/libtheora-1.2/tabs.css b/doc/libtheora-1.2/tabs.css
index 2192056..fb0977a 100644
--- a/doc/libtheora-1.2/tabs.css
+++ b/doc/libtheora-1.2/tabs.css
@@ -1,59 +1 @@
-.tabs, .tabs2, .tabs3 {
-    background-image: url('tab_b.png');
-    width: 100%;
-    z-index: 101;
-    font-size: 13px;
-}
-
-.tabs2 {
-    font-size: 10px;
-}
-.tabs3 {
-    font-size: 9px;
-}
-
-.tablist {
-    margin: 0;
-    padding: 0;
-    display: table;
-}
-
-.tablist li {
-    float: left;
-    display: table-cell;
-    background-image: url('tab_b.png');
-    line-height: 36px;
-    list-style: none;
-}
-
-.tablist a {
-    display: block;
-    padding: 0 20px;
-    font-weight: bold;
-    background-image:url('tab_s.png');
-    background-repeat:no-repeat;
-    background-position:right;
-    color: #283A5D;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
-    outline: none;
-}
-
-.tabs3 .tablist a {
-    padding: 0 10px;
-}
-
-.tablist a:hover {
-    background-image: url('tab_h.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-    text-decoration: none;
-}
-
-.tablist li.current a {
-    background-image: url('tab_a.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
diff --git a/doc/libtheora-1.2/theora_8h.html b/doc/libtheora-1.2/theora_8h.html
index 7961f26..a0edb78 100644
--- a/doc/libtheora-1.2/theora_8h.html
+++ b/doc/libtheora-1.2/theora_8h.html
@@ -1,230 +1,1775 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theora.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
 </div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Defines</a> &#124;
 <a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>theora.h File Reference</h1>  </div>
-</div>
+<a href="#enum-members">Enumerations</a>  </div>
+  <div class="headertitle"><div class="title">theora.h File Reference<div class="ingroups"><a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a></div></div></div>
+</div><!--header-->
 <div class="contents">
 
 <p>The libtheora pre-1.0 legacy C API.  
-<a href="#_details">More...</a></p>
-<code>#include &lt;stddef.h&gt;</code><br/>
-<code>#include &lt;ogg/ogg.h&gt;</code><br/>
-
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;stddef.h&gt;</code><br />
+<code>#include &lt;ogg/ogg.h&gt;</code><br />
+</div>
 <p><a href="theora_8h_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
 Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A YUV buffer for passing uncompressed frames to and from the codec.  <a href="structyuv__buffer.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html">theora_info</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream info.  <a href="structtheora__info.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html">theora_state</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Codec internal state and context.  <a href="structtheora__state.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html">theora_comment</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata.  <a href="structtheora__comment.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">OC_FAULT</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">General failure.  <a href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">OC_EINVAL</a>&nbsp;&nbsp;&nbsp;-10</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Library encountered invalid internal data.  <a href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">OC_DISABLED</a>&nbsp;&nbsp;&nbsp;-11</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Requested action is disabled.  <a href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">OC_BADHEADER</a>&nbsp;&nbsp;&nbsp;-20</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Header packet was corrupt/invalid.  <a href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">OC_NOTFORMAT</a>&nbsp;&nbsp;&nbsp;-21</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is not a theora packet.  <a href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">OC_VERSION</a>&nbsp;&nbsp;&nbsp;-22</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitstream version is not handled.  <a href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">OC_IMPL</a>&nbsp;&nbsp;&nbsp;-23</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Feature or action not implemented.  <a href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">OC_BADPACKET</a>&nbsp;&nbsp;&nbsp;-24</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is corrupt.  <a href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">OC_NEWPACKET</a>&nbsp;&nbsp;&nbsp;-25</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is an (ignorable) unhandled extension.  <a href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">OC_DUPFRAME</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is a dropped frame.  <a href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb"></a><br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">theora_control() codes</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp13fd61986cff4566fe89a40e30b74ad9"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum post-processing level.  <a href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the post-processing level.  <a href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the granule position.  <a href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use.  <a href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level.  <a href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level.  <a href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A YUV buffer for passing uncompressed frames to and from the codec.  <a href="structyuv__buffer.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html">theora_info</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theora bitstream info.  <a href="structtheora__info.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html">theora_state</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Codec internal state and context.  <a href="structtheora__state.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html">theora_comment</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Comment header metadata.  <a href="structtheora__comment.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
 Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structtheora__comment.html">theora_comment</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa504e8a56a4bf9c8e44f77d05aef0bb5">theora_comment</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata.  <a href="group__oldfuncs.html#gaa504e8a56a4bf9c8e44f77d05aef0bb5"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="enum-members"></a>
+<tr class="memitem:acaae73fc38efbc2ef0b0fb61dbbda3fc"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structtheora__comment.html">theora_comment</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#acaae73fc38efbc2ef0b0fb61dbbda3fc">theora_comment</a></td></tr>
+<tr class="memdesc:acaae73fc38efbc2ef0b0fb61dbbda3fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Comment header metadata.  <a href="theora_8h.html#acaae73fc38efbc2ef0b0fb61dbbda3fc">More...</a><br /></td></tr>
+<tr class="separator:acaae73fc38efbc2ef0b0fb61dbbda3fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
 Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> { <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>, 
-<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>, 
-<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>, 
-<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>
+<tr class="memitem:aa567da4ce591f7373149ce3ef3acdac9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> { <a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>
+, <a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>
+, <a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>
+, <a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>
  }</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Colorspace. </p>
- <a href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> { <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>, 
-<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>, 
-<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>, 
-<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>
+<tr class="memdesc:aa567da4ce591f7373149ce3ef3acdac9"><td class="mdescLeft">&#160;</td><td class="mdescRight">A Colorspace.  <a href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">More...</a><br /></td></tr>
+<tr class="separator:aa567da4ce591f7373149ce3ef3acdac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae169da05bfaaf4e964a6866552d45079"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> { <a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>
+, <a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>
+, <a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>
+, <a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>
  }</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Chroma subsampling. </p>
- <a href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora_version_string</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a human-readable string to identify the encoder vendor and version.  <a href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a> (void)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a 32-bit version number.  <a href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the theora encoder.  <a href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submit a YUV buffer to the theora encoder.  <a href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, int last_p, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request the next packet of encoded video.  <a href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora_encode_header</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the initial header.  <a href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a comment header packet from provided metadata.  <a href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the codebook tables for the stream.  <a href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ci, <a class="el" href="structtheora__comment.html">theora_comment</a> *cc, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.  <a href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding.  <a href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input a packet containing encoded data into the theora decoder.  <a href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output the next available frame of decoded YUV data.  <a href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a> (ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> for that.  <a href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a> (ogg_packet *op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a keyframe or not.  <a href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora_granule_shift</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report the granulepos shift radix.  <a href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to an absolute frame index, starting at 0.  <a href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to absolute time in seconds.  <a href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora_info_init</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.  <a href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora_comment_add</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *comment)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, char *value)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora_comment_query</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, int count)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by tag.  <a href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed.  <a href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora_control</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, int req, void *buf, size_t buf_sz)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9"></a><br/></td></tr>
+<tr class="memdesc:ae169da05bfaaf4e964a6866552d45079"><td class="mdescLeft">&#160;</td><td class="mdescRight">A Chroma subsampling.  <a href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">More...</a><br /></td></tr>
+<tr class="separator:ae169da05bfaaf4e964a6866552d45079"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">theora_control() codes</h2></td></tr>
+<tr class="memitem:ab31f251c9319f2140d247585d30b3d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&#160;&#160;&#160;(1)</td></tr>
+<tr class="memdesc:ab31f251c9319f2140d247585d30b3d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum post-processing level.  <a href="theora_8h.html#ab31f251c9319f2140d247585d30b3d07">More...</a><br /></td></tr>
+<tr class="separator:ab31f251c9319f2140d247585d30b3d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a87774c35e1a755a84e2d705b38ebef0d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&#160;&#160;&#160;(3)</td></tr>
+<tr class="memdesc:a87774c35e1a755a84e2d705b38ebef0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the post-processing level.  <a href="theora_8h.html#a87774c35e1a755a84e2d705b38ebef0d">More...</a><br /></td></tr>
+<tr class="separator:a87774c35e1a755a84e2d705b38ebef0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27e755e15b4b5604c54974b304037a49"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&#160;&#160;&#160;(4)</td></tr>
+<tr class="memdesc:a27e755e15b4b5604c54974b304037a49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="theora_8h.html#a27e755e15b4b5604c54974b304037a49">More...</a><br /></td></tr>
+<tr class="separator:a27e755e15b4b5604c54974b304037a49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e870c654d35394f0d490045df04e0f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&#160;&#160;&#160;(5)</td></tr>
+<tr class="memdesc:a1e870c654d35394f0d490045df04e0f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the granule position.  <a href="theora_8h.html#a1e870c654d35394f0d490045df04e0f5">More...</a><br /></td></tr>
+<tr class="separator:a1e870c654d35394f0d490045df04e0f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3befcdd66678f8d27034f9c4b16d1b9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&#160;&#160;&#160;(2)</td></tr>
+<tr class="memdesc:a3befcdd66678f8d27034f9c4b16d1b9c"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="anchor" id="encctlcodes_old"></a> <a href="theora_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">More...</a><br /></td></tr>
+<tr class="separator:a3befcdd66678f8d27034f9c4b16d1b9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a382d685a39a34d8e6ba76b00d804efd8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&#160;&#160;&#160;(10)</td></tr>
+<tr class="memdesc:a382d685a39a34d8e6ba76b00d804efd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="theora_8h.html#a382d685a39a34d8e6ba76b00d804efd8">More...</a><br /></td></tr>
+<tr class="separator:a382d685a39a34d8e6ba76b00d804efd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9baf5bdd206e80c78a8fd44687e89783"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&#160;&#160;&#160;(12)</td></tr>
+<tr class="memdesc:a9baf5bdd206e80c78a8fd44687e89783"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the maximum speed level.  <a href="theora_8h.html#a9baf5bdd206e80c78a8fd44687e89783">More...</a><br /></td></tr>
+<tr class="separator:a9baf5bdd206e80c78a8fd44687e89783"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abd9fbcb6a25a77d991d3620164fe59d6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&#160;&#160;&#160;(14)</td></tr>
+<tr class="memdesc:abd9fbcb6a25a77d991d3620164fe59d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the speed level.  <a href="theora_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">More...</a><br /></td></tr>
+<tr class="separator:abd9fbcb6a25a77d991d3620164fe59d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa4370e13ed3aea6441ccf69dcab2506e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#aa4370e13ed3aea6441ccf69dcab2506e">OC_FAULT</a>&#160;&#160;&#160;-1</td></tr>
+<tr class="memdesc:aa4370e13ed3aea6441ccf69dcab2506e"><td class="mdescLeft">&#160;</td><td class="mdescRight">General failure.  <a href="theora_8h.html#aa4370e13ed3aea6441ccf69dcab2506e">More...</a><br /></td></tr>
+<tr class="separator:aa4370e13ed3aea6441ccf69dcab2506e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43d15091b1a03a734a124e9a04d3be55"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a43d15091b1a03a734a124e9a04d3be55">OC_EINVAL</a>&#160;&#160;&#160;-10</td></tr>
+<tr class="memdesc:a43d15091b1a03a734a124e9a04d3be55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Library encountered invalid internal data.  <a href="theora_8h.html#a43d15091b1a03a734a124e9a04d3be55">More...</a><br /></td></tr>
+<tr class="separator:a43d15091b1a03a734a124e9a04d3be55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a38b9fa0af856d5930c534db26e2ac2d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a38b9fa0af856d5930c534db26e2ac2d1">OC_DISABLED</a>&#160;&#160;&#160;-11</td></tr>
+<tr class="memdesc:a38b9fa0af856d5930c534db26e2ac2d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requested action is disabled.  <a href="theora_8h.html#a38b9fa0af856d5930c534db26e2ac2d1">More...</a><br /></td></tr>
+<tr class="separator:a38b9fa0af856d5930c534db26e2ac2d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a809cbad2eb36be17a235a3cadfb737ba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a809cbad2eb36be17a235a3cadfb737ba">OC_BADHEADER</a>&#160;&#160;&#160;-20</td></tr>
+<tr class="memdesc:a809cbad2eb36be17a235a3cadfb737ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Header packet was corrupt/invalid.  <a href="theora_8h.html#a809cbad2eb36be17a235a3cadfb737ba">More...</a><br /></td></tr>
+<tr class="separator:a809cbad2eb36be17a235a3cadfb737ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9558d6d9eacd2273c8da27f945d725ad"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a9558d6d9eacd2273c8da27f945d725ad">OC_NOTFORMAT</a>&#160;&#160;&#160;-21</td></tr>
+<tr class="memdesc:a9558d6d9eacd2273c8da27f945d725ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packet is not a theora packet.  <a href="theora_8h.html#a9558d6d9eacd2273c8da27f945d725ad">More...</a><br /></td></tr>
+<tr class="separator:a9558d6d9eacd2273c8da27f945d725ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4611cfd61160405721d1e2ab0ec2564b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a4611cfd61160405721d1e2ab0ec2564b">OC_VERSION</a>&#160;&#160;&#160;-22</td></tr>
+<tr class="memdesc:a4611cfd61160405721d1e2ab0ec2564b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitstream version is not handled.  <a href="theora_8h.html#a4611cfd61160405721d1e2ab0ec2564b">More...</a><br /></td></tr>
+<tr class="separator:a4611cfd61160405721d1e2ab0ec2564b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a895dc2597b3bf9c97bf7701c6eff5b0c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a895dc2597b3bf9c97bf7701c6eff5b0c">OC_IMPL</a>&#160;&#160;&#160;-23</td></tr>
+<tr class="memdesc:a895dc2597b3bf9c97bf7701c6eff5b0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Feature or action not implemented.  <a href="theora_8h.html#a895dc2597b3bf9c97bf7701c6eff5b0c">More...</a><br /></td></tr>
+<tr class="separator:a895dc2597b3bf9c97bf7701c6eff5b0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a117774c062a63dfad2a5b4d092fa2bb1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a117774c062a63dfad2a5b4d092fa2bb1">OC_BADPACKET</a>&#160;&#160;&#160;-24</td></tr>
+<tr class="memdesc:a117774c062a63dfad2a5b4d092fa2bb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packet is corrupt.  <a href="theora_8h.html#a117774c062a63dfad2a5b4d092fa2bb1">More...</a><br /></td></tr>
+<tr class="separator:a117774c062a63dfad2a5b4d092fa2bb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a60be4dc92c933eac3542bce3ce076496"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a60be4dc92c933eac3542bce3ce076496">OC_NEWPACKET</a>&#160;&#160;&#160;-25</td></tr>
+<tr class="memdesc:a60be4dc92c933eac3542bce3ce076496"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packet is an (ignorable) unhandled extension.  <a href="theora_8h.html#a60be4dc92c933eac3542bce3ce076496">More...</a><br /></td></tr>
+<tr class="separator:a60be4dc92c933eac3542bce3ce076496"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84a8d2f5080ad62b415a4e7551941cbb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a84a8d2f5080ad62b415a4e7551941cbb">OC_DUPFRAME</a>&#160;&#160;&#160;1</td></tr>
+<tr class="memdesc:a84a8d2f5080ad62b415a4e7551941cbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packet is a dropped frame.  <a href="theora_8h.html#a84a8d2f5080ad62b415a4e7551941cbb">More...</a><br /></td></tr>
+<tr class="separator:a84a8d2f5080ad62b415a4e7551941cbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac52e77d5dab481f2181c8162549c0cb9"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ac52e77d5dab481f2181c8162549c0cb9">theora_version_string</a> (void)</td></tr>
+<tr class="memdesc:ac52e77d5dab481f2181c8162549c0cb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a human-readable string to identify the encoder vendor and version.  <a href="theora_8h.html#ac52e77d5dab481f2181c8162549c0cb9">More...</a><br /></td></tr>
+<tr class="separator:ac52e77d5dab481f2181c8162549c0cb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad181f4b19d455dcc2bef2533530b84c8"><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a> (void)</td></tr>
+<tr class="memdesc:ad181f4b19d455dcc2bef2533530b84c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a 32-bit version number.  <a href="theora_8h.html#ad181f4b19d455dcc2bef2533530b84c8">More...</a><br /></td></tr>
+<tr class="separator:ad181f4b19d455dcc2bef2533530b84c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0f7ad4d4b2343278cb4ba8fb2bd5109a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr class="memdesc:a0f7ad4d4b2343278cb4ba8fb2bd5109a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the theora encoder.  <a href="theora_8h.html#a0f7ad4d4b2343278cb4ba8fb2bd5109a">More...</a><br /></td></tr>
+<tr class="separator:a0f7ad4d4b2343278cb4ba8fb2bd5109a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac0d33d896ca70cedfc94c5986d947078"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr class="memdesc:ac0d33d896ca70cedfc94c5986d947078"><td class="mdescLeft">&#160;</td><td class="mdescRight">Submit a YUV buffer to the theora encoder.  <a href="theora_8h.html#ac0d33d896ca70cedfc94c5986d947078">More...</a><br /></td></tr>
+<tr class="separator:ac0d33d896ca70cedfc94c5986d947078"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f4929677a735bc2198c2309d235f1b3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, int last_p, ogg_packet *op)</td></tr>
+<tr class="memdesc:a5f4929677a735bc2198c2309d235f1b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request the next packet of encoded video.  <a href="theora_8h.html#a5f4929677a735bc2198c2309d235f1b3">More...</a><br /></td></tr>
+<tr class="separator:a5f4929677a735bc2198c2309d235f1b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a451feb58d6bde726edbae193689887be"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a451feb58d6bde726edbae193689887be">theora_encode_header</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr class="memdesc:a451feb58d6bde726edbae193689887be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a packet containing the initial header.  <a href="theora_8h.html#a451feb58d6bde726edbae193689887be">More...</a><br /></td></tr>
+<tr class="separator:a451feb58d6bde726edbae193689887be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a45e8db0713eaaca0f1144f3724cb834a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op)</td></tr>
+<tr class="memdesc:a45e8db0713eaaca0f1144f3724cb834a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a comment header packet from provided metadata.  <a href="theora_8h.html#a45e8db0713eaaca0f1144f3724cb834a">More...</a><br /></td></tr>
+<tr class="separator:a45e8db0713eaaca0f1144f3724cb834a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5085baf20855b283fa01fc948505d9d2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr class="memdesc:a5085baf20855b283fa01fc948505d9d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a packet containing the codebook tables for the stream.  <a href="theora_8h.html#a5085baf20855b283fa01fc948505d9d2">More...</a><br /></td></tr>
+<tr class="separator:a5085baf20855b283fa01fc948505d9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02915e63c1bd733ee291f577a8b75a82"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ci, <a class="el" href="structtheora__comment.html">theora_comment</a> *cc, ogg_packet *op)</td></tr>
+<tr class="memdesc:a02915e63c1bd733ee291f577a8b75a82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.  <a href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82">More...</a><br /></td></tr>
+<tr class="separator:a02915e63c1bd733ee291f577a8b75a82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a264907c66003799ff77ecbd09eb33d2c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr class="memdesc:a264907c66003799ff77ecbd09eb33d2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding.  <a href="theora_8h.html#a264907c66003799ff77ecbd09eb33d2c">More...</a><br /></td></tr>
+<tr class="separator:a264907c66003799ff77ecbd09eb33d2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa65a9e53b46fd54ab344bd599fa96975"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#aa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_packet *op)</td></tr>
+<tr class="memdesc:aa65a9e53b46fd54ab344bd599fa96975"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input a packet containing encoded data into the theora decoder.  <a href="theora_8h.html#aa65a9e53b46fd54ab344bd599fa96975">More...</a><br /></td></tr>
+<tr class="separator:aa65a9e53b46fd54ab344bd599fa96975"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a09d47c80e1e94bff0a46a496816b8daa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr class="memdesc:a09d47c80e1e94bff0a46a496816b8daa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output the next available frame of decoded YUV data.  <a href="theora_8h.html#a09d47c80e1e94bff0a46a496816b8daa">More...</a><br /></td></tr>
+<tr class="separator:a09d47c80e1e94bff0a46a496816b8daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab969f9d0407683f0e5abe73d0839a25b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a> (ogg_packet *op)</td></tr>
+<tr class="memdesc:ab969f9d0407683f0e5abe73d0839a25b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> for that.  <a href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b">More...</a><br /></td></tr>
+<tr class="separator:ab969f9d0407683f0e5abe73d0839a25b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a39ccc8f847a748d7074c926b4fdd12b2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a> (ogg_packet *op)</td></tr>
+<tr class="memdesc:a39ccc8f847a748d7074c926b4fdd12b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Report whether a theora packet is a keyframe or not.  <a href="theora_8h.html#a39ccc8f847a748d7074c926b4fdd12b2">More...</a><br /></td></tr>
+<tr class="separator:a39ccc8f847a748d7074c926b4fdd12b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acd9360e6a47139c761002410af457a02"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#acd9360e6a47139c761002410af457a02">theora_granule_shift</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr class="memdesc:acd9360e6a47139c761002410af457a02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Report the granulepos shift radix.  <a href="theora_8h.html#acd9360e6a47139c761002410af457a02">More...</a><br /></td></tr>
+<tr class="separator:acd9360e6a47139c761002410af457a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7bfa3ceb2fb4b41a282456c56e1dd269"><td class="memItemLeft" align="right" valign="top">ogg_int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr class="memdesc:a7bfa3ceb2fb4b41a282456c56e1dd269"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a granulepos to an absolute frame index, starting at 0.  <a href="theora_8h.html#a7bfa3ceb2fb4b41a282456c56e1dd269">More...</a><br /></td></tr>
+<tr class="separator:a7bfa3ceb2fb4b41a282456c56e1dd269"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4376358b12b9fa23ce6fe21cb5c65ac6"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr class="memdesc:a4376358b12b9fa23ce6fe21cb5c65ac6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a granulepos to absolute time in seconds.  <a href="theora_8h.html#a4376358b12b9fa23ce6fe21cb5c65ac6">More...</a><br /></td></tr>
+<tr class="separator:a4376358b12b9fa23ce6fe21cb5c65ac6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3091c87d48f1faba018c5956379a6d90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90">theora_info_init</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr class="memdesc:a3091c87d48f1faba018c5956379a6d90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90">More...</a><br /></td></tr>
+<tr class="separator:a3091c87d48f1faba018c5956379a6d90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba7022d58edbc4825cacad03f68b3e0d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#aba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr class="memdesc:aba7022d58edbc4825cacad03f68b3e0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="theora_8h.html#aba7022d58edbc4825cacad03f68b3e0d">More...</a><br /></td></tr>
+<tr class="separator:aba7022d58edbc4825cacad03f68b3e0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab252d5d81b925136dda72e8f1c09c5eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t)</td></tr>
+<tr class="memdesc:ab252d5d81b925136dda72e8f1c09c5eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.  <a href="theora_8h.html#ab252d5d81b925136dda72e8f1c09c5eb">More...</a><br /></td></tr>
+<tr class="separator:ab252d5d81b925136dda72e8f1c09c5eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a811b92785df3bdbbebb3de612d9d6ce0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr class="memdesc:a811b92785df3bdbbebb3de612d9d6ce0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0">More...</a><br /></td></tr>
+<tr class="separator:a811b92785df3bdbbebb3de612d9d6ce0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a650642ed23894e41109bbc42ec393ed4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4">theora_comment_add</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *comment)</td></tr>
+<tr class="memdesc:a650642ed23894e41109bbc42ec393ed4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4">More...</a><br /></td></tr>
+<tr class="separator:a650642ed23894e41109bbc42ec393ed4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a339bd80b5bf4bb168b7052d8ec0b5a92"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, char *value)</td></tr>
+<tr class="memdesc:a339bd80b5bf4bb168b7052d8ec0b5a92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92">More...</a><br /></td></tr>
+<tr class="separator:a339bd80b5bf4bb168b7052d8ec0b5a92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9e0e9ad7e6d3b76129f9660bcad5ebd"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd">theora_comment_query</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, int count)</td></tr>
+<tr class="memdesc:ac9e0e9ad7e6d3b76129f9660bcad5ebd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Look up a comment value by tag.  <a href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd">More...</a><br /></td></tr>
+<tr class="separator:ac9e0e9ad7e6d3b76129f9660bcad5ebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a10f66a3c752442a3e0c0098e0f88df8b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag)</td></tr>
+<tr class="memdesc:a10f66a3c752442a3e0c0098e0f88df8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b">More...</a><br /></td></tr>
+<tr class="separator:a10f66a3c752442a3e0c0098e0f88df8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04c07c2eefba3a433e43f9fbde14719f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr class="memdesc:a04c07c2eefba3a433e43f9fbde14719f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed.  <a href="theora_8h.html#a04c07c2eefba3a433e43f9fbde14719f">More...</a><br /></td></tr>
+<tr class="separator:a04c07c2eefba3a433e43f9fbde14719f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a186773db3bc8cd550047e7df1b2ba2c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html#a186773db3bc8cd550047e7df1b2ba2c9">theora_control</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, int req, void *buf, size_t buf_sz)</td></tr>
+<tr class="memdesc:a186773db3bc8cd550047e7df1b2ba2c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encoder control function.  <a href="theora_8h.html#a186773db3bc8cd550047e7df1b2ba2c9">More...</a><br /></td></tr>
+<tr class="separator:a186773db3bc8cd550047e7df1b2ba2c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The libtheora pre-1.0 legacy C API. </p>
-<h2><a class="anchor" id="intro"></a>
-Introduction</h2>
-<p>This is the documentation for the libtheora legacy C API, declared in the <a class="el" href="theora_8h.html" title="The libtheora pre-1.0 legacy C API.">theora.h</a> header, which describes the old interface used before the 1.0 release. This API was widely deployed for several years and remains supported, but for new code we recommend the cleaner API declared in <a class="el" href="theoradec_8h.html" title="The libtheoradec C decoding API.">theoradec.h</a> and <a class="el" href="theoraenc_8h.html" title="The libtheoraenc C encoding API.">theoraenc.h</a>.</p>
-<p>libtheora is the reference implementation for <a href="http://www.theora.org/">Theora</a>, a free video codec. Theora is derived from On2's VP3 codec with improved integration with Ogg multimedia formats by <a href="http://www.xiph.org/">Xiph.Org</a>.</p>
-<h2><a class="anchor" id="overview"></a>
-Overview</h2>
-<p>This library will both decode and encode theora packets to/from raw YUV frames. In either case, the packets will most likely either come from or need to be embedded in an Ogg stream. Use <a href="http://xiph.org/ogg/">libogg</a> or <a href="http://www.annodex.net/software/liboggz/index.html">liboggz</a> to extract/package these packets.</p>
-<h2><a class="anchor" id="decoding"></a>
-Decoding Process</h2>
-<p>Decoding can be separated into the following steps:</p>
-<ol type="1">
-<li>initialise <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a> and <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0" title="Initialize an allocated theora_comment structure.">theora_comment_init()</a>: <div class="fragment"><pre class="fragment">
- theora_info     info;
- theora_comment  comment;
-   
- theora_info_init(&amp;info);
- theora_comment_init(&amp;comment);
- </pre></div></li>
-<li>retrieve header packets from Ogg stream (there should be 3) and decode into <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a>. See <a class="el" href="theora_8h.html#identification">Identifying Theora Packets</a> for more information on identifying which packets are theora packets. <div class="fragment"><pre class="fragment">
- int i;
- for (i = 0; i &lt; 3; i++)
- {
-   (get a theora packet "op" from the Ogg stream)
-   theora_decode_header(&amp;info, &amp;comment, op);
- }
- </pre></div></li>
-<li>initialise the decoder based on the information retrieved into the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct by <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a>. You will need a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> struct. <div class="fragment"><pre class="fragment">
- theora_state state;
- 
- theora_decode_init(&amp;state, &amp;info);
- </pre></div></li>
-<li>pass in packets and retrieve decoded frames! See the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> documentation for information on how to retrieve raw YUV data. <div class="fragment"><pre class="fragment">
- yuf_buffer buffer;
- while (last packet was not e_o_s) {
-   (get a theora packet "op" from the Ogg stream)
-   theora_decode_packetin(&amp;state, op);
-   theora_decode_YUVout(&amp;state, &amp;buffer);
- }
- </pre></div></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >The libtheora pre-1.0 legacy C API. </p>
+<h1><a class="anchor" id="intro"></a>
+Introduction</h1>
+<p >This is the documentation for the libtheora legacy C API, declared in the <a class="el" href="theora_8h.html" title="The libtheora pre-1.0 legacy C API.">theora.h</a> header, which describes the old interface used before the 1.0 release. This API was widely deployed for several years and remains supported, but for new code we recommend the cleaner API declared in <a class="el" href="theoradec_8h.html" title="The libtheoradec C decoding API.">theoradec.h</a> and <a class="el" href="theoraenc_8h.html" title="The libtheoraenc C encoding API.">theoraenc.h</a>.</p>
+<p >libtheora is the reference implementation for <a href="https://www.theora.org/">Theora</a>, a free video codec. Theora is derived from On2's VP3 codec with improved integration with Ogg multimedia formats by <a href="https://www.xiph.org/">Xiph.Org</a>.</p>
+<h1><a class="anchor" id="overview"></a>
+Overview</h1>
+<p >This library will both decode and encode theora packets to/from raw YUV frames. In either case, the packets will most likely either come from or need to be embedded in an Ogg stream. Use <a href="https://www.xiph.org/ogg/">libogg</a> or <a href="http://www.annodex.net/software/liboggz/index.html">liboggz</a> to extract/package these packets.</p>
+<h1><a class="anchor" id="decoding"></a>
+Decoding Process</h1>
+<p >Decoding can be separated into the following steps:</p><ol type="1">
+<li>initialise <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a> and <a class="el" href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0" title="Initialize an allocated theora_comment structure.">theora_comment_init()</a>: <pre class="fragment">theora_info     info;
+theora_comment  comment;
+
+theora_info_init(&amp;info);
+theora_comment_init(&amp;comment);
+</pre></li>
+<li>retrieve header packets from Ogg stream (there should be 3) and decode into <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a>. See <a class="el" href="theora_8h.html#identification">Identifying Theora Packets</a> for more information on identifying which packets are theora packets. <pre class="fragment">int i;
+for (i = 0; i &lt; 3; i++)
+{
+  (get a theora packet "op" from the Ogg stream)
+  theora_decode_header(&amp;info, &amp;comment, op);
+}
+</pre></li>
+<li>initialise the decoder based on the information retrieved into the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct by <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a>. You will need a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> struct. <pre class="fragment">theora_state state;
+
+theora_decode_init(&amp;state, &amp;info);
+</pre></li>
+<li>pass in packets and retrieve decoded frames! See the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> documentation for information on how to retrieve raw YUV data. <pre class="fragment">yuf_buffer buffer;
+while (last packet was not e_o_s) {
+  (get a theora packet "op" from the Ogg stream)
+  theora_decode_packetin(&amp;state, op);
+  theora_decode_YUVout(&amp;state, &amp;buffer);
+}
+</pre></li>
 </ol>
-<h3><a class="anchor" id="identification"></a>
-Identifying Theora Packets</h3>
-<p>All streams inside an Ogg file have a unique serial_no attached to the stream. Typically, you will want to</p>
-<ul>
+<h2><a class="anchor" id="identification"></a>
+Identifying Theora Packets</h2>
+<p >All streams inside an Ogg file have a unique serial_no attached to the stream. Typically, you will want to</p><ul>
 <li>retrieve the serial_no for each b_o_s (beginning of stream) page encountered within the Ogg file;</li>
 <li>test the first (only) packet on that page to determine if it is a theora packet;</li>
 <li>once you have found a theora b_o_s page then use the retrieved serial_no to identify future packets belonging to the same theora stream.</li>
 </ul>
-<p>Note that you <em>cannot</em> use <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b" title="Report whether a theora packet is a header or not This function does no verification beyond checking ...">theora_packet_isheader()</a> to determine if a packet is a theora packet or not, as this function does not perform any checking beyond whether a header bit is present. Instead, use the <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header()</a> function and check the return value; or examine the header bytes at the beginning of the Ogg page. </p>
+<p >Note that you <em>cannot</em> use <a class="el" href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b" title="Report whether a theora packet is a header or not This function does no verification beyond checking ...">theora_packet_isheader()</a> to determine if a packet is a theora packet or not, as this function does not perform any checking beyond whether a header bit is present. Instead, use the <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> function and check the return value; or examine the header bytes at the beginning of the Ogg page. </p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a809cbad2eb36be17a235a3cadfb737ba" name="a809cbad2eb36be17a235a3cadfb737ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a809cbad2eb36be17a235a3cadfb737ba">&#9670;&nbsp;</a></span>OC_BADHEADER</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_BADHEADER&#160;&#160;&#160;-20</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Header packet was corrupt/invalid. </p>
+
+</div>
+</div>
+<a id="a117774c062a63dfad2a5b4d092fa2bb1" name="a117774c062a63dfad2a5b4d092fa2bb1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a117774c062a63dfad2a5b4d092fa2bb1">&#9670;&nbsp;</a></span>OC_BADPACKET</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_BADPACKET&#160;&#160;&#160;-24</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Packet is corrupt. </p>
+
+</div>
+</div>
+<a id="a38b9fa0af856d5930c534db26e2ac2d1" name="a38b9fa0af856d5930c534db26e2ac2d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a38b9fa0af856d5930c534db26e2ac2d1">&#9670;&nbsp;</a></span>OC_DISABLED</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_DISABLED&#160;&#160;&#160;-11</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Requested action is disabled. </p>
+
+</div>
+</div>
+<a id="a84a8d2f5080ad62b415a4e7551941cbb" name="a84a8d2f5080ad62b415a4e7551941cbb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a84a8d2f5080ad62b415a4e7551941cbb">&#9670;&nbsp;</a></span>OC_DUPFRAME</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_DUPFRAME&#160;&#160;&#160;1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Packet is a dropped frame. </p>
+
+</div>
+</div>
+<a id="a43d15091b1a03a734a124e9a04d3be55" name="a43d15091b1a03a734a124e9a04d3be55"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43d15091b1a03a734a124e9a04d3be55">&#9670;&nbsp;</a></span>OC_EINVAL</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_EINVAL&#160;&#160;&#160;-10</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Library encountered invalid internal data. </p>
+
+</div>
+</div>
+<a id="aa4370e13ed3aea6441ccf69dcab2506e" name="aa4370e13ed3aea6441ccf69dcab2506e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa4370e13ed3aea6441ccf69dcab2506e">&#9670;&nbsp;</a></span>OC_FAULT</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_FAULT&#160;&#160;&#160;-1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>General failure. </p>
+
+</div>
+</div>
+<a id="a895dc2597b3bf9c97bf7701c6eff5b0c" name="a895dc2597b3bf9c97bf7701c6eff5b0c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a895dc2597b3bf9c97bf7701c6eff5b0c">&#9670;&nbsp;</a></span>OC_IMPL</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_IMPL&#160;&#160;&#160;-23</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Feature or action not implemented. </p>
+
+</div>
+</div>
+<a id="a60be4dc92c933eac3542bce3ce076496" name="a60be4dc92c933eac3542bce3ce076496"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60be4dc92c933eac3542bce3ce076496">&#9670;&nbsp;</a></span>OC_NEWPACKET</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_NEWPACKET&#160;&#160;&#160;-25</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Packet is an (ignorable) unhandled extension. </p>
+
+</div>
+</div>
+<a id="a9558d6d9eacd2273c8da27f945d725ad" name="a9558d6d9eacd2273c8da27f945d725ad"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9558d6d9eacd2273c8da27f945d725ad">&#9670;&nbsp;</a></span>OC_NOTFORMAT</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_NOTFORMAT&#160;&#160;&#160;-21</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Packet is not a theora packet. </p>
+
+</div>
+</div>
+<a id="a4611cfd61160405721d1e2ab0ec2564b" name="a4611cfd61160405721d1e2ab0ec2564b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4611cfd61160405721d1e2ab0ec2564b">&#9670;&nbsp;</a></span>OC_VERSION</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_VERSION&#160;&#160;&#160;-22</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Bitstream version is not handled. </p>
+
+</div>
+</div>
+<a id="ab31f251c9319f2140d247585d30b3d07" name="ab31f251c9319f2140d247585d30b3d07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab31f251c9319f2140d247585d30b3d07">&#9670;&nbsp;</a></span>TH_DECCTL_GET_PPLEVEL_MAX</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&#160;&#160;&#160;(1)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the maximum post-processing level. </p>
+<p >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. </p>
+
+</div>
+</div>
+<a id="a1e870c654d35394f0d490045df04e0f5" name="a1e870c654d35394f0d490045df04e0f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e870c654d35394f0d490045df04e0f5">&#9670;&nbsp;</a></span>TH_DECCTL_SET_GRANPOS</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_GRANPOS&#160;&#160;&#160;(5)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the granule position. </p>
+<p >Call this after a seek, to update the internal granulepos in the decoder, to insure that subsequent frames are marked properly. If you track timestamps yourself and do not use the granule position returned by the decoder, then you do not need to use this control. </p>
+
+</div>
+</div>
+<a id="a87774c35e1a755a84e2d705b38ebef0d" name="a87774c35e1a755a84e2d705b38ebef0d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87774c35e1a755a84e2d705b38ebef0d">&#9670;&nbsp;</a></span>TH_DECCTL_SET_PPLEVEL</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_PPLEVEL&#160;&#160;&#160;(3)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the post-processing level. </p>
+<p >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 TH_DECCTL_GET_PPLEVEL_MAX. </p>
+
+</div>
+</div>
+<a id="a9baf5bdd206e80c78a8fd44687e89783" name="a9baf5bdd206e80c78a8fd44687e89783"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9baf5bdd206e80c78a8fd44687e89783">&#9670;&nbsp;</a></span>TH_ENCCTL_GET_SPLEVEL_MAX</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&#160;&#160;&#160;(12)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Gets the maximum speed level. </p>
+<p >Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. CQI, etc.).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>int: The maximum encoding speed level. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">OC_FAULT</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">OC_EINVAL</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td class="paramname">OC_IMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a27e755e15b4b5604c54974b304037a49" name="a27e755e15b4b5604c54974b304037a49"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a27e755e15b4b5604c54974b304037a49">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&#160;&#160;&#160;(4)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the maximum distance between key frames. </p>
+<p >This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">OC_FAULT</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">OC_EINVAL</td><td><em>buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
+    <tr><td class="paramname">OC_IMPL</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a3befcdd66678f8d27034f9c4b16d1b9c" name="a3befcdd66678f8d27034f9c4b16d1b9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3befcdd66678f8d27034f9c4b16d1b9c">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_QUANT_PARAMS</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&#160;&#160;&#160;(2)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p><a class="anchor" id="encctlcodes_old"></a></p>
+<p >Sets the quantization parameters to use. The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">OC_FAULT</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">OC_EINVAL</td><td>Encoding has already begun, the quantization parameters are not acceptable to this version of the encoder, <em>buf</em> is <code>NULL</code> and <em>buf_sz</em> is not zero, or <em>buf</em> is non-<code>NULL</code> and <em>buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
+    <tr><td class="paramname">OC_IMPL</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="abd9fbcb6a25a77d991d3620164fe59d6" name="abd9fbcb6a25a77d991d3620164fe59d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abd9fbcb6a25a77d991d3620164fe59d6">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_SPLEVEL</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&#160;&#160;&#160;(14)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the speed level. </p>
+<p >By default a speed value of 1 is used.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>int: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">OC_FAULT</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">OC_EINVAL</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theora_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
+    <tr><td class="paramname">OC_IMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a382d685a39a34d8e6ba76b00d804efd8" name="a382d685a39a34d8e6ba76b00d804efd8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a382d685a39a34d8e6ba76b00d804efd8">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_VP3_COMPATIBLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&#160;&#160;&#160;(10)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Disables any encoder features that would prevent lossless transcoding back to VP3. </p>
+<p >This primarily means disabling block-level QI values and not using 4MV mode when any of the luma blocks in a macro block are not coded. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">OC_FAULT</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">OC_EINVAL</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td class="paramname">OC_IMPL</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="acaae73fc38efbc2ef0b0fb61dbbda3fc" name="acaae73fc38efbc2ef0b0fb61dbbda3fc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acaae73fc38efbc2ef0b0fb61dbbda3fc">&#9670;&nbsp;</a></span>theora_comment</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structtheora__comment.html">theora_comment</a> <a class="el" href="structtheora__comment.html">theora_comment</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Comment header metadata. </p>
+<p >This structure holds the in-stream metadata corresponding to the 'comment' header packet.</p>
+<p >Meta data 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. The character set encoding for the strings is always UTF-8, but the tag names are limited to case-insensitive ASCII. See the spec for details.</p>
+<p >In filling in this structure, <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean, and so the length array should be treated as authoritative for their length. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="aa567da4ce591f7373149ce3ef3acdac9" name="aa567da4ce591f7373149ce3ef3acdac9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa567da4ce591f7373149ce3ef3acdac9">&#9670;&nbsp;</a></span>theora_colorspace</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>A Colorspace. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f" name="aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f"></a>OC_CS_UNSPECIFIED&#160;</td><td class="fielddoc"><p >The colorspace is unknown or unspecified. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294" name="aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294"></a>OC_CS_ITU_REC_470M&#160;</td><td class="fielddoc"><p >This is the best option for 'NTSC' content. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a" name="aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a"></a>OC_CS_ITU_REC_470BG&#160;</td><td class="fielddoc"><p >This is the best option for 'PAL' content. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186" name="aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186"></a>OC_CS_NSPACES&#160;</td><td class="fielddoc"><p >This marks the end of the defined colorspaces. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="ae169da05bfaaf4e964a6866552d45079" name="ae169da05bfaaf4e964a6866552d45079"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae169da05bfaaf4e964a6866552d45079">&#9670;&nbsp;</a></span>theora_pixelformat</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>A Chroma subsampling. </p>
+<p >These enumerate the available chroma subsampling options supported by the theora format. See Section 4.4 of the specification for exact definitions. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b" name="ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b"></a>OC_PF_420&#160;</td><td class="fielddoc"><p >Chroma subsampling by 2 in each direction (4:2:0) </p>
+</td></tr>
+<tr><td class="fieldname"><a id="ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb" name="ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb"></a>OC_PF_RSVD&#160;</td><td class="fielddoc"><p >Reserved value. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b" name="ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b"></a>OC_PF_422&#160;</td><td class="fielddoc"><p >Horizonatal chroma subsampling by 2 (4:2:2) </p>
+</td></tr>
+<tr><td class="fieldname"><a id="ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044" name="ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044"></a>OC_PF_444&#160;</td><td class="fielddoc"><p >No chroma subsampling at all (4:4:4) </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ab252d5d81b925136dda72e8f1c09c5eb" name="ab252d5d81b925136dda72e8f1c09c5eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab252d5d81b925136dda72e8f1c09c5eb">&#9670;&nbsp;</a></span>theora_clear()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>t</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">t</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a650642ed23894e41109bbc42ec393ed4" name="a650642ed23894e41109bbc42ec393ed4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a650642ed23894e41109bbc42ec393ed4">&#9670;&nbsp;</a></span>theora_comment_add()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_add </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>comment</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tc</td><td>A previously initialized theora comment structure </td></tr>
+    <tr><td class="paramname">comment</td><td>A null-terminated string encoding the comment in the form "TAG=the value"</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Neither <a class="el" href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
+
+</div>
+</div>
+<a id="a339bd80b5bf4bb168b7052d8ec0b5a92" name="a339bd80b5bf4bb168b7052d8ec0b5a92"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a339bd80b5bf4bb168b7052d8ec0b5a92">&#9670;&nbsp;</a></span>theora_comment_add_tag()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_add_tag </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tc</td><td>A previously initialized theora comment structure </td></tr>
+    <tr><td class="paramname">tag</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
+    <tr><td class="paramname">value</td><td>The corresponding value as a null-terminated string</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Neither <a class="el" href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
+
+</div>
+</div>
+<a id="a04c07c2eefba3a433e43f9fbde14719f" name="a04c07c2eefba3a433e43f9fbde14719f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a04c07c2eefba3a433e43f9fbde14719f">&#9670;&nbsp;</a></span>theora_comment_clear()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>tc</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tc</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a811b92785df3bdbbebb3de612d9d6ce0" name="a811b92785df3bdbbebb3de612d9d6ce0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a811b92785df3bdbbebb3de612d9d6ce0">&#9670;&nbsp;</a></span>theora_comment_init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>tc</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tc</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ac9e0e9ad7e6d3b76129f9660bcad5ebd" name="ac9e0e9ad7e6d3b76129f9660bcad5ebd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac9e0e9ad7e6d3b76129f9660bcad5ebd">&#9670;&nbsp;</a></span>theora_comment_query()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char * theora_comment_query </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>count</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Look up a comment value by tag. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tc</td><td>Tn initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+    <tr><td class="paramname">tag</td><td>The tag to look up </td></tr>
+    <tr><td class="paramname">count</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct and ordered value, so an index is required to retrieve them all. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to the queried tag's value </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">NULL</td><td>No matching tag is found</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>Use <a class="el" href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b" title="Look up the number of instances of a tag.">theora_comment_query_count()</a> to get the legal range for the count parameter. </dd></dl>
+
+</div>
+</div>
+<a id="a10f66a3c752442a3e0c0098e0f88df8b" name="a10f66a3c752442a3e0c0098e0f88df8b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a10f66a3c752442a3e0c0098e0f88df8b">&#9670;&nbsp;</a></span>theora_comment_query_count()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_comment_query_count </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>tag</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Look up the number of instances of a tag. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tc</td><td>An initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+    <tr><td class="paramname">tag</td><td>The tag to look up </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The number on instances of a particular tag.</dd></dl>
+<p>Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to <a class="el" href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd" title="Look up a comment value by tag.">theora_comment_query()</a> to retrieve all instances in order. </p>
+
+</div>
+</div>
+<a id="a186773db3bc8cd550047e7df1b2ba2c9" name="a186773db3bc8cd550047e7df1b2ba2c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a186773db3bc8cd550047e7df1b2ba2c9">&#9670;&nbsp;</a></span>theora_control()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_control </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>req</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>buf_sz</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Encoder control function. </p>
+<p >This is used to provide advanced control the encoding process. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">th</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
+    <tr><td class="paramname">req</td><td>The control code to process. See <a class="el" href="theora_8h.html#encctlcodes_old">the list of available</a> control codes" for details. </td></tr>
+    <tr><td class="paramname">buf</td><td>The parameters for this control code. </td></tr>
+    <tr><td class="paramname">buf_sz</td><td>The size of the parameter buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a02915e63c1bd733ee291f577a8b75a82" name="a02915e63c1bd733ee291f577a8b75a82"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a02915e63c1bd733ee291f577a8b75a82">&#9670;&nbsp;</a></span>theora_decode_header()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_header </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&#160;</td>
+          <td class="paramname"><em>ci</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>cc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ci</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure to fill. This must have been previously initialized with <a class="el" href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a>. If <em>op</em> contains an initial header, <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> will fill <em>ci</em> with the parsed header values. If <em>op</em> contains codebook tables, <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> will parse these and attach an internal representation to <em>ci-&gt;codec_setup</em>. </td></tr>
+    <tr><td class="paramname">cc</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure to fill. If <em>op</em> contains comment data, <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> will fill <em>cc</em> with the parsed comments. </td></tr>
+    <tr><td class="paramname">op</td><td>An ogg_packet structure which you expect contains an initial header, comment data or codebook tables.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">OC_BADHEADER</td><td><em>op</em> is NULL; OR the first byte of <em>op-&gt;packet</em> has the signature of an initial packet, but op is not a b_o_s packet; OR this packet has the signature of an initial header packet, but an initial header packet has already been seen; OR this packet has the signature of a comment packet, but the initial header has not yet been seen; OR this packet has the signature of a comment packet, but contains invalid data; OR this packet has the signature of codebook tables, but the initial header or comments have not yet been seen; OR this packet has the signature of codebook tables, but contains invalid data; OR the stream being decoded has a compatible version but this packet does not have the signature of a theora initial header, comments, or codebook packet </td></tr>
+    <tr><td class="paramname">OC_VERSION</td><td>The packet data of <em>op</em> is an initial header with a version which is incompatible with this version of libtheora. </td></tr>
+    <tr><td class="paramname">OC_NEWPACKET</td><td>the stream being decoded has an incompatible (future) version and contains an unknown signature. </td></tr>
+    <tr><td class="paramname">0</td><td>Success</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>The normal usage is that <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> be called on the first three packets of a theora logical bitstream in succession. </dd></dl>
+
+</div>
+</div>
+<a id="a264907c66003799ff77ecbd09eb33d2c" name="a264907c66003799ff77ecbd09eb33d2c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a264907c66003799ff77ecbd09eb33d2c">&#9670;&nbsp;</a></span>theora_decode_init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&#160;</td>
+          <td class="paramname"><em>c</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">th</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize. </td></tr>
+    <tr><td class="paramname">c</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired decoding parameters. This is of course usually obtained from a previous call to <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="aa65a9e53b46fd54ab344bd599fa96975" name="aa65a9e53b46fd54ab344bd599fa96975"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa65a9e53b46fd54ab344bd599fa96975">&#9670;&nbsp;</a></span>theora_decode_packetin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_packetin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Input a packet containing encoded data into the theora decoder. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">th</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
+    <tr><td class="paramname">op</td><td>An ogg_packet containing encoded theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+    <tr><td class="paramname">OC_BADPACKET</td><td><em>op</em> does not contain encoded video data </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a09d47c80e1e94bff0a46a496816b8daa" name="a09d47c80e1e94bff0a46a496816b8daa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a09d47c80e1e94bff0a46a496816b8daa">&#9670;&nbsp;</a></span>theora_decode_YUVout()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_YUVout </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&#160;</td>
+          <td class="paramname"><em>yuv</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Output the next available frame of decoded YUV data. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">th</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
+    <tr><td class="paramname">yuv</td><td>A <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> in which libtheora should place the decoded data. Note that the buffer struct itself is allocated by the user, but that the luma and chroma pointers will be filled in by the library. Also note that these luma and chroma regions should be considered read-only by the user. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a45e8db0713eaaca0f1144f3724cb834a" name="a45e8db0713eaaca0f1144f3724cb834a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a45e8db0713eaaca0f1144f3724cb834a">&#9670;&nbsp;</a></span>theora_encode_comment()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_comment </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&#160;</td>
+          <td class="paramname"><em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Request a comment header packet from provided metadata. </p>
+<p >A pointer to the comment data is placed in a user-provided ogg_packet structure. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tc</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure filled with the desired metadata </td></tr>
+    <tr><td class="paramname">op</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the encoded comment data. The memory for the comment data is owned by the application, and must be freed by it using _ogg_free(). On some systems (such as Windows when using dynamic linking), this may mean the free is executed in a different module from the malloc, which will crash; there is no way to free this memory on such systems. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a451feb58d6bde726edbae193689887be" name="a451feb58d6bde726edbae193689887be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a451feb58d6bde726edbae193689887be">&#9670;&nbsp;</a></span>theora_encode_header()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_header </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Request a packet containing the initial header. </p>
+<p >A pointer to the header data is placed in a user-provided ogg_packet structure. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">t</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td class="paramname">op</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the header data. The memory for the header data is owned by libtheora. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a0f7ad4d4b2343278cb4ba8fb2bd5109a" name="a0f7ad4d4b2343278cb4ba8fb2bd5109a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0f7ad4d4b2343278cb4ba8fb2bd5109a">&#9670;&nbsp;</a></span>theora_encode_init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&#160;</td>
+          <td class="paramname"><em>ti</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize the theora encoder. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">th</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize for encoding. </td></tr>
+    <tr><td class="paramname">ti</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired encoding parameters. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a5f4929677a735bc2198c2309d235f1b3" name="a5f4929677a735bc2198c2309d235f1b3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f4929677a735bc2198c2309d235f1b3">&#9670;&nbsp;</a></span>theora_encode_packetout()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_packetout </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>last_p</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Request the next packet of encoded video. </p>
+<p >The encoded data is placed in a user-provided ogg_packet structure. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">t</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td class="paramname">last_p</td><td>whether this is the last packet the encoder should produce. </td></tr>
+    <tr><td class="paramname">op</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to encoded data. The memory for the encoded data is owned by libtheora. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>No internal storage exists OR no packet is ready </td></tr>
+    <tr><td class="paramname">-1</td><td>The encoding process has completed </td></tr>
+    <tr><td class="paramname">1</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a5085baf20855b283fa01fc948505d9d2" name="a5085baf20855b283fa01fc948505d9d2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5085baf20855b283fa01fc948505d9d2">&#9670;&nbsp;</a></span>theora_encode_tables()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_tables </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Request a packet containing the codebook tables for the stream. </p>
+<p >A pointer to the codebook data is placed in a user-provided ogg_packet structure. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">t</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td class="paramname">op</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the codebook data. The memory for the header data is owned by libtheora. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ac0d33d896ca70cedfc94c5986d947078" name="ac0d33d896ca70cedfc94c5986d947078"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac0d33d896ca70cedfc94c5986d947078">&#9670;&nbsp;</a></span>theora_encode_YUVin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_YUVin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&#160;</td>
+          <td class="paramname"><em>yuv</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Submit a YUV buffer to the theora encoder. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">t</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td class="paramname">yuv</td><td>A buffer of YUV data to encode. Note that both the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct and the luma/chroma buffers within should be allocated by the user. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">OC_EINVAL</td><td>Encoder is not ready, or is finished. </td></tr>
+    <tr><td class="paramname">-1</td><td>The size of the given frame differs from those previously input </td></tr>
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a7bfa3ceb2fb4b41a282456c56e1dd269" name="a7bfa3ceb2fb4b41a282456c56e1dd269"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7bfa3ceb2fb4b41a282456c56e1dd269">&#9670;&nbsp;</a></span>theora_granule_frame()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int64_t theora_granule_frame </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&#160;</td>
+          <td class="paramname"><em>granulepos</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Convert a granulepos to an absolute frame index, starting at 0. </p>
+<p >The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.</p>
+<p >Note that while the granulepos encodes the frame count (i.e. starting from 1) this call returns the frame index, starting from zero. Thus One can calculate the presentation time by multiplying the index by the rate.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">th</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
+    <tr><td class="paramname">granulepos</td><td>The granulepos to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The frame index corresponding to <em>granulepos</em>. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">-1</td><td>The given granulepos is undefined (i.e. negative)</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a id="acd9360e6a47139c761002410af457a02" name="acd9360e6a47139c761002410af457a02"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd9360e6a47139c761002410af457a02">&#9670;&nbsp;</a></span>theora_granule_shift()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_granule_shift </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&#160;</td>
+          <td class="paramname"><em>ti</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Report the granulepos shift radix. </p>
+<p >When embedded in Ogg, Theora uses a two-part granulepos, splitting the 64-bit field into two pieces. The more-significant section represents the frame count at the last keyframe, and the less-significant section represents the count of frames since the last keyframe. In this way the overall field is still non-decreasing with time, but usefully encodes a pointer to the last keyframe, which is necessary for correctly restarting decode after a seek.</p>
+<p >This function reports the number of bits used to represent the distance to the last keyframe, and thus how the granulepos field must be shifted or masked to obtain the two parts.</p>
+<p >Since libtheora returns compressed data in an ogg_packet structure, this may be generally useful even if the Theora packets are not being used in an Ogg container.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ti</td><td>A previously initialized <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The bit shift dividing the two granulepos fields</dd></dl>
+<p>This function was added in the 1.0alpha5 release. </p>
+
+</div>
+</div>
+<a id="a4376358b12b9fa23ce6fe21cb5c65ac6" name="a4376358b12b9fa23ce6fe21cb5c65ac6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4376358b12b9fa23ce6fe21cb5c65ac6">&#9670;&nbsp;</a></span>theora_granule_time()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double theora_granule_time </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&#160;</td>
+          <td class="paramname"><em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&#160;</td>
+          <td class="paramname"><em>granulepos</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Convert a granulepos to absolute time in seconds. </p>
+<p >The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle, and gives the end time of a frame's presentation as used in Ogg mux ordering.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">th</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
+    <tr><td class="paramname">granulepos</td><td>The granulepos to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The absolute time in seconds corresponding to <em>granulepos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">-1.</td><td>The given granulepos is undefined (i.e. negative). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="aba7022d58edbc4825cacad03f68b3e0d" name="aba7022d58edbc4825cacad03f68b3e0d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aba7022d58edbc4825cacad03f68b3e0d">&#9670;&nbsp;</a></span>theora_info_clear()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_info_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
+<p >All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are cleared, and associated internal codec setup data is freed. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a3091c87d48f1faba018c5956379a6d90" name="a3091c87d48f1faba018c5956379a6d90"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3091c87d48f1faba018c5956379a6d90">&#9670;&nbsp;</a></span>theora_info_init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_info_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
+<p >All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are initialized, and space is allocated within libtheora for internal codec setup data. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ab969f9d0407683f0e5abe73d0839a25b" name="ab969f9d0407683f0e5abe73d0839a25b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab969f9d0407683f0e5abe73d0839a25b">&#9670;&nbsp;</a></span>theora_packet_isheader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_packet_isheader </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header,...">theora_decode_header()</a> for that. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">op</td><td>An ogg_packet containing encoded theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">1</td><td>The packet is a header packet </td></tr>
+    <tr><td class="paramname">0</td><td>The packet is not a header packet (and so contains frame data)</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a id="a39ccc8f847a748d7074c926b4fdd12b2" name="a39ccc8f847a748d7074c926b4fdd12b2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a39ccc8f847a748d7074c926b4fdd12b2">&#9670;&nbsp;</a></span>theora_packet_iskeyframe()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_packet_iskeyframe </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>op</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Report whether a theora packet is a keyframe or not. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">op</td><td>An ogg_packet containing encoded theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">1</td><td>The packet contains a keyframe image </td></tr>
+    <tr><td class="paramname">0</td><td>The packet is contains an interframe delta </td></tr>
+    <tr><td class="paramname">-1</td><td>The packet is not an image data packet at all</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a id="ad181f4b19d455dcc2bef2533530b84c8" name="ad181f4b19d455dcc2bef2533530b84c8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad181f4b19d455dcc2bef2533530b84c8">&#9670;&nbsp;</a></span>theora_version_number()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t theora_version_number </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve a 32-bit version number. </p>
+<p >This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p><pre>
+   (VERSION_MAJOR&lt;&lt;16) + (VERSION_MINOR&lt;&lt;8) + (VERSION_SUB)
+</pre> <dl class="section return"><dt>Returns</dt><dd>The version number. </dd></dl>
+
+</div>
+</div>
+<a id="ac52e77d5dab481f2181c8162549c0cb9" name="ac52e77d5dab481f2181c8162549c0cb9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac52e77d5dab481f2181c8162549c0cb9">&#9670;&nbsp;</a></span>theora_version_string()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char * theora_version_string </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve a human-readable string to identify the encoder vendor and version. </p>
+<dl class="section return"><dt>Returns</dt><dd>A version string. </dd></dl>
+
+</div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/theora_8h_source.html b/doc/libtheora-1.2/theora_8h_source.html
index e08684e..b85757c 100644
--- a/doc/libtheora-1.2/theora_8h_source.html
+++ b/doc/libtheora-1.2/theora_8h_source.html
@@ -1,251 +1,355 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theora.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>theora.h</h1>  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="contents">
-<a href="theora_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
-<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
-<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
-<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
-<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
-<a name="l00006"></a>00006 <span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
-<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
-<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
-<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
-<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
-<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
-<a name="l00012"></a>00012 <span class="comment"></span>
-<a name="l00013"></a>00013 <span class="comment">  function:</span>
-<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.17 2003/12/06 18:06:19 arc Exp $</span>
-<a name="l00015"></a>00015 <span class="comment"></span>
-<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
-<a name="l00017"></a>00017 
-<a name="l00018"></a>00018 <span class="preprocessor">#ifndef _O_THEORA_H_</span>
-<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define _O_THEORA_H_</span>
-<a name="l00020"></a>00020 <span class="preprocessor"></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#ifdef __cplusplus</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a>00024 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;stddef.h&gt;</span>     <span class="comment">/* for size_t */</span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ogg/ogg.h&gt;</span>
-<a name="l00029"></a>00029 
-<a name="l00121"></a>00121 <span class="comment">/*  @{ */</span>
-<a name="l00122"></a>00122 
-<a name="l00147"></a><a class="code" href="structyuv__buffer.html">00147</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00148"></a><a class="code" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">00148</a>     <span class="keywordtype">int</span>   y_width;      
-<a name="l00149"></a><a class="code" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">00149</a>     <span class="keywordtype">int</span>   y_height;     
-<a name="l00150"></a><a class="code" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">00150</a>     <span class="keywordtype">int</span>   y_stride;     
-<a name="l00152"></a><a class="code" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">00152</a>     <span class="keywordtype">int</span>   uv_width;     
-<a name="l00153"></a><a class="code" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">00153</a>     <span class="keywordtype">int</span>   uv_height;    
-<a name="l00154"></a><a class="code" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">00154</a>     <span class="keywordtype">int</span>   uv_stride;    
-<a name="l00155"></a><a class="code" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">00155</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *y;   
-<a name="l00156"></a><a class="code" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">00156</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *u;   
-<a name="l00157"></a><a class="code" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">00157</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *v;   
-<a name="l00159"></a>00159 } <a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a>;
-<a name="l00160"></a>00160 
-<a name="l00164"></a><a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">00164</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00165"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">00165</a>   OC_CS_UNSPECIFIED,    
-<a name="l00166"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">00166</a>   OC_CS_ITU_REC_470M,   
-<a name="l00167"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">00167</a>   OC_CS_ITU_REC_470BG,  
-<a name="l00168"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">00168</a>   <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186" title="This marks the end of the defined colorspaces.">OC_CS_NSPACES</a>         
-<a name="l00169"></a>00169 } theora_colorspace;
-<a name="l00170"></a>00170 
-<a name="l00178"></a><a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">00178</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00179"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">00179</a>   OC_PF_420,    
-<a name="l00180"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">00180</a>   OC_PF_RSVD,   
-<a name="l00181"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">00181</a>   OC_PF_422,    
-<a name="l00182"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">00182</a>   <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044" title="No chroma subsampling at all (4:4:4).">OC_PF_444</a>     
-<a name="l00183"></a>00183 } theora_pixelformat;
-<a name="l00184"></a>00184 
-<a name="l00206"></a><a class="code" href="structtheora__info.html">00206</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00207"></a><a class="code" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">00207</a>   ogg_uint32_t  width;          
-<a name="l00208"></a><a class="code" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">00208</a>   ogg_uint32_t  height;         
-<a name="l00209"></a><a class="code" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">00209</a>   ogg_uint32_t  frame_width;    
-<a name="l00210"></a><a class="code" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">00210</a>   ogg_uint32_t  frame_height;   
-<a name="l00211"></a><a class="code" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">00211</a>   ogg_uint32_t  offset_x;       
-<a name="l00212"></a><a class="code" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">00212</a>   ogg_uint32_t  offset_y;       
-<a name="l00213"></a><a class="code" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">00213</a>   ogg_uint32_t  fps_numerator;      
-<a name="l00214"></a><a class="code" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">00214</a>   ogg_uint32_t  fps_denominator;    
-<a name="l00215"></a><a class="code" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">00215</a>   ogg_uint32_t  aspect_numerator;   
-<a name="l00216"></a><a class="code" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">00216</a>   ogg_uint32_t  aspect_denominator; 
-<a name="l00217"></a><a class="code" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">00217</a>   <a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9" title="A Colorspace.">theora_colorspace</a> colorspace;     
-<a name="l00218"></a><a class="code" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">00218</a>   <span class="keywordtype">int</span>           target_bitrate;     
-<a name="l00219"></a><a class="code" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">00219</a>   <span class="keywordtype">int</span>           quality;  
-<a name="l00220"></a><a class="code" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">00220</a>   <span class="keywordtype">int</span>           quick_p;  
-<a name="l00222"></a>00222   <span class="comment">/* decode only */</span>
-<a name="l00223"></a><a class="code" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">00223</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_major;
-<a name="l00224"></a><a class="code" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">00224</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_minor;
-<a name="l00225"></a><a class="code" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">00225</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_subminor;
-<a name="l00226"></a>00226 
-<a name="l00227"></a><a class="code" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">00227</a>   <span class="keywordtype">void</span> *codec_setup;
-<a name="l00228"></a>00228 
-<a name="l00229"></a>00229   <span class="comment">/* encode only */</span>
-<a name="l00230"></a><a class="code" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">00230</a>   <span class="keywordtype">int</span>           dropframes_p;
-<a name="l00231"></a><a class="code" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">00231</a>   <span class="keywordtype">int</span>           keyframe_auto_p;
-<a name="l00232"></a><a class="code" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">00232</a>   ogg_uint32_t  keyframe_frequency;
-<a name="l00233"></a><a class="code" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">00233</a>   ogg_uint32_t  keyframe_frequency_force;  <span class="comment">/* also used for decode init to</span>
-<a name="l00234"></a>00234 <span class="comment">                                              get granpos shift correct */</span>
-<a name="l00235"></a><a class="code" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">00235</a>   ogg_uint32_t  keyframe_data_target_bitrate;
-<a name="l00236"></a><a class="code" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">00236</a>   ogg_int32_t   keyframe_auto_threshold;
-<a name="l00237"></a><a class="code" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">00237</a>   ogg_uint32_t  keyframe_mindistance;
-<a name="l00238"></a><a class="code" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">00238</a>   ogg_int32_t   noise_sensitivity;
-<a name="l00239"></a><a class="code" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">00239</a>   ogg_int32_t   sharpness;
-<a name="l00240"></a>00240 
-<a name="l00241"></a><a class="code" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">00241</a>   <a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079" title="A Chroma subsampling.">theora_pixelformat</a> pixelformat;       
-<a name="l00243"></a>00243 } <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a>;
-<a name="l00244"></a>00244 
-<a name="l00247"></a><a class="code" href="structtheora__state.html">00247</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
-<a name="l00248"></a><a class="code" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">00248</a>   <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *i;
-<a name="l00249"></a><a class="code" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">00249</a>   ogg_int64_t granulepos;
-<a name="l00250"></a>00250 
-<a name="l00251"></a><a class="code" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">00251</a>   <span class="keywordtype">void</span> *internal_encode;
-<a name="l00252"></a><a class="code" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">00252</a>   <span class="keywordtype">void</span> *internal_decode;
-<a name="l00253"></a>00253 
-<a name="l00254"></a>00254 } <a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a>;
-<a name="l00255"></a>00255 
-<a name="l00275"></a><a class="code" href="structtheora__comment.html">00275</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a>{
-<a name="l00276"></a><a class="code" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">00276</a>   <span class="keywordtype">char</span> **<a class="code" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5" title="An array of comment string vectors.">user_comments</a>;         
-<a name="l00277"></a><a class="code" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">00277</a>   <span class="keywordtype">int</span>   *<a class="code" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a" title="An array of corresponding string vector lengths in bytes.">comment_lengths</a>;       
-<a name="l00278"></a><a class="code" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">00278</a>   <span class="keywordtype">int</span>    <a class="code" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00" title="The total number of comment string vectors.">comments</a>;              
-<a name="l00279"></a><a class="code" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">00279</a>   <span class="keywordtype">char</span>  *<a class="code" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef" title="The vendor string identifying the encoder, null terminated.">vendor</a>;                
-<a name="l00281"></a>00281 } <a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a>;
-<a name="l00282"></a>00282 
-<a name="l00283"></a>00283 
-<a name="l00285"></a>00285 <span class="comment">/* \anchor decctlcodes_old</span>
-<a name="l00286"></a>00286 <span class="comment"> * These are the available request codes for theora_control()</span>
-<a name="l00287"></a>00287 <span class="comment"> * when called with a decoder instance.</span>
-<a name="l00288"></a>00288 <span class="comment"> * By convention decoder control codes are odd, to distinguish </span>
-<a name="l00289"></a>00289 <span class="comment"> * them from \ref encctlcodes_old &quot;encoder control codes&quot; which</span>
-<a name="l00290"></a>00290 <span class="comment"> * are even.</span>
-<a name="l00291"></a>00291 <span class="comment"> *</span>
-<a name="l00292"></a>00292 <span class="comment"> * Note that since the 1.0 release, both the legacy and the final</span>
-<a name="l00293"></a>00293 <span class="comment"> * implementation accept all the same control codes, but only the</span>
-<a name="l00294"></a>00294 <span class="comment"> * final API declares the newer codes.</span>
-<a name="l00295"></a>00295 <span class="comment"> *</span>
-<a name="l00296"></a>00296 <span class="comment"> * Keep any experimental or vendor-specific values above \c 0x8000.*/</span>
-<a name="l00297"></a>00297 
-<a name="l00306"></a><a class="code" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">00306</a> <span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span>
-<a name="l00307"></a>00307 <span class="preprocessor"></span>
-<a name="l00313"></a><a class="code" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">00313</a> <span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span>
-<a name="l00314"></a>00314 <span class="preprocessor"></span>
-<a name="l00327"></a><a class="code" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">00327</a> <span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span>
-<a name="l00328"></a>00328 <span class="preprocessor"></span>
-<a name="l00336"></a><a class="code" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">00336</a> <span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span>
-<a name="l00337"></a>00337 <span class="preprocessor"></span>
-<a name="l00353"></a><a class="code" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">00353</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span>
-<a name="l00354"></a>00354 <span class="preprocessor"></span>
-<a name="l00382"></a><a class="code" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">00382</a> <span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span>
-<a name="l00383"></a>00383 <span class="preprocessor"></span>
-<a name="l00397"></a><a class="code" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">00397</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span>
-<a name="l00398"></a>00398 <span class="preprocessor"></span>
-<a name="l00412"></a><a class="code" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">00412</a> <span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span>
-<a name="l00413"></a>00413 <span class="preprocessor"></span>
-<a name="l00416"></a><a class="code" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">00416</a> <span class="preprocessor">#define OC_FAULT       -1       </span>
-<a name="l00417"></a><a class="code" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">00417</a> <span class="preprocessor">#define OC_EINVAL      -10      </span>
-<a name="l00418"></a><a class="code" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">00418</a> <span class="preprocessor">#define OC_DISABLED    -11      </span>
-<a name="l00419"></a><a class="code" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">00419</a> <span class="preprocessor">#define OC_BADHEADER   -20      </span>
-<a name="l00420"></a><a class="code" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">00420</a> <span class="preprocessor">#define OC_NOTFORMAT   -21      </span>
-<a name="l00421"></a><a class="code" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">00421</a> <span class="preprocessor">#define OC_VERSION     -22      </span>
-<a name="l00422"></a><a class="code" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">00422</a> <span class="preprocessor">#define OC_IMPL        -23      </span>
-<a name="l00423"></a><a class="code" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">00423</a> <span class="preprocessor">#define OC_BADPACKET   -24      </span>
-<a name="l00424"></a><a class="code" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">00424</a> <span class="preprocessor">#define OC_NEWPACKET   -25      </span>
-<a name="l00425"></a><a class="code" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">00425</a> <span class="preprocessor">#define OC_DUPFRAME    1        </span>
-<a name="l00431"></a>00431 <span class="preprocessor">extern const char *theora_version_string(void);</span>
-<a name="l00432"></a>00432 <span class="preprocessor"></span>
-<a name="l00442"></a>00442 <span class="keyword">extern</span> ogg_uint32_t <a class="code" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8" title="Retrieve a 32-bit version number.">theora_version_number</a>(<span class="keywordtype">void</span>);
-<a name="l00443"></a>00443 
-<a name="l00450"></a>00450 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a" title="Initialize the theora encoder.">theora_encode_init</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th, <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ti);
-<a name="l00451"></a>00451 
-<a name="l00462"></a>00462 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078" title="Submit a YUV buffer to the theora encoder.">theora_encode_YUVin</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, <a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> *yuv);
-<a name="l00463"></a>00463 
-<a name="l00476"></a>00476 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3" title="Request the next packet of encoded video.">theora_encode_packetout</a>( <a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, <span class="keywordtype">int</span> last_p,
-<a name="l00477"></a>00477                                     ogg_packet *op);
-<a name="l00478"></a>00478 
-<a name="l00489"></a>00489 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be" title="Request a packet containing the initial header.">theora_encode_header</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, ogg_packet *op);
-<a name="l00490"></a>00490 
-<a name="l00502"></a>00502 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a" title="Request a comment header packet from provided metadata.">theora_encode_comment</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, ogg_packet *op);
-<a name="l00503"></a>00503 
-<a name="l00514"></a>00514 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2" title="Request a packet containing the codebook tables for the stream.">theora_encode_tables</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, ogg_packet *op);
-<a name="l00515"></a>00515 
-<a name="l00557"></a>00557 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.">theora_decode_header</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ci, <a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *cc,
-<a name="l00558"></a>00558                                 ogg_packet *op);
-<a name="l00559"></a>00559 
-<a name="l00568"></a>00568 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c" title="Initialize a theora_state handle for decoding.">theora_decode_init</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th, <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
-<a name="l00569"></a>00569 
-<a name="l00577"></a>00577 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975" title="Input a packet containing encoded data into the theora decoder.">theora_decode_packetin</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_packet *op);
-<a name="l00578"></a>00578 
-<a name="l00589"></a>00589 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa" title="Output the next available frame of decoded YUV data.">theora_decode_YUVout</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,<a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> *yuv);
-<a name="l00590"></a>00590 
-<a name="l00603"></a>00603 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b" title="Report whether a theora packet is a header or not This function does no verification beyond checking ...">theora_packet_isheader</a>(ogg_packet *op);
-<a name="l00604"></a>00604 
-<a name="l00615"></a>00615 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2" title="Report whether a theora packet is a keyframe or not.">theora_packet_iskeyframe</a>(ogg_packet *op);
-<a name="l00616"></a>00616 
-<a name="l00642"></a>00642 <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02" title="Report the granulepos shift radix.">theora_granule_shift</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ti);
-<a name="l00643"></a>00643 
-<a name="l00660"></a>00660 <span class="keyword">extern</span> ogg_int64_t <a class="code" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269" title="Convert a granulepos to an absolute frame index, starting at 0.">theora_granule_frame</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_int64_t granulepos);
-<a name="l00661"></a>00661 
-<a name="l00677"></a>00677 <span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6" title="Convert a granulepos to absolute time in seconds.">theora_granule_time</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_int64_t granulepos);
-<a name="l00678"></a>00678 
-<a name="l00685"></a>00685 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
-<a name="l00686"></a>00686 
-<a name="l00692"></a>00692 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d" title="Clear a theora_info structure.">theora_info_clear</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
-<a name="l00693"></a>00693 
-<a name="l00698"></a>00698 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb" title="Free all internal data associated with a theora_state handle.">theora_clear</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t);
-<a name="l00699"></a>00699 
-<a name="l00704"></a>00704 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0" title="Initialize an allocated theora_comment structure.">theora_comment_init</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc);
-<a name="l00705"></a>00705 
-<a name="l00718"></a>00718 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *comment);
-<a name="l00719"></a>00719 
-<a name="l00732"></a>00732 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc,
-<a name="l00733"></a>00733                                        <span class="keywordtype">char</span> *tag, <span class="keywordtype">char</span> *value);
-<a name="l00734"></a>00734 
-<a name="l00749"></a>00749 <span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc" title="Look up a comment value by tag.">theora_comment_query</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> count);
-<a name="l00750"></a>00750 
-<a name="l00760"></a>00760 <span class="keyword">extern</span> <span class="keywordtype">int</span>   <a class="code" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b" title="Look up the number of instances of a tag.">theora_comment_query_count</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag);
-<a name="l00761"></a>00761 
-<a name="l00766"></a>00766 <span class="keyword">extern</span> <span class="keywordtype">void</span>  <a class="code" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f" title="Clear an allocated theora_comment struct so that it can be freed.">theora_comment_clear</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc);
-<a name="l00767"></a>00767 
-<a name="l00776"></a>00776 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9" title="Encoder control function.">theora_control</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,<span class="keywordtype">int</span> req,<span class="keywordtype">void</span> *buf,<span class="keywordtype">size_t</span> buf_sz);
-<a name="l00777"></a>00777 
-<a name="l00778"></a>00778 <span class="comment">/* @} */</span> <span class="comment">/* end oldfuncs doxygen group */</span>
-<a name="l00779"></a>00779 
-<a name="l00780"></a>00780 <span class="preprocessor">#ifdef __cplusplus</span>
-<a name="l00781"></a>00781 <span class="preprocessor"></span>}
-<a name="l00782"></a>00782 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
-<a name="l00783"></a>00783 
-<a name="l00784"></a>00784 <span class="preprocessor">#endif </span><span class="comment">/* _O_THEORA_H_ */</span>
-</pre></div></div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle"><div class="title">theora.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="theora_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/********************************************************************</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> * by the Xiph.Org Foundation https://www.xiph.org/                 *</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> ********************************************************************</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"></span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment">  function:</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"></span> </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> ********************************************************************/</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="preprocessor">#ifndef OGG_THEORA_HEADER</span></div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="preprocessor">#define OGG_THEORA_HEADER</span></div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span></div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>{</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="preprocessor">#include &lt;stddef.h&gt;</span>     <span class="comment">/* for size_t */</span></div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="preprocessor">#include &lt;ogg/ogg.h&gt;</span></div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span><span class="comment">/*  @{ */</span></div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span> </div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="structyuv__buffer.html">  146</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">  147</a></span>    <span class="keywordtype">int</span>   <a class="code hl_variable" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">y_width</a>;      </div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">  148</a></span>    <span class="keywordtype">int</span>   <a class="code hl_variable" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">y_height</a>;     </div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">  149</a></span>    <span class="keywordtype">int</span>   <a class="code hl_variable" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">y_stride</a>;     </div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">  151</a></span>    <span class="keywordtype">int</span>   <a class="code hl_variable" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">uv_width</a>;     </div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">  152</a></span>    <span class="keywordtype">int</span>   <a class="code hl_variable" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">uv_height</a>;    </div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">  153</a></span>    <span class="keywordtype">int</span>   <a class="code hl_variable" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">uv_stride</a>;    </div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">  154</a></span>    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">y</a>;   </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">  155</a></span>    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">u</a>;   </div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">  156</a></span>    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">v</a>;   </div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>} <a class="code hl_struct" href="structyuv__buffer.html">yuv_buffer</a>;</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">  163</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">  164</a></span>  <a class="code hl_enumvalue" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>,    </div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">  165</a></span>  <a class="code hl_enumvalue" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>,   </div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">  166</a></span>  <a class="code hl_enumvalue" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>,  </div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>  <a class="code hl_enumvalue" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>         </div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">  168</a></span>} <a class="code hl_enumeration" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a>;</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">  177</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">  178</a></span>  <a class="code hl_enumvalue" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>,    </div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"><a class="line" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">  179</a></span>  <a class="code hl_enumvalue" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>,   </div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">  180</a></span>  <a class="code hl_enumvalue" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>,    </div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>  <a class="code hl_enumvalue" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>     </div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"><a class="line" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">  182</a></span>} <a class="code hl_enumeration" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a>;</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="structtheora__info.html">  205</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">  206</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">width</a>;          </div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">  207</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">height</a>;         </div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">  208</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">frame_width</a>;    </div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">  209</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">frame_height</a>;   </div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">  210</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">offset_x</a>;       </div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">  211</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">offset_y</a>;       </div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">  212</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">fps_numerator</a>;      </div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">  213</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">fps_denominator</a>;    </div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">  214</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">aspect_numerator</a>;   </div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">  215</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">aspect_denominator</a>; </div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">  216</a></span>  <a class="code hl_enumeration" href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> <a class="code hl_variable" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">colorspace</a>;     </div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">  217</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">target_bitrate</a>;     </div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">  218</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">quality</a>;  </div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"><a class="line" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">  219</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">quick_p</a>;  </div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>  <span class="comment">/* decode only */</span></div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">  222</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">version_major</a>;</div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">  223</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">version_minor</a>;</div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"><a class="line" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">  224</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">version_subminor</a>;</div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"><a class="line" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">  226</a></span>  <span class="keywordtype">void</span> *<a class="code hl_variable" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">codec_setup</a>;</div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span>  <span class="comment">/* encode only */</span></div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"><a class="line" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">  229</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">dropframes_p</a>;</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">  230</a></span>  <span class="keywordtype">int</span>           <a class="code hl_variable" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">keyframe_auto_p</a>;</div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"><a class="line" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">  231</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">keyframe_frequency</a>;</div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">  232</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">keyframe_frequency_force</a>;  <span class="comment">/* also used for decode init to</span></div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span><span class="comment">                                              get granpos shift correct */</span></div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"><a class="line" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">  234</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">keyframe_data_target_bitrate</a>;</div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"><a class="line" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">  235</a></span>  ogg_int32_t   <a class="code hl_variable" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">keyframe_auto_threshold</a>;</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"><a class="line" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">  236</a></span>  ogg_uint32_t  <a class="code hl_variable" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">keyframe_mindistance</a>;</div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">  237</a></span>  ogg_int32_t   <a class="code hl_variable" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">noise_sensitivity</a>;</div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">  238</a></span>  ogg_int32_t   <a class="code hl_variable" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">sharpness</a>;</div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"><a class="line" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">  240</a></span>  <a class="code hl_enumeration" href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> <a class="code hl_variable" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">pixelformat</a>;       </div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span>} <a class="code hl_struct" href="structtheora__info.html">theora_info</a>;</div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"><a class="line" href="structtheora__state.html">  246</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span>{</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"><a class="line" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">  247</a></span>  <a class="code hl_struct" href="structtheora__info.html">theora_info</a> *<a class="code hl_variable" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">i</a>;</div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"><a class="line" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">  248</a></span>  ogg_int64_t <a class="code hl_variable" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">granulepos</a>;</div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"><a class="line" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">  250</a></span>  <span class="keywordtype">void</span> *<a class="code hl_variable" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">internal_encode</a>;</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"><a class="line" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">  251</a></span>  <span class="keywordtype">void</span> *<a class="code hl_variable" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">internal_decode</a>;</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>} <a class="code hl_struct" href="structtheora__state.html">theora_state</a>;</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span> </div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"><a class="line" href="structtheora__comment.html">  274</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structtheora__comment.html">theora_comment</a>{</div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">  275</a></span>  <span class="keywordtype">char</span> **<a class="code hl_variable" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">user_comments</a>;         </div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"><a class="line" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">  276</a></span>  <span class="keywordtype">int</span>   *<a class="code hl_variable" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">comment_lengths</a>;       </div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">  277</a></span>  <span class="keywordtype">int</span>    <a class="code hl_variable" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">comments</a>;              </div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"><a class="line" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">  278</a></span>  <span class="keywordtype">char</span>  *<a class="code hl_variable" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">vendor</a>;                </div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"><a class="line" href="theora_8h.html#acaae73fc38efbc2ef0b0fb61dbbda3fc">  280</a></span>} <a class="code hl_typedef" href="theora_8h.html#acaae73fc38efbc2ef0b0fb61dbbda3fc">theora_comment</a>;</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span> </div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span><span class="comment">/* \anchor decctlcodes_old</span></div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span><span class="comment"> * These are the available request codes for theora_control()</span></div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span><span class="comment"> * when called with a decoder instance.</span></div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span><span class="comment"> * By convention decoder control codes are odd, to distinguish</span></div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span><span class="comment"> * them from \ref encctlcodes_old &quot;encoder control codes&quot; which</span></div>
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span><span class="comment"> * are even.</span></div>
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span><span class="comment"> * Note that since the 1.0 release, both the legacy and the final</span></div>
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span><span class="comment"> * implementation accept all the same control codes, but only the</span></div>
+<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span><span class="comment"> * final API declares the newer codes.</span></div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span><span class="comment"> * Keep any experimental or vendor-specific values above \c 0x8000.*/</span></div>
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span> </div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"><a class="line" href="theora_8h.html#ab31f251c9319f2140d247585d30b3d07">  305</a></span><span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span></div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="theora_8h.html#a87774c35e1a755a84e2d705b38ebef0d">  312</a></span><span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span></div>
+<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="theora_8h.html#a27e755e15b4b5604c54974b304037a49">  326</a></span><span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span></div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"><a class="line" href="theora_8h.html#a1e870c654d35394f0d490045df04e0f5">  335</a></span><span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span></div>
+<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span> </div>
+<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="theora_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">  352</a></span><span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span></div>
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"><a class="line" href="theora_8h.html#a382d685a39a34d8e6ba76b00d804efd8">  381</a></span><span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span></div>
+<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span> </div>
+<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="theora_8h.html#a9baf5bdd206e80c78a8fd44687e89783">  396</a></span><span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span></div>
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="theora_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">  411</a></span><span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span></div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span> </div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"><a class="line" href="theora_8h.html#aa4370e13ed3aea6441ccf69dcab2506e">  415</a></span><span class="preprocessor">#define OC_FAULT       -1       </span></div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"><a class="line" href="theora_8h.html#a43d15091b1a03a734a124e9a04d3be55">  416</a></span><span class="preprocessor">#define OC_EINVAL      -10      </span></div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="theora_8h.html#a38b9fa0af856d5930c534db26e2ac2d1">  417</a></span><span class="preprocessor">#define OC_DISABLED    -11      </span></div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"><a class="line" href="theora_8h.html#a809cbad2eb36be17a235a3cadfb737ba">  418</a></span><span class="preprocessor">#define OC_BADHEADER   -20      </span></div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"><a class="line" href="theora_8h.html#a9558d6d9eacd2273c8da27f945d725ad">  419</a></span><span class="preprocessor">#define OC_NOTFORMAT   -21      </span></div>
+<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"><a class="line" href="theora_8h.html#a4611cfd61160405721d1e2ab0ec2564b">  420</a></span><span class="preprocessor">#define OC_VERSION     -22      </span></div>
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="theora_8h.html#a895dc2597b3bf9c97bf7701c6eff5b0c">  421</a></span><span class="preprocessor">#define OC_IMPL        -23      </span></div>
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="theora_8h.html#a117774c062a63dfad2a5b4d092fa2bb1">  422</a></span><span class="preprocessor">#define OC_BADPACKET   -24      </span></div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="theora_8h.html#a60be4dc92c933eac3542bce3ce076496">  423</a></span><span class="preprocessor">#define OC_NEWPACKET   -25      </span></div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="theora_8h.html#a84a8d2f5080ad62b415a4e7551941cbb">  424</a></span><span class="preprocessor">#define OC_DUPFRAME    1        </span></div>
+<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"><a class="line" href="theora_8h.html#ac52e77d5dab481f2181c8162549c0cb9">  430</a></span><span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="theora_8h.html#ac52e77d5dab481f2181c8162549c0cb9">theora_version_string</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"><a class="line" href="theora_8h.html#ad181f4b19d455dcc2bef2533530b84c8">  441</a></span><span class="keyword">extern</span> ogg_uint32_t <a class="code hl_function" href="theora_8h.html#ad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span> </div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="theora_8h.html#a0f7ad4d4b2343278cb4ba8fb2bd5109a">  449</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *th, <a class="code hl_struct" href="structtheora__info.html">theora_info</a> *ti);</div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"><a class="line" href="theora_8h.html#ac0d33d896ca70cedfc94c5986d947078">  461</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#ac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *t, <a class="code hl_struct" href="structyuv__buffer.html">yuv_buffer</a> *yuv);</div>
+<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"><a class="line" href="theora_8h.html#a5f4929677a735bc2198c2309d235f1b3">  475</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a>( <a class="code hl_struct" href="structtheora__state.html">theora_state</a> *t, <span class="keywordtype">int</span> last_p,</div>
+<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span>                                    ogg_packet *op);</div>
+<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"><a class="line" href="theora_8h.html#a451feb58d6bde726edbae193689887be">  488</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a451feb58d6bde726edbae193689887be">theora_encode_header</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op);</div>
+<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"><a class="line" href="theora_8h.html#a45e8db0713eaaca0f1144f3724cb834a">  505</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a>(<a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op);</div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span> </div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"><a class="line" href="theora_8h.html#a5085baf20855b283fa01fc948505d9d2">  517</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op);</div>
+<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span> </div>
+<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"><a class="line" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82">  560</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a>(<a class="code hl_struct" href="structtheora__info.html">theora_info</a> *ci, <a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *cc,</div>
+<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span>                                ogg_packet *op);</div>
+<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span> </div>
+<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"><a class="line" href="theora_8h.html#a264907c66003799ff77ecbd09eb33d2c">  571</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *th, <a class="code hl_struct" href="structtheora__info.html">theora_info</a> *c);</div>
+<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span> </div>
+<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"><a class="line" href="theora_8h.html#aa65a9e53b46fd54ab344bd599fa96975">  580</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#aa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *th,ogg_packet *op);</div>
+<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span> </div>
+<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"><a class="line" href="theora_8h.html#a09d47c80e1e94bff0a46a496816b8daa">  592</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *th,<a class="code hl_struct" href="structyuv__buffer.html">yuv_buffer</a> *yuv);</div>
+<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span> </div>
+<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"><a class="line" href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b">  606</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a>(ogg_packet *op);</div>
+<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span> </div>
+<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"><a class="line" href="theora_8h.html#a39ccc8f847a748d7074c926b4fdd12b2">  618</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a>(ogg_packet *op);</div>
+<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span> </div>
+<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"><a class="line" href="theora_8h.html#acd9360e6a47139c761002410af457a02">  645</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#acd9360e6a47139c761002410af457a02">theora_granule_shift</a>(<a class="code hl_struct" href="structtheora__info.html">theora_info</a> *ti);</div>
+<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span> </div>
+<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"><a class="line" href="theora_8h.html#a7bfa3ceb2fb4b41a282456c56e1dd269">  663</a></span><span class="keyword">extern</span> ogg_int64_t <a class="code hl_function" href="theora_8h.html#a7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *th,ogg_int64_t granulepos);</div>
+<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span> </div>
+<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"><a class="line" href="theora_8h.html#a4376358b12b9fa23ce6fe21cb5c65ac6">  678</a></span><span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code hl_function" href="theora_8h.html#a4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *th,ogg_int64_t granulepos);</div>
+<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span> </div>
+<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"><a class="line" href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90">  686</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90">theora_info_init</a>(<a class="code hl_struct" href="structtheora__info.html">theora_info</a> *c);</div>
+<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span> </div>
+<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"><a class="line" href="theora_8h.html#aba7022d58edbc4825cacad03f68b3e0d">  693</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theora_8h.html#aba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a>(<a class="code hl_struct" href="structtheora__info.html">theora_info</a> *c);</div>
+<div class="line"><a id="l00694" name="l00694"></a><span class="lineno">  694</span> </div>
+<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"><a class="line" href="theora_8h.html#ab252d5d81b925136dda72e8f1c09c5eb">  699</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theora_8h.html#ab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *t);</div>
+<div class="line"><a id="l00700" name="l00700"></a><span class="lineno">  700</span> </div>
+<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"><a class="line" href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0">  705</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a>(<a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *tc);</div>
+<div class="line"><a id="l00706" name="l00706"></a><span class="lineno">  706</span> </div>
+<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"><a class="line" href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4">  719</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4">theora_comment_add</a>(<a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *tc, <span class="keywordtype">char</span> *comment);</div>
+<div class="line"><a id="l00720" name="l00720"></a><span class="lineno">  720</span> </div>
+<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"><a class="line" href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92">  733</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a>(<a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *tc,</div>
+<div class="line"><a id="l00734" name="l00734"></a><span class="lineno">  734</span>                                       <span class="keywordtype">char</span> *tag, <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a id="l00735" name="l00735"></a><span class="lineno">  735</span> </div>
+<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"><a class="line" href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd">  750</a></span><span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd">theora_comment_query</a>(<a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a id="l00751" name="l00751"></a><span class="lineno">  751</span> </div>
+<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"><a class="line" href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b">  761</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span>   <a class="code hl_function" href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a>(<a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag);</div>
+<div class="line"><a id="l00762" name="l00762"></a><span class="lineno">  762</span> </div>
+<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"><a class="line" href="theora_8h.html#a04c07c2eefba3a433e43f9fbde14719f">  767</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span>  <a class="code hl_function" href="theora_8h.html#a04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a>(<a class="code hl_struct" href="structtheora__comment.html">theora_comment</a> *tc);</div>
+<div class="line"><a id="l00768" name="l00768"></a><span class="lineno">  768</span> </div>
+<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"><a class="line" href="theora_8h.html#a186773db3bc8cd550047e7df1b2ba2c9">  777</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theora_8h.html#a186773db3bc8cd550047e7df1b2ba2c9">theora_control</a>(<a class="code hl_struct" href="structtheora__state.html">theora_state</a> *th,<span class="keywordtype">int</span> req,<span class="keywordtype">void</span> *buf,<span class="keywordtype">size_t</span> buf_sz);</div>
+<div class="line"><a id="l00778" name="l00778"></a><span class="lineno">  778</span> </div>
+<div class="line"><a id="l00779" name="l00779"></a><span class="lineno">  779</span><span class="comment">/* @} */</span> <span class="comment">/* end oldfuncs doxygen group */</span></div>
+<div class="line"><a id="l00780" name="l00780"></a><span class="lineno">  780</span> </div>
+<div class="line"><a id="l00781" name="l00781"></a><span class="lineno">  781</span><span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a id="l00782" name="l00782"></a><span class="lineno">  782</span>}</div>
+<div class="line"><a id="l00783" name="l00783"></a><span class="lineno">  783</span><span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00784" name="l00784"></a><span class="lineno">  784</span> </div>
+<div class="line"><a id="l00785" name="l00785"></a><span class="lineno">  785</span><span class="preprocessor">#endif </span><span class="comment">/* OGG_THEORA_HEADER */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="astructtheora__comment_html"><div class="ttname"><a href="structtheora__comment.html">theora_comment</a></div><div class="ttdoc">Comment header metadata.</div><div class="ttdef"><b>Definition:</b> theora.h:274</div></div>
+<div class="ttc" id="astructtheora__comment_html_a122393035c8352ff9be42d69e73aee00"><div class="ttname"><a href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment::comments</a></div><div class="ttdeci">int comments</div><div class="ttdoc">The total number of comment string vectors.</div><div class="ttdef"><b>Definition:</b> theora.h:277</div></div>
+<div class="ttc" id="astructtheora__comment_html_a1e236fd180dfce19be89081399444cf5"><div class="ttname"><a href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment::user_comments</a></div><div class="ttdeci">char ** user_comments</div><div class="ttdoc">An array of comment string vectors.</div><div class="ttdef"><b>Definition:</b> theora.h:275</div></div>
+<div class="ttc" id="astructtheora__comment_html_a5ab4a376d3c217282a684577c9c9f49a"><div class="ttname"><a href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment::comment_lengths</a></div><div class="ttdeci">int * comment_lengths</div><div class="ttdoc">An array of corresponding string vector lengths in bytes.</div><div class="ttdef"><b>Definition:</b> theora.h:276</div></div>
+<div class="ttc" id="astructtheora__comment_html_adb371baf8f0daed42af8b875cf8430ef"><div class="ttname"><a href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment::vendor</a></div><div class="ttdeci">char * vendor</div><div class="ttdoc">The vendor string identifying the encoder, null terminated.</div><div class="ttdef"><b>Definition:</b> theora.h:278</div></div>
+<div class="ttc" id="astructtheora__info_html"><div class="ttname"><a href="structtheora__info.html">theora_info</a></div><div class="ttdoc">Theora bitstream info.</div><div class="ttdef"><b>Definition:</b> theora.h:205</div></div>
+<div class="ttc" id="astructtheora__info_html_a03e1b3e337af5f9dabaaaeb9050f145a"><div class="ttname"><a href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info::keyframe_frequency</a></div><div class="ttdeci">ogg_uint32_t keyframe_frequency</div><div class="ttdef"><b>Definition:</b> theora.h:231</div></div>
+<div class="ttc" id="astructtheora__info_html_a0cfba041767ae2416dd190a406afe713"><div class="ttname"><a href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info::target_bitrate</a></div><div class="ttdeci">int target_bitrate</div><div class="ttdoc">nominal bitrate in bits per second</div><div class="ttdef"><b>Definition:</b> theora.h:217</div></div>
+<div class="ttc" id="astructtheora__info_html_a17c2fc651bb3329f1ea6b13ff1d3957b"><div class="ttname"><a href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info::width</a></div><div class="ttdeci">ogg_uint32_t width</div><div class="ttdoc">encoded frame width</div><div class="ttdef"><b>Definition:</b> theora.h:206</div></div>
+<div class="ttc" id="astructtheora__info_html_a23648173369174f687085c0ce85ef30e"><div class="ttname"><a href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info::keyframe_auto_p</a></div><div class="ttdeci">int keyframe_auto_p</div><div class="ttdef"><b>Definition:</b> theora.h:230</div></div>
+<div class="ttc" id="astructtheora__info_html_a287e4c194f1d2e6deb39d59f1748ea48"><div class="ttname"><a href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info::frame_height</a></div><div class="ttdeci">ogg_uint32_t frame_height</div><div class="ttdoc">display frame height</div><div class="ttdef"><b>Definition:</b> theora.h:209</div></div>
+<div class="ttc" id="astructtheora__info_html_a2dfae4fd175dbd19254eaf0697778ff5"><div class="ttname"><a href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info::quick_p</a></div><div class="ttdeci">int quick_p</div><div class="ttdoc">Quick encode/decode.</div><div class="ttdef"><b>Definition:</b> theora.h:219</div></div>
+<div class="ttc" id="astructtheora__info_html_a3478199aa5ab213816c1819f70085ad7"><div class="ttname"><a href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info::fps_numerator</a></div><div class="ttdeci">ogg_uint32_t fps_numerator</div><div class="ttdoc">frame rate numerator</div><div class="ttdef"><b>Definition:</b> theora.h:212</div></div>
+<div class="ttc" id="astructtheora__info_html_a3fb695de2b2f56dd0203b9e2eb0df1cc"><div class="ttname"><a href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info::sharpness</a></div><div class="ttdeci">ogg_int32_t sharpness</div><div class="ttdef"><b>Definition:</b> theora.h:238</div></div>
+<div class="ttc" id="astructtheora__info_html_a588942d1ee90a26a7effdf6a0e98b9ce"><div class="ttname"><a href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info::keyframe_data_target_bitrate</a></div><div class="ttdeci">ogg_uint32_t keyframe_data_target_bitrate</div><div class="ttdef"><b>Definition:</b> theora.h:234</div></div>
+<div class="ttc" id="astructtheora__info_html_a5a3ed8c79815fba1aa06c3f7d8e48b35"><div class="ttname"><a href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info::aspect_numerator</a></div><div class="ttdeci">ogg_uint32_t aspect_numerator</div><div class="ttdoc">pixel aspect ratio numerator</div><div class="ttdef"><b>Definition:</b> theora.h:214</div></div>
+<div class="ttc" id="astructtheora__info_html_a5eaba99c96706d47b426ab7b7602dc5d"><div class="ttname"><a href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info::colorspace</a></div><div class="ttdeci">theora_colorspace colorspace</div><div class="ttdoc">colorspace</div><div class="ttdef"><b>Definition:</b> theora.h:216</div></div>
+<div class="ttc" id="astructtheora__info_html_a65ab4376ab5242ee82e06c78fb7008ab"><div class="ttname"><a href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info::pixelformat</a></div><div class="ttdeci">theora_pixelformat pixelformat</div><div class="ttdoc">chroma subsampling mode to expect</div><div class="ttdef"><b>Definition:</b> theora.h:240</div></div>
+<div class="ttc" id="astructtheora__info_html_a719a1d77a4a3bfeab79aa5747dbbb04c"><div class="ttname"><a href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info::codec_setup</a></div><div class="ttdeci">void * codec_setup</div><div class="ttdef"><b>Definition:</b> theora.h:226</div></div>
+<div class="ttc" id="astructtheora__info_html_a71a4748a5f31bd58d0e403b7806c980d"><div class="ttname"><a href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info::quality</a></div><div class="ttdeci">int quality</div><div class="ttdoc">Nominal quality setting, 0-63.</div><div class="ttdef"><b>Definition:</b> theora.h:218</div></div>
+<div class="ttc" id="astructtheora__info_html_a75eda4f30270d833c7b9dba43932a06a"><div class="ttname"><a href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info::version_minor</a></div><div class="ttdeci">unsigned char version_minor</div><div class="ttdef"><b>Definition:</b> theora.h:223</div></div>
+<div class="ttc" id="astructtheora__info_html_a7c5ebb9e6700aaef87f29f7c6074e474"><div class="ttname"><a href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info::version_major</a></div><div class="ttdeci">unsigned char version_major</div><div class="ttdef"><b>Definition:</b> theora.h:222</div></div>
+<div class="ttc" id="astructtheora__info_html_a8f28f4018a25634d40e4ae861fbbccfa"><div class="ttname"><a href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info::frame_width</a></div><div class="ttdeci">ogg_uint32_t frame_width</div><div class="ttdoc">display frame width</div><div class="ttdef"><b>Definition:</b> theora.h:208</div></div>
+<div class="ttc" id="astructtheora__info_html_a91c3922097ba32a85acd584a01dc2c93"><div class="ttname"><a href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info::offset_y</a></div><div class="ttdeci">ogg_uint32_t offset_y</div><div class="ttdoc">vertical offset of the displayed frame</div><div class="ttdef"><b>Definition:</b> theora.h:211</div></div>
+<div class="ttc" id="astructtheora__info_html_a95cb8958e29ad3d24047ee8f9e7fd99b"><div class="ttname"><a href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info::keyframe_auto_threshold</a></div><div class="ttdeci">ogg_int32_t keyframe_auto_threshold</div><div class="ttdef"><b>Definition:</b> theora.h:235</div></div>
+<div class="ttc" id="astructtheora__info_html_a9aa7e826e0323a4ae8cd8646a6cfbfea"><div class="ttname"><a href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info::fps_denominator</a></div><div class="ttdeci">ogg_uint32_t fps_denominator</div><div class="ttdoc">frame rate denominator</div><div class="ttdef"><b>Definition:</b> theora.h:213</div></div>
+<div class="ttc" id="astructtheora__info_html_aa07967ecd6e20bd2928ead42b6397b3d"><div class="ttname"><a href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info::version_subminor</a></div><div class="ttdeci">unsigned char version_subminor</div><div class="ttdef"><b>Definition:</b> theora.h:224</div></div>
+<div class="ttc" id="astructtheora__info_html_aa79ca8c0e77a884d4487fd627fae32e9"><div class="ttname"><a href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info::keyframe_mindistance</a></div><div class="ttdeci">ogg_uint32_t keyframe_mindistance</div><div class="ttdef"><b>Definition:</b> theora.h:236</div></div>
+<div class="ttc" id="astructtheora__info_html_ac4789034f547b57d1075e035050eeed9"><div class="ttname"><a href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info::noise_sensitivity</a></div><div class="ttdeci">ogg_int32_t noise_sensitivity</div><div class="ttdef"><b>Definition:</b> theora.h:237</div></div>
+<div class="ttc" id="astructtheora__info_html_ad9d2e22c44a53473010e6d1042dfe0d8"><div class="ttname"><a href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info::keyframe_frequency_force</a></div><div class="ttdeci">ogg_uint32_t keyframe_frequency_force</div><div class="ttdef"><b>Definition:</b> theora.h:232</div></div>
+<div class="ttc" id="astructtheora__info_html_ae6f0274fc4a7f285c422d91abb35f9c6"><div class="ttname"><a href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info::height</a></div><div class="ttdeci">ogg_uint32_t height</div><div class="ttdoc">encoded frame height</div><div class="ttdef"><b>Definition:</b> theora.h:207</div></div>
+<div class="ttc" id="astructtheora__info_html_af294db65a8363a0bcf43f4727763b291"><div class="ttname"><a href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info::dropframes_p</a></div><div class="ttdeci">int dropframes_p</div><div class="ttdef"><b>Definition:</b> theora.h:229</div></div>
+<div class="ttc" id="astructtheora__info_html_af5949a02bef29512f2705e6f6c944e3b"><div class="ttname"><a href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info::offset_x</a></div><div class="ttdeci">ogg_uint32_t offset_x</div><div class="ttdoc">horizontal offset of the displayed frame</div><div class="ttdef"><b>Definition:</b> theora.h:210</div></div>
+<div class="ttc" id="astructtheora__info_html_afebc4d0cbfb34b68c833a8c79e83ae12"><div class="ttname"><a href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info::aspect_denominator</a></div><div class="ttdeci">ogg_uint32_t aspect_denominator</div><div class="ttdoc">pixel aspect ratio denominator</div><div class="ttdef"><b>Definition:</b> theora.h:215</div></div>
+<div class="ttc" id="astructtheora__state_html"><div class="ttname"><a href="structtheora__state.html">theora_state</a></div><div class="ttdoc">Codec internal state and context.</div><div class="ttdef"><b>Definition:</b> theora.h:246</div></div>
+<div class="ttc" id="astructtheora__state_html_a0efc7ac581ef260b0ca17f518ace0731"><div class="ttname"><a href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state::i</a></div><div class="ttdeci">theora_info * i</div><div class="ttdef"><b>Definition:</b> theora.h:247</div></div>
+<div class="ttc" id="astructtheora__state_html_a1fbfd82fb7210cbcc4233cb680ec2af6"><div class="ttname"><a href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state::internal_encode</a></div><div class="ttdeci">void * internal_encode</div><div class="ttdef"><b>Definition:</b> theora.h:250</div></div>
+<div class="ttc" id="astructtheora__state_html_a5dd344a3f79ea7501b18c756772fab7b"><div class="ttname"><a href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state::granulepos</a></div><div class="ttdeci">ogg_int64_t granulepos</div><div class="ttdef"><b>Definition:</b> theora.h:248</div></div>
+<div class="ttc" id="astructtheora__state_html_ad20c4eebbc5ed9764cf03ba8b90e796e"><div class="ttname"><a href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state::internal_decode</a></div><div class="ttdeci">void * internal_decode</div><div class="ttdef"><b>Definition:</b> theora.h:251</div></div>
+<div class="ttc" id="astructyuv__buffer_html"><div class="ttname"><a href="structyuv__buffer.html">yuv_buffer</a></div><div class="ttdoc">A YUV buffer for passing uncompressed frames to and from the codec.</div><div class="ttdef"><b>Definition:</b> theora.h:146</div></div>
+<div class="ttc" id="astructyuv__buffer_html_a5a8b60e012247e2caffcbbaca99414e0"><div class="ttname"><a href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer::y_height</a></div><div class="ttdeci">int y_height</div><div class="ttdoc">Height of the luminance plane.</div><div class="ttdef"><b>Definition:</b> theora.h:148</div></div>
+<div class="ttc" id="astructyuv__buffer_html_a640f1a0b456d3807f9f0538b22f10097"><div class="ttname"><a href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer::uv_height</a></div><div class="ttdeci">int uv_height</div><div class="ttdoc">Height of the chroma planes.</div><div class="ttdef"><b>Definition:</b> theora.h:152</div></div>
+<div class="ttc" id="astructyuv__buffer_html_a725727c70eeced6b8c90866973399ac1"><div class="ttname"><a href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer::y</a></div><div class="ttdeci">unsigned char * y</div><div class="ttdoc">Pointer to start of luminance data.</div><div class="ttdef"><b>Definition:</b> theora.h:154</div></div>
+<div class="ttc" id="astructyuv__buffer_html_a8b1857afe3ffac28f259499a57a559e1"><div class="ttname"><a href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer::u</a></div><div class="ttdeci">unsigned char * u</div><div class="ttdoc">Pointer to start of Cb data.</div><div class="ttdef"><b>Definition:</b> theora.h:155</div></div>
+<div class="ttc" id="astructyuv__buffer_html_a8c59a57c35af0be519ee47f15e49fe2b"><div class="ttname"><a href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer::uv_width</a></div><div class="ttdeci">int uv_width</div><div class="ttdoc">Width of the Cb and Cr chroma planes.</div><div class="ttdef"><b>Definition:</b> theora.h:151</div></div>
+<div class="ttc" id="astructyuv__buffer_html_a9cdf61834c11b2351640a4a243ad0549"><div class="ttname"><a href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer::y_stride</a></div><div class="ttdeci">int y_stride</div><div class="ttdoc">Offset in bytes between successive rows.</div><div class="ttdef"><b>Definition:</b> theora.h:149</div></div>
+<div class="ttc" id="astructyuv__buffer_html_aa429491dd112adb0254672c59ef55075"><div class="ttname"><a href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer::v</a></div><div class="ttdeci">unsigned char * v</div><div class="ttdoc">Pointer to start of Cr data.</div><div class="ttdef"><b>Definition:</b> theora.h:156</div></div>
+<div class="ttc" id="astructyuv__buffer_html_aaa6c06c071da933231647238418d5fc0"><div class="ttname"><a href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer::y_width</a></div><div class="ttdeci">int y_width</div><div class="ttdoc">Width of the Y' luminance plane.</div><div class="ttdef"><b>Definition:</b> theora.h:147</div></div>
+<div class="ttc" id="astructyuv__buffer_html_ab265cc24ffb5650bf52daf223b0debb9"><div class="ttname"><a href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer::uv_stride</a></div><div class="ttdeci">int uv_stride</div><div class="ttdoc">Offset between successive chroma rows.</div><div class="ttdef"><b>Definition:</b> theora.h:153</div></div>
+<div class="ttc" id="atheora_8h_html_a02915e63c1bd733ee291f577a8b75a82"><div class="ttname"><a href="theora_8h.html#a02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a></div><div class="ttdeci">int theora_decode_header(theora_info *ci, theora_comment *cc, ogg_packet *op)</div><div class="ttdoc">Decode an Ogg packet, with the expectation that the packet contains an initial header,...</div></div>
+<div class="ttc" id="atheora_8h_html_a04c07c2eefba3a433e43f9fbde14719f"><div class="ttname"><a href="theora_8h.html#a04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a></div><div class="ttdeci">void theora_comment_clear(theora_comment *tc)</div><div class="ttdoc">Clear an allocated theora_comment struct so that it can be freed.</div></div>
+<div class="ttc" id="atheora_8h_html_a09d47c80e1e94bff0a46a496816b8daa"><div class="ttname"><a href="theora_8h.html#a09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a></div><div class="ttdeci">int theora_decode_YUVout(theora_state *th, yuv_buffer *yuv)</div><div class="ttdoc">Output the next available frame of decoded YUV data.</div></div>
+<div class="ttc" id="atheora_8h_html_a0f7ad4d4b2343278cb4ba8fb2bd5109a"><div class="ttname"><a href="theora_8h.html#a0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a></div><div class="ttdeci">int theora_encode_init(theora_state *th, theora_info *ti)</div><div class="ttdoc">Initialize the theora encoder.</div></div>
+<div class="ttc" id="atheora_8h_html_a10f66a3c752442a3e0c0098e0f88df8b"><div class="ttname"><a href="theora_8h.html#a10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a></div><div class="ttdeci">int theora_comment_query_count(theora_comment *tc, char *tag)</div><div class="ttdoc">Look up the number of instances of a tag.</div></div>
+<div class="ttc" id="atheora_8h_html_a186773db3bc8cd550047e7df1b2ba2c9"><div class="ttname"><a href="theora_8h.html#a186773db3bc8cd550047e7df1b2ba2c9">theora_control</a></div><div class="ttdeci">int theora_control(theora_state *th, int req, void *buf, size_t buf_sz)</div><div class="ttdoc">Encoder control function.</div></div>
+<div class="ttc" id="atheora_8h_html_a264907c66003799ff77ecbd09eb33d2c"><div class="ttname"><a href="theora_8h.html#a264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a></div><div class="ttdeci">int theora_decode_init(theora_state *th, theora_info *c)</div><div class="ttdoc">Initialize a theora_state handle for decoding.</div></div>
+<div class="ttc" id="atheora_8h_html_a3091c87d48f1faba018c5956379a6d90"><div class="ttname"><a href="theora_8h.html#a3091c87d48f1faba018c5956379a6d90">theora_info_init</a></div><div class="ttdeci">void theora_info_init(theora_info *c)</div><div class="ttdoc">Initialize a theora_info structure.</div></div>
+<div class="ttc" id="atheora_8h_html_a339bd80b5bf4bb168b7052d8ec0b5a92"><div class="ttname"><a href="theora_8h.html#a339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a></div><div class="ttdeci">void theora_comment_add_tag(theora_comment *tc, char *tag, char *value)</div><div class="ttdoc">Add a comment to an initialized theora_comment structure.</div></div>
+<div class="ttc" id="atheora_8h_html_a39ccc8f847a748d7074c926b4fdd12b2"><div class="ttname"><a href="theora_8h.html#a39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a></div><div class="ttdeci">int theora_packet_iskeyframe(ogg_packet *op)</div><div class="ttdoc">Report whether a theora packet is a keyframe or not.</div></div>
+<div class="ttc" id="atheora_8h_html_a4376358b12b9fa23ce6fe21cb5c65ac6"><div class="ttname"><a href="theora_8h.html#a4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a></div><div class="ttdeci">double theora_granule_time(theora_state *th, ogg_int64_t granulepos)</div><div class="ttdoc">Convert a granulepos to absolute time in seconds.</div></div>
+<div class="ttc" id="atheora_8h_html_a451feb58d6bde726edbae193689887be"><div class="ttname"><a href="theora_8h.html#a451feb58d6bde726edbae193689887be">theora_encode_header</a></div><div class="ttdeci">int theora_encode_header(theora_state *t, ogg_packet *op)</div><div class="ttdoc">Request a packet containing the initial header.</div></div>
+<div class="ttc" id="atheora_8h_html_a45e8db0713eaaca0f1144f3724cb834a"><div class="ttname"><a href="theora_8h.html#a45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a></div><div class="ttdeci">int theora_encode_comment(theora_comment *tc, ogg_packet *op)</div><div class="ttdoc">Request a comment header packet from provided metadata.</div></div>
+<div class="ttc" id="atheora_8h_html_a5085baf20855b283fa01fc948505d9d2"><div class="ttname"><a href="theora_8h.html#a5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a></div><div class="ttdeci">int theora_encode_tables(theora_state *t, ogg_packet *op)</div><div class="ttdoc">Request a packet containing the codebook tables for the stream.</div></div>
+<div class="ttc" id="atheora_8h_html_a5f4929677a735bc2198c2309d235f1b3"><div class="ttname"><a href="theora_8h.html#a5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a></div><div class="ttdeci">int theora_encode_packetout(theora_state *t, int last_p, ogg_packet *op)</div><div class="ttdoc">Request the next packet of encoded video.</div></div>
+<div class="ttc" id="atheora_8h_html_a650642ed23894e41109bbc42ec393ed4"><div class="ttname"><a href="theora_8h.html#a650642ed23894e41109bbc42ec393ed4">theora_comment_add</a></div><div class="ttdeci">void theora_comment_add(theora_comment *tc, char *comment)</div><div class="ttdoc">Add a comment to an initialized theora_comment structure.</div></div>
+<div class="ttc" id="atheora_8h_html_a7bfa3ceb2fb4b41a282456c56e1dd269"><div class="ttname"><a href="theora_8h.html#a7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a></div><div class="ttdeci">ogg_int64_t theora_granule_frame(theora_state *th, ogg_int64_t granulepos)</div><div class="ttdoc">Convert a granulepos to an absolute frame index, starting at 0.</div></div>
+<div class="ttc" id="atheora_8h_html_a811b92785df3bdbbebb3de612d9d6ce0"><div class="ttname"><a href="theora_8h.html#a811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a></div><div class="ttdeci">void theora_comment_init(theora_comment *tc)</div><div class="ttdoc">Initialize an allocated theora_comment structure.</div></div>
+<div class="ttc" id="atheora_8h_html_aa567da4ce591f7373149ce3ef3acdac9"><div class="ttname"><a href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a></div><div class="ttdeci">theora_colorspace</div><div class="ttdoc">A Colorspace.</div><div class="ttdef"><b>Definition:</b> theora.h:163</div></div>
+<div class="ttc" id="atheora_8h_html_aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a"><div class="ttname"><a href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a></div><div class="ttdeci">@ OC_CS_ITU_REC_470BG</div><div class="ttdoc">This is the best option for 'PAL' content.</div><div class="ttdef"><b>Definition:</b> theora.h:166</div></div>
+<div class="ttc" id="atheora_8h_html_aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186"><div class="ttname"><a href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a></div><div class="ttdeci">@ OC_CS_NSPACES</div><div class="ttdoc">This marks the end of the defined colorspaces.</div><div class="ttdef"><b>Definition:</b> theora.h:167</div></div>
+<div class="ttc" id="atheora_8h_html_aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294"><div class="ttname"><a href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a></div><div class="ttdeci">@ OC_CS_ITU_REC_470M</div><div class="ttdoc">This is the best option for 'NTSC' content.</div><div class="ttdef"><b>Definition:</b> theora.h:165</div></div>
+<div class="ttc" id="atheora_8h_html_aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f"><div class="ttname"><a href="theora_8h.html#aa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a></div><div class="ttdeci">@ OC_CS_UNSPECIFIED</div><div class="ttdoc">The colorspace is unknown or unspecified.</div><div class="ttdef"><b>Definition:</b> theora.h:164</div></div>
+<div class="ttc" id="atheora_8h_html_aa65a9e53b46fd54ab344bd599fa96975"><div class="ttname"><a href="theora_8h.html#aa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a></div><div class="ttdeci">int theora_decode_packetin(theora_state *th, ogg_packet *op)</div><div class="ttdoc">Input a packet containing encoded data into the theora decoder.</div></div>
+<div class="ttc" id="atheora_8h_html_ab252d5d81b925136dda72e8f1c09c5eb"><div class="ttname"><a href="theora_8h.html#ab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a></div><div class="ttdeci">void theora_clear(theora_state *t)</div><div class="ttdoc">Free all internal data associated with a theora_state handle.</div></div>
+<div class="ttc" id="atheora_8h_html_ab969f9d0407683f0e5abe73d0839a25b"><div class="ttname"><a href="theora_8h.html#ab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a></div><div class="ttdeci">int theora_packet_isheader(ogg_packet *op)</div><div class="ttdoc">Report whether a theora packet is a header or not This function does no verification beyond checking ...</div></div>
+<div class="ttc" id="atheora_8h_html_aba7022d58edbc4825cacad03f68b3e0d"><div class="ttname"><a href="theora_8h.html#aba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a></div><div class="ttdeci">void theora_info_clear(theora_info *c)</div><div class="ttdoc">Clear a theora_info structure.</div></div>
+<div class="ttc" id="atheora_8h_html_ac0d33d896ca70cedfc94c5986d947078"><div class="ttname"><a href="theora_8h.html#ac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a></div><div class="ttdeci">int theora_encode_YUVin(theora_state *t, yuv_buffer *yuv)</div><div class="ttdoc">Submit a YUV buffer to the theora encoder.</div></div>
+<div class="ttc" id="atheora_8h_html_ac52e77d5dab481f2181c8162549c0cb9"><div class="ttname"><a href="theora_8h.html#ac52e77d5dab481f2181c8162549c0cb9">theora_version_string</a></div><div class="ttdeci">const char * theora_version_string(void)</div><div class="ttdoc">Retrieve a human-readable string to identify the encoder vendor and version.</div></div>
+<div class="ttc" id="atheora_8h_html_ac9e0e9ad7e6d3b76129f9660bcad5ebd"><div class="ttname"><a href="theora_8h.html#ac9e0e9ad7e6d3b76129f9660bcad5ebd">theora_comment_query</a></div><div class="ttdeci">char * theora_comment_query(theora_comment *tc, char *tag, int count)</div><div class="ttdoc">Look up a comment value by tag.</div></div>
+<div class="ttc" id="atheora_8h_html_acaae73fc38efbc2ef0b0fb61dbbda3fc"><div class="ttname"><a href="theora_8h.html#acaae73fc38efbc2ef0b0fb61dbbda3fc">theora_comment</a></div><div class="ttdeci">struct theora_comment theora_comment</div><div class="ttdoc">Comment header metadata.</div></div>
+<div class="ttc" id="atheora_8h_html_acd9360e6a47139c761002410af457a02"><div class="ttname"><a href="theora_8h.html#acd9360e6a47139c761002410af457a02">theora_granule_shift</a></div><div class="ttdeci">int theora_granule_shift(theora_info *ti)</div><div class="ttdoc">Report the granulepos shift radix.</div></div>
+<div class="ttc" id="atheora_8h_html_ad181f4b19d455dcc2bef2533530b84c8"><div class="ttname"><a href="theora_8h.html#ad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a></div><div class="ttdeci">ogg_uint32_t theora_version_number(void)</div><div class="ttdoc">Retrieve a 32-bit version number.</div></div>
+<div class="ttc" id="atheora_8h_html_ae169da05bfaaf4e964a6866552d45079"><div class="ttname"><a href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a></div><div class="ttdeci">theora_pixelformat</div><div class="ttdoc">A Chroma subsampling.</div><div class="ttdef"><b>Definition:</b> theora.h:177</div></div>
+<div class="ttc" id="atheora_8h_html_ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044"><div class="ttname"><a href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a></div><div class="ttdeci">@ OC_PF_444</div><div class="ttdoc">No chroma subsampling at all (4:4:4)</div><div class="ttdef"><b>Definition:</b> theora.h:181</div></div>
+<div class="ttc" id="atheora_8h_html_ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b"><div class="ttname"><a href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a></div><div class="ttdeci">@ OC_PF_422</div><div class="ttdoc">Horizonatal chroma subsampling by 2 (4:2:2)</div><div class="ttdef"><b>Definition:</b> theora.h:180</div></div>
+<div class="ttc" id="atheora_8h_html_ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b"><div class="ttname"><a href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a></div><div class="ttdeci">@ OC_PF_420</div><div class="ttdoc">Chroma subsampling by 2 in each direction (4:2:0)</div><div class="ttdef"><b>Definition:</b> theora.h:178</div></div>
+<div class="ttc" id="atheora_8h_html_ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb"><div class="ttname"><a href="theora_8h.html#ae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a></div><div class="ttdeci">@ OC_PF_RSVD</div><div class="ttdoc">Reserved value.</div><div class="ttdef"><b>Definition:</b> theora.h:179</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/theoradec_8h.html b/doc/libtheora-1.2/theoradec_8h.html
index e9c8e21..f9770f3 100644
--- a/doc/libtheora-1.2/theoradec_8h.html
+++ b/doc/libtheora-1.2/theoradec_8h.html
@@ -1,373 +1,738 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theoradec.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
+</div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Defines</a> &#124;
-<a href="#typedef-members">Typedefs</a>  </div>
-  <div class="headertitle">
-<h1>theoradec.h File Reference</h1>  </div>
-</div>
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle"><div class="title">theoradec.h File Reference</div></div>
+</div><!--header-->
 <div class="contents">
 
 <p>The <code>libtheoradec</code> C decoding API.  
-<a href="#_details">More...</a></p>
-<code>#include &lt;stddef.h&gt;</code><br/>
-<code>#include &lt;ogg/ogg.h&gt;</code><br/>
-<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br/>
-
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;stddef.h&gt;</code><br />
+<code>#include &lt;ogg/ogg.h&gt;</code><br />
+<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br />
+</div>
 <p><a href="theoradec_8h_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
 Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>.  <a href="structth__stripe__callback.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">_O_THEORA_THEORADEC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">th_decode_ctl() codes</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp638dfd34390d0a936dbf76caf938d78d"></a> <a class="anchor" id="decctlcodes"></a> These are the available request codes for <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>. By convention, these are odd, to distinguish them from the <a class="el" href="theoraenc_8h.html#encctlcodes">encoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum post-processing level.  <a href="#ab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the post-processing level.  <a href="#a87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the granule position.  <a href="#a1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">TH_DECCTL_SET_STRIPE_CB</a>&nbsp;&nbsp;&nbsp;(7)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the striped decode callback function.  <a href="#ac95cc9e109474b0fa4bb920ab2cfdf1e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">TH_DECCTL_SET_TELEMETRY_MBMODE</a>&nbsp;&nbsp;&nbsp;(9)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the macroblock display mode.  <a href="#a8d5e0b9b4c8898f93f241acbeb7e7ffb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">TH_DECCTL_SET_TELEMETRY_MV</a>&nbsp;&nbsp;&nbsp;(11)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the motion vector display mode.  <a href="#a829285a03d24832c583f33c6357df8aa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">TH_DECCTL_SET_TELEMETRY_QI</a>&nbsp;&nbsp;&nbsp;(13)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the adaptive quantization display mode.  <a href="#ae3e2f7674ad92fe67b63915d48c9df5b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">TH_DECCTL_SET_TELEMETRY_BITS</a>&nbsp;&nbsp;&nbsp;(15)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the bitstream breakdown visualization mode.  <a href="#a7f43fec07486f8a5f00e92aab7d44a25"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>.  <a href="structth__stripe__callback.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a01a53a08096cec23bab65f2680595c72"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a01a53a08096cec23bab65f2680595c72">OGG_THEORA_THEORADEC_HEADER</a>&#160;&#160;&#160;(1)</td></tr>
+<tr class="separator:a01a53a08096cec23bab65f2680595c72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
 Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a> )(void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function for striped decode.  <a href="#a25dfc8713157545abd81eda476ca4b54"></a><br/></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Decoder state</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp20ad7456b6a1ebc1cb57f3e51d4d7bc3"></a>The following data structures are opaque, and their contents are not publicly defined by this API.</p>
-<p>Referring to their internals directly is unsupported, and may break without warning. </p>
+<tr><td colspan="2"><div class="groupText"><p >The following data structures are opaque, and their contents are not publicly defined by this API.</p>
+<p >Referring to their internals directly is unsupported, and may break without warning. </p>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The decoder context.  <a href="#a843d70bb02563885a8d54b9c1a781729"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Setup information.  <a href="#ab71cd2657455cc27d6c0127c66a89f28"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
+<tr class="memitem:a843d70bb02563885a8d54b9c1a781729"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td></tr>
+<tr class="memdesc:a843d70bb02563885a8d54b9c1a781729"><td class="mdescLeft">&#160;</td><td class="mdescRight">The decoder context.  <a href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">More...</a><br /></td></tr>
+<tr class="separator:a843d70bb02563885a8d54b9c1a781729"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab71cd2657455cc27d6c0127c66a89f28"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td></tr>
+<tr class="memdesc:ab71cd2657455cc27d6c0127c66a89f28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup information.  <a href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">More...</a><br /></td></tr>
+<tr class="separator:ab71cd2657455cc27d6c0127c66a89f28"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
 Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Functions for decoding</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9d29c94aa62f20426aa5ff062c7daedd"></a>You must link to <code>libtheoradec</code> if you use any of the functions in this section.</p>
-<p>The functions are listed in the order they are used in a typical decode. The basic steps are:</p>
-<ul>
-<li>Parse the header packets by repeatedly calling <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>.</li>
-<li>Allocate a <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle with <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</li>
-<li>Call <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> to free any memory used for codec setup information.</li>
-<li>Perform any additional decoder configuration with <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</li>
+<tr><td colspan="2"><div class="groupText"><p >You must link to <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p >The functions are listed in the order they are used in a typical decode. The basic steps are:</p><ul>
+<li>Parse the header packets by repeatedly calling <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>.</li>
+<li>Allocate a <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle with <a class="el" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898" title="Allocates a decoder instance.">th_decode_alloc()</a>.</li>
+<li>Call <a class="el" href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> to free any memory used for codec setup information.</li>
+<li>Perform any additional decoder configuration with <a class="el" href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</li>
 <li>For each video data packet:<ul>
-<li>Submit the packet to the decoder via <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>.</li>
-<li>Retrieve the uncompressed video data via <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>.</li>
+<li>Submit the packet to the decoder via <a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>.</li>
+<li>Retrieve the uncompressed video data via <a class="el" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>.</li>
 </ul>
 </li>
-<li>Call <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free()</a> to release all decoder memory. </li>
+<li>Call <a class="el" href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free()</a> to release all decoder memory. </li>
 </ul>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a> (<a class="el" href="structth__info.html">th_info</a> *_info, <a class="el" href="structth__comment.html">th_comment</a> *_tc, <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup, ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decodes the header packets of a Theora stream.  <a href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">th_decode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info, const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates a decoder instance.  <a href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a> (<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases all storage used for the decoder setup information.  <a href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, int _req, void *_buf, size_t _buf_sz)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decoder control function.  <a href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits a packet containing encoded video data to the decoder.  <a href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next available frame of decoded Y'CbCr data.  <a href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated decoder instance.  <a href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0"></a><br/></td></tr>
+<tr class="memitem:a006d01d36fbe64768c571e6a12b7fc50"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a> (<a class="el" href="structth__info.html">th_info</a> *_info, <a class="el" href="structth__comment.html">th_comment</a> *_tc, <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup, ogg_packet *_op)</td></tr>
+<tr class="memdesc:a006d01d36fbe64768c571e6a12b7fc50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes the header packets of a Theora stream.  <a href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50">More...</a><br /></td></tr>
+<tr class="separator:a006d01d36fbe64768c571e6a12b7fc50"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a81888d90a9654eec3878706bd8605898"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898">th_decode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info, const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr class="memdesc:a81888d90a9654eec3878706bd8605898"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocates a decoder instance.  <a href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898">More...</a><br /></td></tr>
+<tr class="separator:a81888d90a9654eec3878706bd8605898"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adef55431b68aaa59d0d7b32b2f118f27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a> (<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr class="memdesc:adef55431b68aaa59d0d7b32b2f118f27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Releases all storage used for the decoder setup information.  <a href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27">More...</a><br /></td></tr>
+<tr class="separator:adef55431b68aaa59d0d7b32b2f118f27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a8051958d75b1012573b6e3c8f670e1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr class="memdesc:a1a8051958d75b1012573b6e3c8f670e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decoder control function.  <a href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1">More...</a><br /></td></tr>
+<tr class="separator:a1a8051958d75b1012573b6e3c8f670e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31c814bf09b2232aff69c57ae20f04eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</td></tr>
+<tr class="memdesc:a31c814bf09b2232aff69c57ae20f04eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Submits a packet containing encoded video data to the decoder.  <a href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb">More...</a><br /></td></tr>
+<tr class="separator:a31c814bf09b2232aff69c57ae20f04eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa9cc8af63fa8540e0fc95572f259cdcb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr class="memdesc:aa9cc8af63fa8540e0fc95572f259cdcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Outputs the next available frame of decoded Y'CbCr data.  <a href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb">More...</a><br /></td></tr>
+<tr class="separator:aa9cc8af63fa8540e0fc95572f259cdcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb6684ad8ba507b71112bc9de148e7d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec)</td></tr>
+<tr class="memdesc:afb6684ad8ba507b71112bc9de148e7d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees an allocated decoder instance.  <a href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0">More...</a><br /></td></tr>
+<tr class="separator:afb6684ad8ba507b71112bc9de148e7d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">th_decode_ctl() codes</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p ><a class="anchor" id="decctlcodes"></a>These are the available request codes for <a class="el" href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</p>
+<p >By convention, these are odd, to distinguish them from the <a class="el" href="theoraenc_8h.html#encctlcodes">encoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
+</td></tr>
+<tr class="memitem:ab31f251c9319f2140d247585d30b3d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&#160;&#160;&#160;(1)</td></tr>
+<tr class="memdesc:ab31f251c9319f2140d247585d30b3d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the maximum post-processing level.  <a href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">More...</a><br /></td></tr>
+<tr class="separator:ab31f251c9319f2140d247585d30b3d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a87774c35e1a755a84e2d705b38ebef0d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&#160;&#160;&#160;(3)</td></tr>
+<tr class="memdesc:a87774c35e1a755a84e2d705b38ebef0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the post-processing level.  <a href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">More...</a><br /></td></tr>
+<tr class="separator:a87774c35e1a755a84e2d705b38ebef0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e870c654d35394f0d490045df04e0f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&#160;&#160;&#160;(5)</td></tr>
+<tr class="memdesc:a1e870c654d35394f0d490045df04e0f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the granule position.  <a href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">More...</a><br /></td></tr>
+<tr class="separator:a1e870c654d35394f0d490045df04e0f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac95cc9e109474b0fa4bb920ab2cfdf1e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">TH_DECCTL_SET_STRIPE_CB</a>&#160;&#160;&#160;(7)</td></tr>
+<tr class="memdesc:ac95cc9e109474b0fa4bb920ab2cfdf1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the striped decode callback function.  <a href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">More...</a><br /></td></tr>
+<tr class="separator:ac95cc9e109474b0fa4bb920ab2cfdf1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d5e0b9b4c8898f93f241acbeb7e7ffb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">TH_DECCTL_SET_TELEMETRY_MBMODE</a>&#160;&#160;&#160;(9)</td></tr>
+<tr class="memdesc:a8d5e0b9b4c8898f93f241acbeb7e7ffb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the macroblock display mode.  <a href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">More...</a><br /></td></tr>
+<tr class="separator:a8d5e0b9b4c8898f93f241acbeb7e7ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a829285a03d24832c583f33c6357df8aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">TH_DECCTL_SET_TELEMETRY_MV</a>&#160;&#160;&#160;(11)</td></tr>
+<tr class="memdesc:a829285a03d24832c583f33c6357df8aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the motion vector display mode.  <a href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">More...</a><br /></td></tr>
+<tr class="separator:a829285a03d24832c583f33c6357df8aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3e2f7674ad92fe67b63915d48c9df5b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">TH_DECCTL_SET_TELEMETRY_QI</a>&#160;&#160;&#160;(13)</td></tr>
+<tr class="memdesc:ae3e2f7674ad92fe67b63915d48c9df5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the adaptive quantization display mode.  <a href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">More...</a><br /></td></tr>
+<tr class="separator:ae3e2f7674ad92fe67b63915d48c9df5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f43fec07486f8a5f00e92aab7d44a25"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">TH_DECCTL_SET_TELEMETRY_BITS</a>&#160;&#160;&#160;(15)</td></tr>
+<tr class="memdesc:a7f43fec07486f8a5f00e92aab7d44a25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the bitstream breakdown visualization mode.  <a href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">More...</a><br /></td></tr>
+<tr class="separator:a7f43fec07486f8a5f00e92aab7d44a25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac9c30f65672f8266d8370fc1ca55bca"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">th_stripe_decoded_func</a>) (void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td></tr>
+<tr class="memdesc:aac9c30f65672f8266d8370fc1ca55bca"><td class="mdescLeft">&#160;</td><td class="mdescRight">A callback function for striped decode.  <a href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">More...</a><br /></td></tr>
+<tr class="separator:aac9c30f65672f8266d8370fc1ca55bca"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The <code>libtheoradec</code> C decoding API. </p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a0d78767a326c34dbf84d5b845cba7b4a"></a><!-- doxytag: member="theoradec.h::_O_THEORA_THEORADEC_H_" ref="a0d78767a326c34dbf84d5b845cba7b4a" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >The <code>libtheoradec</code> C decoding API. </p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a01a53a08096cec23bab65f2680595c72" name="a01a53a08096cec23bab65f2680595c72"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a01a53a08096cec23bab65f2680595c72">&#9670;&nbsp;</a></span>OGG_THEORA_THEORADEC_HEADER</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define _O_THEORA_THEORADEC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+          <td class="memname">#define OGG_THEORA_THEORADEC_HEADER&#160;&#160;&#160;(1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="ab31f251c9319f2140d247585d30b3d07"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_GET_PPLEVEL_MAX" ref="ab31f251c9319f2140d247585d30b3d07" args="" -->
+<a id="ab31f251c9319f2140d247585d30b3d07" name="ab31f251c9319f2140d247585d30b3d07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab31f251c9319f2140d247585d30b3d07">&#9670;&nbsp;</a></span>TH_DECCTL_GET_PPLEVEL_MAX</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&nbsp;&nbsp;&nbsp;(1)</td>
+          <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&#160;&#160;&#160;(1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Gets the maximum post-processing level. </p>
-<p>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.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td>int: The maximum post-processing level. </td></tr>
+<p >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.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">_buf</td><td>int: The maximum post-processing level. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a1e870c654d35394f0d490045df04e0f5"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_GRANPOS" ref="a1e870c654d35394f0d490045df04e0f5" args="" -->
+<a id="a1e870c654d35394f0d490045df04e0f5" name="a1e870c654d35394f0d490045df04e0f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e870c654d35394f0d490045df04e0f5">&#9670;&nbsp;</a></span>TH_DECCTL_SET_GRANPOS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_SET_GRANPOS&nbsp;&nbsp;&nbsp;(5)</td>
+          <td class="memname">#define TH_DECCTL_SET_GRANPOS&#160;&#160;&#160;(5)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the granule position. </p>
-<p>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.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_int64_t</code>: The granule position of the next frame. </td></tr>
+<p >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.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>ogg_int64_t</code>: The granule position of the next frame. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_int64_t)</code>, or the granule position is negative. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_int64_t)</code>, or the granule position is negative. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a87774c35e1a755a84e2d705b38ebef0d"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_PPLEVEL" ref="a87774c35e1a755a84e2d705b38ebef0d" args="" -->
+<a id="a87774c35e1a755a84e2d705b38ebef0d" name="a87774c35e1a755a84e2d705b38ebef0d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87774c35e1a755a84e2d705b38ebef0d">&#9670;&nbsp;</a></span>TH_DECCTL_SET_PPLEVEL</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_SET_PPLEVEL&nbsp;&nbsp;&nbsp;(3)</td>
+          <td class="memname">#define TH_DECCTL_SET_PPLEVEL&#160;&#160;&#160;(3)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the post-processing level. </p>
-<p>By default, post-processing is disabled.</p>
-<p>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 TH_DECCTL_GET_PPLEVEL_MAX.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td>int: The new post-processing level. 0 to disable; larger values use more CPU. </td></tr>
+<p >By default, post-processing is disabled.</p>
+<p >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 TH_DECCTL_GET_PPLEVEL_MAX.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td>int: The new post-processing level. 0 to disable; larger values use more CPU. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the post-processing level is out of bounds. The maximum post-processing level may be implementation-specific, and can be obtained via <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07" title="Gets the maximum post-processing level.">TH_DECCTL_GET_PPLEVEL_MAX</a>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the post-processing level is out of bounds. The maximum post-processing level may be implementation-specific, and can be obtained via <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07" title="Gets the maximum post-processing level.">TH_DECCTL_GET_PPLEVEL_MAX</a>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="ac95cc9e109474b0fa4bb920ab2cfdf1e"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_STRIPE_CB" ref="ac95cc9e109474b0fa4bb920ab2cfdf1e" args="" -->
+<a id="ac95cc9e109474b0fa4bb920ab2cfdf1e" name="ac95cc9e109474b0fa4bb920ab2cfdf1e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac95cc9e109474b0fa4bb920ab2cfdf1e">&#9670;&nbsp;</a></span>TH_DECCTL_SET_STRIPE_CB</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_SET_STRIPE_CB&nbsp;&nbsp;&nbsp;(7)</td>
+          <td class="memname">#define TH_DECCTL_SET_STRIPE_CB&#160;&#160;&#160;(7)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the striped decode callback function. </p>
-<p>If set, this function will be called as each piece of a frame is fully decoded in <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. You can pass in a <a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a> with <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5" title="The callback function pointer.">th_stripe_callback::stripe_decoded</a> set to <code>NULL</code> to disable the callbacks at any point. Enabling striped decode does not prevent you from calling <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a> after the frame is fully decoded.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a>: The callback parameters. </td></tr>
+<p >If set, this function will be called as each piece of a frame is fully decoded in <a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. You can pass in a <a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a> with <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5" title="The callback function pointer.">th_stripe_callback::stripe_decoded</a> set to <code>NULL</code> to disable the callbacks at any point. Enabling striped decode does not prevent you from calling <a class="el" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a> after the frame is fully decoded.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a>: The callback parameters. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(th_stripe_callback)</code>. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(th_stripe_callback)</code>. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a7f43fec07486f8a5f00e92aab7d44a25"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_BITS" ref="a7f43fec07486f8a5f00e92aab7d44a25" args="" -->
+<a id="a7f43fec07486f8a5f00e92aab7d44a25" name="a7f43fec07486f8a5f00e92aab7d44a25"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7f43fec07486f8a5f00e92aab7d44a25">&#9670;&nbsp;</a></span>TH_DECCTL_SET_TELEMETRY_BITS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_BITS&nbsp;&nbsp;&nbsp;(15)</td>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_BITS&#160;&#160;&#160;(15)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>Enables telemetry and sets the bitstream breakdown visualization mode. </p>
+<p>Sets the bitstream breakdown visualization mode. </p>
+<p >Set to 0 to disable displaying bitstream breakdown. </p>
 
 </div>
 </div>
-<a class="anchor" id="a8d5e0b9b4c8898f93f241acbeb7e7ffb"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_MBMODE" ref="a8d5e0b9b4c8898f93f241acbeb7e7ffb" args="" -->
+<a id="a8d5e0b9b4c8898f93f241acbeb7e7ffb" name="a8d5e0b9b4c8898f93f241acbeb7e7ffb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d5e0b9b4c8898f93f241acbeb7e7ffb">&#9670;&nbsp;</a></span>TH_DECCTL_SET_TELEMETRY_MBMODE</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MBMODE&nbsp;&nbsp;&nbsp;(9)</td>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MBMODE&#160;&#160;&#160;(9)</td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Sets the macroblock display mode. </p>
+<p >Set to 0 to disable displaying macroblocks. </p>
+
+</div>
 </div>
-<div class="memdoc">
+<a id="a829285a03d24832c583f33c6357df8aa" name="a829285a03d24832c583f33c6357df8aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a829285a03d24832c583f33c6357df8aa">&#9670;&nbsp;</a></span>TH_DECCTL_SET_TELEMETRY_MV</h2>
 
-<p>Enables telemetry and sets the macroblock display mode. </p>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MV&#160;&#160;&#160;(11)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the motion vector display mode. </p>
+<p >Set to 0 to disable displaying motion vectors. </p>
 
 </div>
 </div>
-<a class="anchor" id="a829285a03d24832c583f33c6357df8aa"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_MV" ref="a829285a03d24832c583f33c6357df8aa" args="" -->
+<a id="ae3e2f7674ad92fe67b63915d48c9df5b" name="ae3e2f7674ad92fe67b63915d48c9df5b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3e2f7674ad92fe67b63915d48c9df5b">&#9670;&nbsp;</a></span>TH_DECCTL_SET_TELEMETRY_QI</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MV&nbsp;&nbsp;&nbsp;(11)</td>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_QI&#160;&#160;&#160;(13)</td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Sets the adaptive quantization display mode. </p>
+<p >Set to 0 to disable displaying adaptive quantization. </p>
+
+</div>
 </div>
-<div class="memdoc">
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="a843d70bb02563885a8d54b9c1a781729" name="a843d70bb02563885a8d54b9c1a781729"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a843d70bb02563885a8d54b9c1a781729">&#9670;&nbsp;</a></span>th_dec_ctx</h2>
 
-<p>Enables telemetry and sets the motion vector display mode. </p>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The decoder context. </p>
 
 </div>
 </div>
-<a class="anchor" id="ae3e2f7674ad92fe67b63915d48c9df5b"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_QI" ref="ae3e2f7674ad92fe67b63915d48c9df5b" args="" -->
+<a id="ab71cd2657455cc27d6c0127c66a89f28" name="ab71cd2657455cc27d6c0127c66a89f28"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab71cd2657455cc27d6c0127c66a89f28">&#9670;&nbsp;</a></span>th_setup_info</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_QI&nbsp;&nbsp;&nbsp;(13)</td>
+          <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Setup information. </p>
+<p >This contains auxiliary information (Huffman tables and quantization parameters) decoded from the setup header by <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> to be passed to <a class="el" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898" title="Allocates a decoder instance.">th_decode_alloc()</a>. It can be re-used to initialize any number of decoders, and can be freed via <a class="el" href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> at any time. </p>
+
+</div>
 </div>
-<div class="memdoc">
+<a id="aac9c30f65672f8266d8370fc1ca55bca" name="aac9c30f65672f8266d8370fc1ca55bca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aac9c30f65672f8266d8370fc1ca55bca">&#9670;&nbsp;</a></span>th_stripe_decoded_func</h2>
 
-<p>Enables telemetry and sets the adaptive quantization display mode. </p>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* th_stripe_decoded_func) (void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>A callback function for striped decode. </p>
+<p >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 <a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. 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 <em>_yfrag0</em> 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-<code>NULL</code> <em>_granpos</em> pointer is passed to <a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>, 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. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_ctx</td><td>An application-provided context pointer. </td></tr>
+    <tr><td class="paramname">_buf</td><td>The image buffer for the decoded frame. </td></tr>
+    <tr><td class="paramname">_yfrag0</td><td>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. </td></tr>
+    <tr><td class="paramname">_yfrag_end</td><td>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 <code><em>_yfrag0</em> ...<em>_yfrag_end</em> -1</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
 
 </div>
 </div>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="a843d70bb02563885a8d54b9c1a781729"></a><!-- doxytag: member="theoradec.h::th_dec_ctx" ref="a843d70bb02563885a8d54b9c1a781729" args="" -->
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a81888d90a9654eec3878706bd8605898" name="a81888d90a9654eec3878706bd8605898"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a81888d90a9654eec3878706bd8605898">&#9670;&nbsp;</a></span>th_decode_alloc()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td>
+          <td class="memname"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> * th_decode_alloc </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&#160;</td>
+          <td class="paramname"><em>_info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&#160;</td>
+          <td class="paramname"><em>_setup</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Allocates a decoder instance. </p>
+<p ><b>Security Warning:</b> The Theora format supports very large frame sizes, potentially even larger than the address space of a 32-bit machine, and creating a decoder context allocates the space for several frames of data. If the allocation fails here, your program will crash, possibly at some future point because the OS kernel returned a valid memory range and will only fail when it tries to map the pages in it the first time they are used. Even if it succeeds, you may experience a denial of service if the frame size is large enough to cause excessive paging. If you are integrating libtheora in a larger application where such things are undesirable, it is highly recommended that you check the frame size in <em>_info</em> before calling this function and refuse to decode streams where it is larger than some reasonable maximum. libtheora will not check this for you, because there may be machines that can handle such streams and applications that wish to. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_info</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled via <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
+    <tr><td class="paramname">_setup</td><td>A <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> handle returned via <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The initialized <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">NULL</td><td>If the decoding parameters were invalid. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
 </div>
-<div class="memdoc">
+<a id="a1a8051958d75b1012573b6e3c8f670e1" name="a1a8051958d75b1012573b6e3c8f670e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1a8051958d75b1012573b6e3c8f670e1">&#9670;&nbsp;</a></span>th_decode_ctl()</h2>
 
-<p>The decoder context. </p>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_decode_ctl </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_dec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>_req</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>_buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>_buf_sz</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Decoder control function. </p>
+<p >This is used to provide advanced control of the decoding process. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_dec</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_req</td><td>The control code to process. See <a class="el" href="theoradec_8h.html#decctlcodes">the list of available control codes</a> for details. </td></tr>
+    <tr><td class="paramname">_buf</td><td>The parameters for this control code. </td></tr>
+    <tr><td class="paramname">_buf_sz</td><td>The size of the parameter buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Possible return values depend on the control code used. See <a class="el" href="theoradec_8h.html#decctlcodes">the list of control codes</a> for specific values. Generally 0 indicates success. </dd></dl>
 
 </div>
 </div>
-<a class="anchor" id="ab71cd2657455cc27d6c0127c66a89f28"></a><!-- doxytag: member="theoradec.h::th_setup_info" ref="ab71cd2657455cc27d6c0127c66a89f28" args="" -->
+<a id="afb6684ad8ba507b71112bc9de148e7d0" name="afb6684ad8ba507b71112bc9de148e7d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afb6684ad8ba507b71112bc9de148e7d0">&#9670;&nbsp;</a></span>th_decode_free()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td>
+          <td class="memname">void th_decode_free </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_dec</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Frees an allocated decoder instance. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_dec</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+  </table>
+  </dd>
+</dl>
+
 </div>
-<div class="memdoc">
+</div>
+<a id="a006d01d36fbe64768c571e6a12b7fc50" name="a006d01d36fbe64768c571e6a12b7fc50"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a006d01d36fbe64768c571e6a12b7fc50">&#9670;&nbsp;</a></span>th_decode_headerin()</h2>
 
-<p>Setup information. </p>
-<p>This contains auxiliary information (Huffman tables and quantization parameters) decoded from the setup header by <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> to be passed to <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>. It can be re-used to initialize any number of decoders, and can be freed via <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> at any time. </p>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_decode_headerin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&#160;</td>
+          <td class="paramname"><em>_info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **&#160;</td>
+          <td class="paramname"><em>_setup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>_op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Decodes the header packets of a Theora stream. </p>
+<p >This should be called on the initial packets of the stream, in succession, until it returns <code>0</code>, indicating that all headers have been processed, or an error is encountered. At least three header packets are required, and additional optional header packets may follow. This can be used on the first packet of any logical stream to determine if that stream is a Theora stream. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_info</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure to fill in. This must have been previously initialized with <a class="el" href="codec_8h.html#a430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a>. The application may immediately begin using the contents of this structure after the first header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
+    <tr><td class="paramname">_tc</td><td>A <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure to fill in. The application may immediately begin using the contents of this structure after the second header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
+    <tr><td class="paramname">_setup</td><td>Returns a pointer to additional, private setup information needed by the decoder. The contents of this pointer must be initialized to <code>NULL</code> on the first call, and the returned value must continue to be passed in on all subsequent calls. </td></tr>
+    <tr><td class="paramname">_op</td><td>An <code>ogg_packet</code> structure which contains one of the initial packets of an Ogg logical stream. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A positive value indicates that a Theora header was successfully processed. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>The first video data packet was encountered after all required header packets were parsed. The packet just passed in on this call should be saved and fed to <a class="el" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a> to begin decoding video data. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td>One of <em>_info</em>, <em>_tc</em>, or <em>_setup</em> was <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EBADHEADER</td><td><em>_op</em> was <code>NULL</code>, the packet was not the next header packet in the expected sequence, or the format of the header data was invalid. </td></tr>
+    <tr><td class="paramname">TH_EVERSION</td><td>The packet data was a Theora info header, but for a bitstream version not decodable with this version of <code>libtheoradec</code>. </td></tr>
+    <tr><td class="paramname">TH_ENOTFORMAT</td><td>The packet was not a Theora header. </td></tr>
+  </table>
+  </dd>
+</dl>
 
 </div>
 </div>
-<a class="anchor" id="a25dfc8713157545abd81eda476ca4b54"></a><!-- doxytag: member="theoradec.h::th_stripe_decoded_func" ref="a25dfc8713157545abd81eda476ca4b54" args=")(void *_ctx, th_ycbcr_buffer _buf, int _yfrag0, int _yfrag_end)" -->
+<a id="a31c814bf09b2232aff69c57ae20f04eb" name="a31c814bf09b2232aff69c57ae20f04eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a31c814bf09b2232aff69c57ae20f04eb">&#9670;&nbsp;</a></span>th_decode_packetin()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef void(* <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a>)(void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td>
+          <td class="memname">int th_decode_packetin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_dec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const ogg_packet *&#160;</td>
+          <td class="paramname"><em>_op</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t *&#160;</td>
+          <td class="paramname"><em>_granpos</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Submits a packet containing encoded video data to the decoder. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_dec</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_op</td><td>An <code>ogg_packet</code> containing encoded video data. </td></tr>
+    <tr><td class="paramname">_granpos</td><td>Returns the granule position of the decoded packet. If non-<code>NULL</code>, the granule position for this specific packet is stored in this location. This is computed incrementally from previously decoded packets. After a seek, the correct granule position must be set via <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5" title="Sets the granule position.">TH_DECCTL_SET_GRANPOS</a> for this to work properly. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success. A new decoded frame can be retrieved by calling <a class="el" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>. </td></tr>
+    <tr><td class="paramname">TH_DUPFRAME</td><td>The packet represented a dropped frame (either a 0-byte frame or an INTER frame with no coded blocks). The player can skip the call to <a class="el" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>, as the contents of the decoded frame buffer have not changed. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_dec</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EBADPACKET</td><td><em>_op</em> does not contain encoded video data. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>The video data uses bitstream features which this library does not support. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
 </div>
-<div class="memdoc">
+<a id="aa9cc8af63fa8540e0fc95572f259cdcb" name="aa9cc8af63fa8540e0fc95572f259cdcb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa9cc8af63fa8540e0fc95572f259cdcb">&#9670;&nbsp;</a></span>th_decode_ycbcr_out()</h2>
 
-<p>A callback function for striped decode. </p>
-<p>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 <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. 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 <em>_yfrag0</em> 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-<code>NULL</code> <em>_granpos</em> pointer is passed to <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>, 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. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>_ctx</em>&nbsp;</td><td>An application-provided context pointer. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The image buffer for the decoded frame. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_yfrag0</em>&nbsp;</td><td>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. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_yfrag_end</em>&nbsp;</td><td>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 <code><em>_yfrag0</em> ...<em>_yfrag_end</em> -1</code>. </td></tr>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_decode_ycbcr_out </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_dec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&#160;</td>
+          <td class="paramname"><em>_ycbcr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Outputs the next available frame of decoded Y'CbCr data. </p>
+<p >If a striped decode callback has been set with <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>, then the application does not need to call this function. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_dec</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_ycbcr</td><td>A video buffer structure to fill in. <code>libtheoradec</code> will fill in all the members of this structure, including the pointers to the uncompressed video data. The memory for this video data is owned by <code>libtheoradec</code>. It may be freed or overwritten without notification when subsequent frames are decoded. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_dec</em> or <em>_ycbcr</em> was <code>NULL</code>. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
+</div>
+<a id="adef55431b68aaa59d0d7b32b2f118f27" name="adef55431b68aaa59d0d7b32b2f118f27"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adef55431b68aaa59d0d7b32b2f118f27">&#9670;&nbsp;</a></span>th_setup_free()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_setup_free </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&#160;</td>
+          <td class="paramname"><em>_setup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Releases all storage used for the decoder setup information. </p>
+<p >This should be called after you no longer want to create any decoders for a stream whose headers you have parsed with <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_setup</td><td>The setup information to free. This can safely be <code>NULL</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/theoradec_8h_source.html b/doc/libtheora-1.2/theoradec_8h_source.html
index 9f73dc0..87f37f4 100644
--- a/doc/libtheora-1.2/theoradec_8h_source.html
+++ b/doc/libtheora-1.2/theoradec_8h_source.html
@@ -1,114 +1,141 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theoradec.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>theoradec.h</h1>  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="contents">
-<a href="theoradec_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
-<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
-<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
-<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
-<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
-<a name="l00006"></a>00006 <span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
-<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
-<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
-<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
-<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
-<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
-<a name="l00012"></a>00012 <span class="comment"></span>
-<a name="l00013"></a>00013 <span class="comment">  function:</span>
-<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
-<a name="l00015"></a>00015 <span class="comment"></span>
-<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
-<a name="l00017"></a>00017 
-<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(_O_THEORA_THEORADEC_H_)</span>
-<a name="l00022"></a><a class="code" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">00022</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_THEORADEC_H_ (1)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># include &lt;stddef.h&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html" title="The shared libtheoradec and libtheoraenc C API.">codec.h</a>&quot;</span>
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027 <span class="preprocessor">#if defined(__cplusplus)</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
-<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span>
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 
-<a name="l00050"></a><a class="code" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">00050</a> <span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span>
-<a name="l00051"></a>00051 <span class="preprocessor"></span>
-<a name="l00067"></a><a class="code" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">00067</a> <span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span>
-<a name="l00079"></a><a class="code" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">00079</a> <span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>
-<a name="l00093"></a><a class="code" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">00093</a> <span class="preprocessor">#define TH_DECCTL_SET_STRIPE_CB (7)</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>
-<a name="l00096"></a><a class="code" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">00096</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MBMODE (9)</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span>
-<a name="l00098"></a><a class="code" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">00098</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MV (11)</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span>
-<a name="l00100"></a><a class="code" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">00100</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_QI (13)</span>
-<a name="l00101"></a>00101 <span class="preprocessor"></span>
-<a name="l00102"></a><a class="code" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">00102</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_BITS (15)</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span>
-<a name="l00138"></a><a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">00138</a> <span class="keyword">typedef</span> void (*<a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54" title="A callback function for striped decode.">th_stripe_decoded_func</a>)(<span class="keywordtype">void</span> *_ctx,<a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _buf,
-<a name="l00139"></a>00139  <span class="keywordtype">int</span> _yfrag0,<span class="keywordtype">int</span> _yfrag_end);
-<a name="l00140"></a>00140 
-<a name="l00142"></a><a class="code" href="structth__stripe__callback.html">00142</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
-<a name="l00145"></a><a class="code" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">00145</a>   <span class="keywordtype">void</span>                   *ctx;
-<a name="l00147"></a><a class="code" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">00147</a>   <a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54" title="A callback function for striped decode.">th_stripe_decoded_func</a>  stripe_decoded;
-<a name="l00148"></a>00148 }<a class="code" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a>;
-<a name="l00149"></a>00149 
-<a name="l00150"></a>00150 
-<a name="l00151"></a>00151 
-<a name="l00159"></a><a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">00159</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a>    <a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a>;
-<a name="l00166"></a><a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">00166</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a>;
-<a name="l00231"></a>00231 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info,<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,
-<a name="l00232"></a>00232  <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> **_setup,ogg_packet *_op);
-<a name="l00255"></a>00255 <span class="keyword">extern</span> <a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *<a class="code" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc</a>(<span class="keyword">const</span> <a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info,
-<a name="l00256"></a>00256  <span class="keyword">const</span> <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> *_setup);
-<a name="l00262"></a>00262 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free</a>(<a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> *_setup);
-<a name="l00271"></a>00271 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,
-<a name="l00272"></a>00272  <span class="keywordtype">size_t</span> _buf_sz);
-<a name="l00295"></a>00295 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,<span class="keyword">const</span> ogg_packet *_op,
-<a name="l00296"></a>00296  ogg_int64_t *_granpos);
-<a name="l00312"></a>00312 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&amp;#39;CbCr data.">th_decode_ycbcr_out</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,
-<a name="l00313"></a>00313  <a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _ycbcr);
-<a name="l00316"></a>00316 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec);
-<a name="l00319"></a>00319 
-<a name="l00320"></a>00320 
-<a name="l00321"></a>00321 
-<a name="l00322"></a>00322 <span class="preprocessor">#if defined(__cplusplus)</span>
-<a name="l00323"></a>00323 <span class="preprocessor"></span>}
-<a name="l00324"></a>00324 <span class="preprocessor">#endif</span>
-<a name="l00325"></a>00325 <span class="preprocessor"></span>
-<a name="l00326"></a>00326 <span class="preprocessor">#endif</span>
-</pre></div></div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle"><div class="title">theoradec.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="theoradec_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/********************************************************************</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> * by the Xiph.Org Foundation https://www.xiph.org/                 *</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> ********************************************************************</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"></span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment">  function:</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"></span> </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> ********************************************************************/</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="preprocessor">#if !defined(OGG_THEORA_THEORADEC_HEADER)</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a01a53a08096cec23bab65f2680595c72">   21</a></span><span class="preprocessor"># define OGG_THEORA_THEORADEC_HEADER (1)</span></div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor"># include &lt;stddef.h&gt;</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html">codec.h</a>&quot;</span></div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="preprocessor">#if defined(__cplusplus)</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">   49</a></span><span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span></div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">   66</a></span><span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span></div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">   78</a></span><span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">   92</a></span><span class="preprocessor">#define TH_DECCTL_SET_STRIPE_CB (7)</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">   96</a></span><span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MBMODE (9)</span></div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">   99</a></span><span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MV (11)</span></div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">  102</a></span><span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_QI (13)</span></div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">  105</a></span><span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_BITS (15)</span></div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"><a class="line" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">  141</a></span><span class="keyword">typedef</span> void (*<a class="code hl_typedef" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">th_stripe_decoded_func</a>)(<span class="keywordtype">void</span> *_ctx,<a class="code hl_typedef" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf,</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span> <span class="keywordtype">int</span> _yfrag0,<span class="keywordtype">int</span> _yfrag_end);</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span> </div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="structth__stripe__callback.html">  145</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span>{</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">  148</a></span>  <span class="keywordtype">void</span>                   *<a class="code hl_variable" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">ctx</a>;</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">  150</a></span>  <a class="code hl_typedef" href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">th_stripe_decoded_func</a>  <a class="code hl_variable" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">stripe_decoded</a>;</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>}<a class="code hl_struct" href="structth__stripe__callback.html">th_stripe_callback</a>;</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">  162</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>    <a class="code hl_typedef" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>;</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"><a class="line" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">  169</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> <a class="code hl_typedef" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a>;</div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50">  234</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a>(<a class="code hl_struct" href="structth__info.html">th_info</a> *_info,<a class="code hl_struct" href="structth__comment.html">th_comment</a> *_tc,</div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span> <a class="code hl_typedef" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup,ogg_packet *_op);</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898">  258</a></span><span class="keyword">extern</span> <a class="code hl_typedef" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *<a class="code hl_function" href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898">th_decode_alloc</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structth__info.html">th_info</a> *_info,</div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span> <span class="keyword">const</span> <a class="code hl_typedef" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup);</div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27">  265</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a>(<a class="code hl_typedef" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup);</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1">  277</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a>(<a class="code hl_typedef" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span> <span class="keywordtype">size_t</span> _buf_sz);</div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"><a class="line" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb">  301</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a>(<a class="code hl_typedef" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec,<span class="keyword">const</span> ogg_packet *_op,</div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span> ogg_int64_t *_granpos);</div>
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb">  318</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a>(<a class="code hl_typedef" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec,</div>
+<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span> <a class="code hl_typedef" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr);</div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0">  322</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a>(<a class="code hl_typedef" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec);</div>
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span> </div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  328</span><span class="preprocessor">#if defined(__cplusplus)</span></div>
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>}</div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  332</span><span class="preprocessor">#endif </span><span class="comment">/* OGG_THEORA_THEORADEC_HEADER */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="acodec_8h_html"><div class="ttname"><a href="codec_8h.html">codec.h</a></div><div class="ttdoc">The shared libtheoradec and libtheoraenc C API.</div></div>
+<div class="ttc" id="acodec_8h_html_a343f7cfabad179cc4fe527cf06873f45"><div class="ttname"><a href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a></div><div class="ttdeci">th_img_plane th_ycbcr_buffer[3]</div><div class="ttdoc">A complete image buffer for an uncompressed frame.</div><div class="ttdef"><b>Definition:</b> codec.h:170</div></div>
+<div class="ttc" id="astructth__comment_html"><div class="ttname"><a href="structth__comment.html">th_comment</a></div><div class="ttdoc">The comment information.</div><div class="ttdef"><b>Definition:</b> codec.h:325</div></div>
+<div class="ttc" id="astructth__info_html"><div class="ttname"><a href="structth__info.html">th_info</a></div><div class="ttdoc">Theora bitstream information.</div><div class="ttdef"><b>Definition:</b> codec.h:206</div></div>
+<div class="ttc" id="astructth__stripe__callback_html"><div class="ttname"><a href="structth__stripe__callback.html">th_stripe_callback</a></div><div class="ttdoc">The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.</div><div class="ttdef"><b>Definition:</b> theoradec.h:145</div></div>
+<div class="ttc" id="astructth__stripe__callback_html_a977c725680a37e3446e459f063b1f4a5"><div class="ttname"><a href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback::stripe_decoded</a></div><div class="ttdeci">th_stripe_decoded_func stripe_decoded</div><div class="ttdoc">The callback function pointer.</div><div class="ttdef"><b>Definition:</b> theoradec.h:150</div></div>
+<div class="ttc" id="astructth__stripe__callback_html_ab895162ce29a411fa98e0ba9661f47d4"><div class="ttname"><a href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback::ctx</a></div><div class="ttdeci">void * ctx</div><div class="ttdoc">An application-provided context pointer.</div><div class="ttdef"><b>Definition:</b> theoradec.h:148</div></div>
+<div class="ttc" id="atheoradec_8h_html_a006d01d36fbe64768c571e6a12b7fc50"><div class="ttname"><a href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a></div><div class="ttdeci">int th_decode_headerin(th_info *_info, th_comment *_tc, th_setup_info **_setup, ogg_packet *_op)</div><div class="ttdoc">Decodes the header packets of a Theora stream.</div></div>
+<div class="ttc" id="atheoradec_8h_html_a1a8051958d75b1012573b6e3c8f670e1"><div class="ttname"><a href="theoradec_8h.html#a1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a></div><div class="ttdeci">int th_decode_ctl(th_dec_ctx *_dec, int _req, void *_buf, size_t _buf_sz)</div><div class="ttdoc">Decoder control function.</div></div>
+<div class="ttc" id="atheoradec_8h_html_a31c814bf09b2232aff69c57ae20f04eb"><div class="ttname"><a href="theoradec_8h.html#a31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a></div><div class="ttdeci">int th_decode_packetin(th_dec_ctx *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</div><div class="ttdoc">Submits a packet containing encoded video data to the decoder.</div></div>
+<div class="ttc" id="atheoradec_8h_html_a81888d90a9654eec3878706bd8605898"><div class="ttname"><a href="theoradec_8h.html#a81888d90a9654eec3878706bd8605898">th_decode_alloc</a></div><div class="ttdeci">th_dec_ctx * th_decode_alloc(const th_info *_info, const th_setup_info *_setup)</div><div class="ttdoc">Allocates a decoder instance.</div></div>
+<div class="ttc" id="atheoradec_8h_html_a843d70bb02563885a8d54b9c1a781729"><div class="ttname"><a href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></div><div class="ttdeci">struct th_dec_ctx th_dec_ctx</div><div class="ttdoc">The decoder context.</div><div class="ttdef"><b>Definition:</b> theoradec.h:162</div></div>
+<div class="ttc" id="atheoradec_8h_html_aa9cc8af63fa8540e0fc95572f259cdcb"><div class="ttname"><a href="theoradec_8h.html#aa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a></div><div class="ttdeci">int th_decode_ycbcr_out(th_dec_ctx *_dec, th_ycbcr_buffer _ycbcr)</div><div class="ttdoc">Outputs the next available frame of decoded Y'CbCr data.</div></div>
+<div class="ttc" id="atheoradec_8h_html_aac9c30f65672f8266d8370fc1ca55bca"><div class="ttname"><a href="theoradec_8h.html#aac9c30f65672f8266d8370fc1ca55bca">th_stripe_decoded_func</a></div><div class="ttdeci">void(* th_stripe_decoded_func)(void *_ctx, th_ycbcr_buffer _buf, int _yfrag0, int _yfrag_end)</div><div class="ttdoc">A callback function for striped decode.</div><div class="ttdef"><b>Definition:</b> theoradec.h:141</div></div>
+<div class="ttc" id="atheoradec_8h_html_ab71cd2657455cc27d6c0127c66a89f28"><div class="ttname"><a href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></div><div class="ttdeci">struct th_setup_info th_setup_info</div><div class="ttdoc">Setup information.</div><div class="ttdef"><b>Definition:</b> theoradec.h:169</div></div>
+<div class="ttc" id="atheoradec_8h_html_adef55431b68aaa59d0d7b32b2f118f27"><div class="ttname"><a href="theoradec_8h.html#adef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a></div><div class="ttdeci">void th_setup_free(th_setup_info *_setup)</div><div class="ttdoc">Releases all storage used for the decoder setup information.</div></div>
+<div class="ttc" id="atheoradec_8h_html_afb6684ad8ba507b71112bc9de148e7d0"><div class="ttname"><a href="theoradec_8h.html#afb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a></div><div class="ttdeci">void th_decode_free(th_dec_ctx *_dec)</div><div class="ttdoc">Frees an allocated decoder instance.</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/theoraenc_8h.html b/doc/libtheora-1.2/theoraenc_8h.html
index 0b514fc..e350c8e 100644
--- a/doc/libtheora-1.2/theoraenc_8h.html
+++ b/doc/libtheora-1.2/theoraenc_8h.html
@@ -1,543 +1,601 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theoraenc.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
+</div>
+</div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#define-members">Defines</a> &#124;
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>theoraenc.h File Reference</h1>  </div>
-</div>
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle"><div class="title">theoraenc.h File Reference</div></div>
+</div><!--header-->
 <div class="contents">
 
 <p>The <code>libtheoraenc</code> C encoding API.  
-<a href="#_details">More...</a></p>
-<code>#include &lt;stddef.h&gt;</code><br/>
-<code>#include &lt;ogg/ogg.h&gt;</code><br/>
-<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br/>
-
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;stddef.h&gt;</code><br />
+<code>#include &lt;ogg/ogg.h&gt;</code><br />
+<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br />
+</div>
 <p><a href="theoraenc_8h_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">_O_THEORA_THEORAENC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ab43b2364621da8df29ee636107fef234"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ab43b2364621da8df29ee636107fef234">OGG_THEORA_THEORAENC_HEADER</a>&#160;&#160;&#160;(1)</td></tr>
+<tr class="separator:ab43b2364621da8df29ee636107fef234"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr><td colspan="2"><div class="groupHeader">th_encode_ctl() codes</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp652c8d6bf1cea216ce117704a398b5f8"></a> <a class="anchor" id="encctlcodes"></a> These are the available request codes for <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>. By convention, these are even, to distinguish them from the <a class="el" href="theoradec_8h.html#decctlcodes">decoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">TH_ENCCTL_SET_HUFFMAN_CODES</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the Huffman tables to use.  <a href="#a0165348788e560a19b7c61ae8f0c2283"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use.  <a href="#a3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="#a27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="#a382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level.  <a href="#a9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level.  <a href="#abd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">TH_ENCCTL_GET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(16)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the current speed level.  <a href="#a114b7c552f50b7b8d881a39489af1f61"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">TH_ENCCTL_SET_DUP_COUNT</a>&nbsp;&nbsp;&nbsp;(18)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the number of duplicates of the next frame to produce.  <a href="#a8bb9b05471c42a09f8684a2583b8a1df"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">TH_ENCCTL_SET_RATE_FLAGS</a>&nbsp;&nbsp;&nbsp;(20)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Modifies the default bitrate management behavior.  <a href="#a026502e08fbe1af0a1063f39bd18129c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">TH_ENCCTL_SET_RATE_BUFFER</a>&nbsp;&nbsp;&nbsp;(22)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the size of the bitrate management bit reservoir as a function of number of frames.  <a href="#aaefb515876b2a180ad5c3120fc584a52"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">TH_ENCCTL_2PASS_OUT</a>&nbsp;&nbsp;&nbsp;(24)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics.  <a href="#ac3751b9c3838888ec2e3f0b0d2823282"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">TH_ENCCTL_2PASS_IN</a>&nbsp;&nbsp;&nbsp;(26)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits two-pass encoding metric data collected the first encoding pass to the second pass.  <a href="#a4a84f982cdd9a3e3c803a29bbde9df0b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">TH_ENCCTL_SET_QUALITY</a>&nbsp;&nbsp;&nbsp;(28)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the current encoding quality.  <a href="#aac087983fa951b9148c9db6bc2e81ef4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">TH_ENCCTL_SET_BITRATE</a>&nbsp;&nbsp;&nbsp;(30)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the current encoding bitrate.  <a href="#a9b969df55ecad1acd1ae207fad42592e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">TH_ENCCTL_SET_COMPAT_CONFIG</a>&nbsp;&nbsp;&nbsp;(32)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the configuration to be compatible with that from the given setup header.  <a href="#aeb3085ec96e06eca81b3a372e5ed9bff"></a><br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">TH_ENCCTL_SET_RATE_FLAGS flags</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6d70796e675cce22589d15a73cb3a16b"></a> <a class="anchor" id="ratectlflags"></a> These are the flags available for use with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. </p>
+<tr><td colspan="2"><div class="groupText"><p ><a class="anchor" id="encctlcodes"></a>These are the available request codes for <a class="el" href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</p>
+<p >By convention, these are even, to distinguish them from the <a class="el" href="theoradec_8h.html#decctlcodes">decoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">TH_RATECTL_DROP_FRAMES</a>&nbsp;&nbsp;&nbsp;(0x1)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Drop frames to keep within bitrate buffer constraints.  <a href="#a3e7fab53b902b54135522ba286f45e33"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">TH_RATECTL_CAP_OVERFLOW</a>&nbsp;&nbsp;&nbsp;(0x2)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ignore bitrate buffer overflows.  <a href="#a32f9983b344a431334493cefb0b9337c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">TH_RATECTL_CAP_UNDERFLOW</a>&nbsp;&nbsp;&nbsp;(0x4)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ignore bitrate buffer underflows.  <a href="#ad0d62d9dce542caf5296b03b97e020a6"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
+<tr class="memitem:a0165348788e560a19b7c61ae8f0c2283"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">TH_ENCCTL_SET_HUFFMAN_CODES</a>&#160;&#160;&#160;(0)</td></tr>
+<tr class="memdesc:a0165348788e560a19b7c61ae8f0c2283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Huffman tables to use.  <a href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">More...</a><br /></td></tr>
+<tr class="separator:a0165348788e560a19b7c61ae8f0c2283"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3befcdd66678f8d27034f9c4b16d1b9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&#160;&#160;&#160;(2)</td></tr>
+<tr class="memdesc:a3befcdd66678f8d27034f9c4b16d1b9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the quantization parameters to use.  <a href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">More...</a><br /></td></tr>
+<tr class="separator:a3befcdd66678f8d27034f9c4b16d1b9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27e755e15b4b5604c54974b304037a49"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&#160;&#160;&#160;(4)</td></tr>
+<tr class="memdesc:a27e755e15b4b5604c54974b304037a49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">More...</a><br /></td></tr>
+<tr class="separator:a27e755e15b4b5604c54974b304037a49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a382d685a39a34d8e6ba76b00d804efd8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&#160;&#160;&#160;(10)</td></tr>
+<tr class="memdesc:a382d685a39a34d8e6ba76b00d804efd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">More...</a><br /></td></tr>
+<tr class="separator:a382d685a39a34d8e6ba76b00d804efd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9baf5bdd206e80c78a8fd44687e89783"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&#160;&#160;&#160;(12)</td></tr>
+<tr class="memdesc:a9baf5bdd206e80c78a8fd44687e89783"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the maximum speed level.  <a href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">More...</a><br /></td></tr>
+<tr class="separator:a9baf5bdd206e80c78a8fd44687e89783"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abd9fbcb6a25a77d991d3620164fe59d6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&#160;&#160;&#160;(14)</td></tr>
+<tr class="memdesc:abd9fbcb6a25a77d991d3620164fe59d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the speed level.  <a href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">More...</a><br /></td></tr>
+<tr class="separator:abd9fbcb6a25a77d991d3620164fe59d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a114b7c552f50b7b8d881a39489af1f61"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">TH_ENCCTL_GET_SPLEVEL</a>&#160;&#160;&#160;(16)</td></tr>
+<tr class="memdesc:a114b7c552f50b7b8d881a39489af1f61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the current speed level.  <a href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">More...</a><br /></td></tr>
+<tr class="separator:a114b7c552f50b7b8d881a39489af1f61"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8bb9b05471c42a09f8684a2583b8a1df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">TH_ENCCTL_SET_DUP_COUNT</a>&#160;&#160;&#160;(18)</td></tr>
+<tr class="memdesc:a8bb9b05471c42a09f8684a2583b8a1df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of duplicates of the next frame to produce.  <a href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">More...</a><br /></td></tr>
+<tr class="separator:a8bb9b05471c42a09f8684a2583b8a1df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a026502e08fbe1af0a1063f39bd18129c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">TH_ENCCTL_SET_RATE_FLAGS</a>&#160;&#160;&#160;(20)</td></tr>
+<tr class="memdesc:a026502e08fbe1af0a1063f39bd18129c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modifies the default bitrate management behavior.  <a href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">More...</a><br /></td></tr>
+<tr class="separator:a026502e08fbe1af0a1063f39bd18129c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaefb515876b2a180ad5c3120fc584a52"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">TH_ENCCTL_SET_RATE_BUFFER</a>&#160;&#160;&#160;(22)</td></tr>
+<tr class="memdesc:aaefb515876b2a180ad5c3120fc584a52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size of the bitrate management bit reservoir as a function of number of frames.  <a href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">More...</a><br /></td></tr>
+<tr class="separator:aaefb515876b2a180ad5c3120fc584a52"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac3751b9c3838888ec2e3f0b0d2823282"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">TH_ENCCTL_2PASS_OUT</a>&#160;&#160;&#160;(24)</td></tr>
+<tr class="memdesc:ac3751b9c3838888ec2e3f0b0d2823282"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics.  <a href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">More...</a><br /></td></tr>
+<tr class="separator:ac3751b9c3838888ec2e3f0b0d2823282"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a84f982cdd9a3e3c803a29bbde9df0b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">TH_ENCCTL_2PASS_IN</a>&#160;&#160;&#160;(26)</td></tr>
+<tr class="memdesc:a4a84f982cdd9a3e3c803a29bbde9df0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Submits two-pass encoding metric data collected the first encoding pass to the second pass.  <a href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">More...</a><br /></td></tr>
+<tr class="separator:a4a84f982cdd9a3e3c803a29bbde9df0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac087983fa951b9148c9db6bc2e81ef4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">TH_ENCCTL_SET_QUALITY</a>&#160;&#160;&#160;(28)</td></tr>
+<tr class="memdesc:aac087983fa951b9148c9db6bc2e81ef4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current encoding quality.  <a href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">More...</a><br /></td></tr>
+<tr class="separator:aac087983fa951b9148c9db6bc2e81ef4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b969df55ecad1acd1ae207fad42592e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">TH_ENCCTL_SET_BITRATE</a>&#160;&#160;&#160;(30)</td></tr>
+<tr class="memdesc:a9b969df55ecad1acd1ae207fad42592e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current encoding bitrate.  <a href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">More...</a><br /></td></tr>
+<tr class="separator:a9b969df55ecad1acd1ae207fad42592e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeb3085ec96e06eca81b3a372e5ed9bff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">TH_ENCCTL_SET_COMPAT_CONFIG</a>&#160;&#160;&#160;(32)</td></tr>
+<tr class="memdesc:aeb3085ec96e06eca81b3a372e5ed9bff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the configuration to be compatible with that from the given setup header.  <a href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">More...</a><br /></td></tr>
+<tr class="separator:aeb3085ec96e06eca81b3a372e5ed9bff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
 Typedefs</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Encoder state</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp4ebc85bd8522a8b6128225c02b31c8b7"></a>The following data structure is opaque, and its contents are not publicly defined by this API.</p>
-<p>Referring to its internals directly is unsupported, and may break without warning. </p>
+<tr><td colspan="2"><div class="groupText"><p >The following data structure is opaque, and its contents are not publicly defined by this API.</p>
+<p >Referring to its internals directly is unsupported, and may break without warning. </p>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoder context.  <a href="#af5cc40472b925456d42526a035d66edd"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
+<tr class="memitem:af5cc40472b925456d42526a035d66edd"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></td></tr>
+<tr class="memdesc:af5cc40472b925456d42526a035d66edd"><td class="mdescLeft">&#160;</td><td class="mdescRight">The encoder context.  <a href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">More...</a><br /></td></tr>
+<tr class="separator:af5cc40472b925456d42526a035d66edd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
 Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Functions for encoding</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpc58fb8743a7ca83eb895d57e29e032c8"></a>You must link to <code>libtheoraenc</code> and <code>libtheoradec</code> if you use any of the functions in this section.</p>
-<p>The functions are listed in the order they are used in a typical encode. The basic steps are:</p>
-<ul>
+<tr><td colspan="2"><div class="groupText"><p >You must link to <code>libtheoraenc</code> and <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p >The functions are listed in the order they are used in a typical encode. The basic steps are:</p><ul>
 <li>Fill in a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure with details on the format of the video you wish to encode.</li>
-<li>Allocate a <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle with <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>.</li>
-<li>Perform any additional encoder configuration required with <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</li>
-<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> to retrieve all the header packets.</li>
+<li>Allocate a <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle with <a class="el" href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00" title="Allocates an encoder instance.">th_encode_alloc()</a>.</li>
+<li>Perform any additional encoder configuration required with <a class="el" href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</li>
+<li>Repeatedly call <a class="el" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> to retrieve all the header packets.</li>
 <li>For each uncompressed frame:<ul>
-<li>Submit the uncompressed frame via <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a></li>
-<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> to retrieve any video data packets that are ready.</li>
+<li>Submit the uncompressed frame via <a class="el" href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a></li>
+<li>Repeatedly call <a class="el" href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> to retrieve any video data packets that are ready.</li>
 </ul>
 </li>
-<li>Call <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free()</a> to release all encoder memory. </li>
+<li>Call <a class="el" href="theoraenc_8h.html#a36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free()</a> to release all encoder memory. </li>
 </ul>
 </div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">th_encode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates an encoder instance.  <a href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _req, void *_buf, size_t _buf_sz)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">th_encode_flushheader</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="structth__comment.html">th_comment</a> *_comments, ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next header packet.  <a href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits an uncompressed frame to the encoder.  <a href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _last, ogg_packet *_op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves encoded video data packets.  <a href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">th_encode_free</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated encoder instance.  <a href="group__encfuncs.html#ga36b23d216532231925c4107894204680"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__quant__info.html">th_quant_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The quantization parameters used by VP3.  <a href="#a3b1b462989f4e7a5a98e6e697f1a7f7d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__huff__code.html">th_huff_code</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a> [TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Huffman tables used by VP3.  <a href="#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"></a><br/></td></tr>
+<tr class="memitem:aad036b5967e07629b9be10a4d77ada00"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00">th_encode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr class="memdesc:aad036b5967e07629b9be10a4d77ada00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocates an encoder instance.  <a href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00">More...</a><br /></td></tr>
+<tr class="separator:aad036b5967e07629b9be10a4d77ada00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a427f6514dfdc01ea72172c469d51d9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr class="memdesc:a3a427f6514dfdc01ea72172c469d51d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encoder control function.  <a href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9">More...</a><br /></td></tr>
+<tr class="separator:a3a427f6514dfdc01ea72172c469d51d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9439d61b566039d194ff782681fbc408"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408">th_encode_flushheader</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="structth__comment.html">th_comment</a> *_comments, ogg_packet *_op)</td></tr>
+<tr class="memdesc:a9439d61b566039d194ff782681fbc408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Outputs the next header packet.  <a href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408">More...</a><br /></td></tr>
+<tr class="separator:a9439d61b566039d194ff782681fbc408"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adbe7dd66b411c2d61ab8153c15308750"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr class="memdesc:adbe7dd66b411c2d61ab8153c15308750"><td class="mdescLeft">&#160;</td><td class="mdescRight">Submits an uncompressed frame to the encoder.  <a href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750">More...</a><br /></td></tr>
+<tr class="separator:adbe7dd66b411c2d61ab8153c15308750"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96d8ac1dda53187455352f99bbb5b04b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _last, ogg_packet *_op)</td></tr>
+<tr class="memdesc:a96d8ac1dda53187455352f99bbb5b04b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves encoded video data packets.  <a href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b">More...</a><br /></td></tr>
+<tr class="separator:a96d8ac1dda53187455352f99bbb5b04b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36b23d216532231925c4107894204680"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a36b23d216532231925c4107894204680">th_encode_free</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc)</td></tr>
+<tr class="memdesc:a36b23d216532231925c4107894204680"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees an allocated encoder instance.  <a href="theoraenc_8h.html#a36b23d216532231925c4107894204680">More...</a><br /></td></tr>
+<tr class="separator:a36b23d216532231925c4107894204680"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">TH_ENCCTL_SET_RATE_FLAGS flags</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p ><a class="anchor" id="ratectlflags"></a>These are the flags available for use with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. </p>
+</td></tr>
+<tr class="memitem:a3e7fab53b902b54135522ba286f45e33"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">TH_RATECTL_DROP_FRAMES</a>&#160;&#160;&#160;(0x1)</td></tr>
+<tr class="memdesc:a3e7fab53b902b54135522ba286f45e33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Drop frames to keep within bitrate buffer constraints.  <a href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">More...</a><br /></td></tr>
+<tr class="separator:a3e7fab53b902b54135522ba286f45e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a32f9983b344a431334493cefb0b9337c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">TH_RATECTL_CAP_OVERFLOW</a>&#160;&#160;&#160;(0x2)</td></tr>
+<tr class="memdesc:a32f9983b344a431334493cefb0b9337c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ignore bitrate buffer overflows.  <a href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">More...</a><br /></td></tr>
+<tr class="separator:a32f9983b344a431334493cefb0b9337c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad0d62d9dce542caf5296b03b97e020a6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">TH_RATECTL_CAP_UNDERFLOW</a>&#160;&#160;&#160;(0x4)</td></tr>
+<tr class="memdesc:ad0d62d9dce542caf5296b03b97e020a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ignore bitrate buffer underflows.  <a href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">More...</a><br /></td></tr>
+<tr class="separator:ad0d62d9dce542caf5296b03b97e020a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b1b462989f4e7a5a98e6e697f1a7f7d"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__quant__info.html">th_quant_info</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></td></tr>
+<tr class="memdesc:a3b1b462989f4e7a5a98e6e697f1a7f7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The quantization parameters used by VP3.  <a href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">More...</a><br /></td></tr>
+<tr class="separator:a3b1b462989f4e7a5a98e6e697f1a7f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__huff__code.html">th_huff_code</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a> [<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a>][<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a>]</td></tr>
+<tr class="memdesc:aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Huffman tables used by VP3.  <a href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">More...</a><br /></td></tr>
+<tr class="separator:aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The <code>libtheoraenc</code> C encoding API. </p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="ab915dd90f069a2431454fd62365e9381"></a><!-- doxytag: member="theoraenc.h::_O_THEORA_THEORAENC_H_" ref="ab915dd90f069a2431454fd62365e9381" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >The <code>libtheoraenc</code> C encoding API. </p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ab43b2364621da8df29ee636107fef234" name="ab43b2364621da8df29ee636107fef234"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab43b2364621da8df29ee636107fef234">&#9670;&nbsp;</a></span>OGG_THEORA_THEORAENC_HEADER</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define _O_THEORA_THEORAENC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+          <td class="memname">#define OGG_THEORA_THEORAENC_HEADER&#160;&#160;&#160;(1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a4a84f982cdd9a3e3c803a29bbde9df0b"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_2PASS_IN" ref="a4a84f982cdd9a3e3c803a29bbde9df0b" args="" -->
+<a id="a4a84f982cdd9a3e3c803a29bbde9df0b" name="a4a84f982cdd9a3e3c803a29bbde9df0b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4a84f982cdd9a3e3c803a29bbde9df0b">&#9670;&nbsp;</a></span>TH_ENCCTL_2PASS_IN</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_2PASS_IN&nbsp;&nbsp;&nbsp;(26)</td>
+          <td class="memname">#define TH_ENCCTL_2PASS_IN&#160;&#160;&#160;(26)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Submits two-pass encoding metric data collected the first encoding pass to the second pass. </p>
-<p>The first call must be made before the first frame is encoded, and a target bitrate must have already been specified to the encoder. It sets the encoder to pass 2 mode implicitly; this cannot be disabled. The encoder may require reading data from some or all of the frames in advance, depending on, e.g., the reservoir size used in the second pass. You must call this function repeatedly before each frame to provide data until either a) it fails to consume all of the data presented or b) all of the pass 1 data has been consumed. In the first case, you must save the remaining data to be presented after the next frame. You can call this function with a NULL argument to get an upper bound on the number of bytes that will be required before the next frame.</p>
-<p>When pass 2 is first enabled, the default bit reservoir is set to the entire file; this gives maximum flexibility but can lead to very high peak rates. You can subsequently set it to another value with <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52" title="Sets the size of the bitrate management bit reservoir as a function of number of frames.">TH_ENCCTL_SET_RATE_BUFFER</a> (e.g., to set it to the keyframe interval for non-live streaming), however, you may then need to provide more data before the next frame.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>char[]</code>: A buffer containing the data returned by <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282" title="Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics.">TH_ENCCTL_2PASS_OUT</a> in pass 1. You may pass <code>NULL</code> for <em>_buf</em> to return an upper bound on the number of additional bytes needed before the next frame. The summary data returned at the end of pass 1 must be at the head of the buffer on the first call with a non-<code>NULL</code> <em>_buf</em>, and the placeholder data returned at the start of pass 1 should be omitted. After each call you should advance this buffer by the number of bytes consumed. </td></tr>
+<p >The first call must be made before the first frame is encoded, and a target bitrate must have already been specified to the encoder. It sets the encoder to pass 2 mode implicitly; this cannot be disabled. The encoder may require reading data from some or all of the frames in advance, depending on, e.g., the reservoir size used in the second pass. You must call this function repeatedly before each frame to provide data until either a) it fails to consume all of the data presented or b) all of the pass 1 data has been consumed. In the first case, you must save the remaining data to be presented after the next frame. You can call this function with a NULL argument to get an upper bound on the number of bytes that will be required before the next frame.</p>
+<p >When pass 2 is first enabled, the default bit reservoir is set to the entire file; this gives maximum flexibility but can lead to very high peak rates. You can subsequently set it to another value with <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52" title="Sets the size of the bitrate management bit reservoir as a function of number of frames.">TH_ENCCTL_SET_RATE_BUFFER</a> (e.g., to set it to the keyframe interval for non-live streaming), however, you may then need to provide more data before the next frame.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>char[]</code>: A buffer containing the data returned by <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282" title="Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics.">TH_ENCCTL_2PASS_OUT</a> in pass 1. You may pass <code>NULL</code> for <em>_buf</em> to return an upper bound on the number of additional bytes needed before the next frame. The summary data returned at the end of pass 1 must be at the head of the buffer on the first call with a non-<code>NULL</code> <em>_buf</em>, and the placeholder data returned at the start of pass 1 should be omitted. After each call you should advance this buffer by the number of bytes consumed. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>&gt;0</em>&nbsp;</td><td>The number of bytes of metric data required/consumed. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No more data is required before the next frame. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>No target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_ENOTFORMAT</em>&nbsp;</td><td>The data did not appear to be pass 1 from a compatible implementation of this library. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EBADHEADER</em>&nbsp;</td><td>The data was invalid; this may be returned when attempting to read an aborted pass 1 file that still has the placeholder data in place of the summary data. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">&gt;0</td><td>The number of bytes of metric data required/consumed. </td></tr>
+    <tr><td class="paramname">0</td><td>No more data is required before the next frame. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td>No target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
+    <tr><td class="paramname">TH_ENOTFORMAT</td><td>The data did not appear to be pass 1 from a compatible implementation of this library. </td></tr>
+    <tr><td class="paramname">TH_EBADHEADER</td><td>The data was invalid; this may be returned when attempting to read an aborted pass 1 file that still has the placeholder data in place of the summary data. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="ac3751b9c3838888ec2e3f0b0d2823282"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_2PASS_OUT" ref="ac3751b9c3838888ec2e3f0b0d2823282" args="" -->
+<a id="ac3751b9c3838888ec2e3f0b0d2823282" name="ac3751b9c3838888ec2e3f0b0d2823282"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac3751b9c3838888ec2e3f0b0d2823282">&#9670;&nbsp;</a></span>TH_ENCCTL_2PASS_OUT</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_2PASS_OUT&nbsp;&nbsp;&nbsp;(24)</td>
+          <td class="memname">#define TH_ENCCTL_2PASS_OUT&#160;&#160;&#160;(24)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics. </p>
-<p>Pass 1 mode must be enabled before the first frame is encoded, and a target bitrate must have already been specified to the encoder. Although this does not have to be the exact rate that will be used in the second pass, closer values may produce better results. The first call returns the size of the two-pass header data, along with some placeholder content, and sets the encoder into pass 1 mode implicitly. This call sets the encoder to pass 1 mode implicitly. Then, a subsequent call must be made after each call to <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a> to retrieve the metrics for that frame. An additional, final call must be made to retrieve the summary data, containing such information as the total number of frames, etc. This must be stored in place of the placeholder data that was returned in the first call, before the frame metrics data. All of this data must be presented back to the encoder during pass 2 using <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b" title="Submits two-pass encoding metric data collected the first encoding pass to the second pass...">TH_ENCCTL_2PASS_IN</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>&lt;tt&gt;char</em>&nbsp;</td><td>*_buf: Returns a pointer to internal storage containing the two pass metrics data. This storage is only valid until the next call, or until the encoder context is freed, and must be copied by the application. </td></tr>
+<p >Pass 1 mode must be enabled before the first frame is encoded, and a target bitrate must have already been specified to the encoder. Although this does not have to be the exact rate that will be used in the second pass, closer values may produce better results. The first call returns the size of the two-pass header data, along with some placeholder content, and sets the encoder into pass 1 mode implicitly. This call sets the encoder to pass 1 mode implicitly. Then, a subsequent call must be made after each call to <a class="el" href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a> to retrieve the metrics for that frame. An additional, final call must be made to retrieve the summary data, containing such information as the total number of frames, etc. This must be stored in place of the placeholder data that was returned in the first call, before the frame metrics data. All of this data must be presented back to the encoder during pass 2 using <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b" title="Submits two-pass encoding metric data collected the first encoding pass to the second pass.">TH_ENCCTL_2PASS_IN</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">&lt;tt&gt;char</td><td>*_buf: Returns a pointer to internal storage containing the two pass metrics data. This storage is only valid until the next call, or until the encoder context is freed, and must be copied by the application. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>&gt;=0</em>&nbsp;</td><td>The number of bytes of metric data available in the returned buffer. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(char *)</code>, no target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">&gt;=0</td><td>The number of bytes of metric data available in the returned buffer. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(char *)</code>, no target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a114b7c552f50b7b8d881a39489af1f61"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_GET_SPLEVEL" ref="a114b7c552f50b7b8d881a39489af1f61" args="" -->
+<a id="a114b7c552f50b7b8d881a39489af1f61" name="a114b7c552f50b7b8d881a39489af1f61"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a114b7c552f50b7b8d881a39489af1f61">&#9670;&nbsp;</a></span>TH_ENCCTL_GET_SPLEVEL</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL&nbsp;&nbsp;&nbsp;(16)</td>
+          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL&#160;&#160;&#160;(16)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Gets the current speed level. </p>
-<p>The default speed level may vary according to encoder implementation, but if this control code is not supported (it returns <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe" title="The specified function is not implemented.">TH_EIMPL</a>), the default may be assumed to be the slowest available speed (0). The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The current encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+<p >The default speed level may vary according to encoder implementation, but if this control code is not supported (it returns <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe" title="The specified function is not implemented.">TH_EIMPL</a>), the default may be assumed to be the slowest available speed (0). The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">_buf</td><td><code>int</code>: The current encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a9baf5bdd206e80c78a8fd44687e89783"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_GET_SPLEVEL_MAX" ref="a9baf5bdd206e80c78a8fd44687e89783" args="" -->
+<a id="a9baf5bdd206e80c78a8fd44687e89783" name="a9baf5bdd206e80c78a8fd44687e89783"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9baf5bdd206e80c78a8fd44687e89783">&#9670;&nbsp;</a></span>TH_ENCCTL_GET_SPLEVEL_MAX</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&nbsp;&nbsp;&nbsp;(12)</td>
+          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&#160;&#160;&#160;(12)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Gets the maximum speed level. </p>
-<p>Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. constant quality, etc.).</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The maximum encoding speed level. </td></tr>
+<p >Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. constant quality, etc.).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">_buf</td><td><code>int</code>: The maximum encoding speed level. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a9b969df55ecad1acd1ae207fad42592e"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_BITRATE" ref="a9b969df55ecad1acd1ae207fad42592e" args="" -->
+<a id="a9b969df55ecad1acd1ae207fad42592e" name="a9b969df55ecad1acd1ae207fad42592e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b969df55ecad1acd1ae207fad42592e">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_BITRATE</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_BITRATE&nbsp;&nbsp;&nbsp;(30)</td>
+          <td class="memname">#define TH_ENCCTL_SET_BITRATE&#160;&#160;&#160;(30)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the current encoding bitrate. </p>
-<p>Once a bitrate is set, the encoder must use a rate-controlled mode for all future frames (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target bitrate encoded in them will be updated. Due to the buffer delay, the exact bitrate of each section of the encode is not guaranteed. The encoder may have already used more bits than allowed for the frames it has encoded, expecting to make them up in future frames, or it may have used fewer, holding the excess in reserve. The exact transition between the two bitrates is not well-defined by this API, but may be affected by flags set with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. After a number of frames equal to the buffer delay, one may expect further output to average at the target bitrate.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>long</code>: The new target bitrate, in bits per second. </td></tr>
+<p >Once a bitrate is set, the encoder must use a rate-controlled mode for all future frames (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target bitrate encoded in them will be updated. Due to the buffer delay, the exact bitrate of each section of the encode is not guaranteed. The encoder may have already used more bits than allowed for the frames it has encoded, expecting to make them up in future frames, or it may have used fewer, holding the excess in reserve. The exact transition between the two bitrates is not well-defined by this API, but may be affected by flags set with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. After a number of frames equal to the buffer delay, one may expect further output to average at the target bitrate.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>long</code>: The new target bitrate, in bits per second. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>The target bitrate was not positive. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td>The target bitrate was not positive. A future version of this library may allow passing 0 to disabled rate-controlled mode and return to a quality-based mode, in which case this function will not return an error for that value. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="aeb3085ec96e06eca81b3a372e5ed9bff"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_COMPAT_CONFIG" ref="aeb3085ec96e06eca81b3a372e5ed9bff" args="" -->
+<a id="aeb3085ec96e06eca81b3a372e5ed9bff" name="aeb3085ec96e06eca81b3a372e5ed9bff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeb3085ec96e06eca81b3a372e5ed9bff">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_COMPAT_CONFIG</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_COMPAT_CONFIG&nbsp;&nbsp;&nbsp;(32)</td>
+          <td class="memname">#define TH_ENCCTL_SET_COMPAT_CONFIG&#160;&#160;&#160;(32)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the configuration to be compatible with that from the given setup header. </p>
-<p>This sets the Huffman codebooks and quantization parameters to match those found in the given setup header. This guarantees that packets encoded by this encoder will be decodable using a decoder configured with the passed-in setup header. It does <em>not</em> guarantee that <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> will produce a bit-identical setup header, only that they will be compatible. If you need a bit-identical setup header, then use the one you passed into this command, and not the one returned by <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a>.</p>
-<p>This also does <em>not</em> enable or disable VP3 compatibility; that is not signaled in the setup header (or anywhere else in the encoded stream), and is controlled independently by the <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8" title="Disables any encoder features that would prevent lossless transcoding back to VP3.">TH_ENCCTL_SET_VP3_COMPATIBLE</a> function. If you wish to enable VP3 compatibility mode <em>and</em> want the codebooks and quantization parameters to match the given setup header, you should enable VP3 compatibility before invoking this command, otherwise the codebooks and quantization parameters will be reset to the VP3 defaults.</p>
-<p>The current encoder does not support Huffman codebooks which do not contain codewords for all 32 tokens. Such codebooks are legal, according to the specification, but cannot be configured with this function.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>unsigned char[]</code>: The encoded setup header to copy the configuration from. This should be the original, undecoded setup header packet, and <em>not</em> a <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> structure filled in by <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
+<p >This sets the Huffman codebooks and quantization parameters to match those found in the given setup header. This guarantees that packets encoded by this encoder will be decodable using a decoder configured with the passed-in setup header. It does <em>not</em> guarantee that <a class="el" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> will produce a bit-identical setup header, only that they will be compatible. If you need a bit-identical setup header, then use the one you passed into this command, and not the one returned by <a class="el" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a>.</p>
+<p >This also does <em>not</em> enable or disable VP3 compatibility; that is not signaled in the setup header (or anywhere else in the encoded stream), and is controlled independently by the <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8" title="Disables any encoder features that would prevent lossless transcoding back to VP3.">TH_ENCCTL_SET_VP3_COMPATIBLE</a> function. If you wish to enable VP3 compatibility mode <em>and</em> want the codebooks and quantization parameters to match the given setup header, you should enable VP3 compatibility before invoking this command, otherwise the codebooks and quantization parameters will be reset to the VP3 defaults.</p>
+<p >The current encoder does not support Huffman codebooks which do not contain codewords for all 32 tokens. Such codebooks are legal, according to the specification, but cannot be configured with this function.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>unsigned char[]</code>: The encoded setup header to copy the configuration from. This should be the original, undecoded setup header packet, and <em>not</em> a <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> structure filled in by <a class="el" href="theoradec_8h.html#a006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>Encoding has already begun, so the codebooks and quantization parameters cannot be changed, or the data in the setup header was not supported by this encoder. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EBADHEADER</em>&nbsp;</td><td><em>_buf</em> did not contain a valid setup header packet. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_ENOTFORMAT</em>&nbsp;</td><td><em>_buf</em> did not contain a Theora header at all. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td>Encoding has already begun, so the codebooks and quantization parameters cannot be changed, or the data in the setup header was not supported by this encoder. </td></tr>
+    <tr><td class="paramname">TH_EBADHEADER</td><td><em>_buf</em> did not contain a valid setup header packet. </td></tr>
+    <tr><td class="paramname">TH_ENOTFORMAT</td><td><em>_buf</em> did not contain a Theora header at all. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a8bb9b05471c42a09f8684a2583b8a1df"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_DUP_COUNT" ref="a8bb9b05471c42a09f8684a2583b8a1df" args="" -->
+<a id="a8bb9b05471c42a09f8684a2583b8a1df" name="a8bb9b05471c42a09f8684a2583b8a1df"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8bb9b05471c42a09f8684a2583b8a1df">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_DUP_COUNT</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_DUP_COUNT&nbsp;&nbsp;&nbsp;(18)</td>
+          <td class="memname">#define TH_ENCCTL_SET_DUP_COUNT&#160;&#160;&#160;(18)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the number of duplicates of the next frame to produce. </p>
-<p>Although libtheora can encode duplicate frames very cheaply, it costs some amount of CPU to detect them, and a run of duplicates cannot span a keyframe boundary. This control code tells the encoder to produce the specified number of extra duplicates of the next frame. This allows the encoder to make smarter keyframe placement decisions and rate control decisions, and reduces CPU usage as well, when compared to just submitting the same frame for encoding multiple times. This setting only applies to the next frame submitted for encoding. You MUST call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> repeatedly until it returns 0, or the extra duplicate frames will be lost.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The number of duplicates to produce. If this is negative or zero, no duplicates will be produced. </td></tr>
+<p >Although libtheora can encode duplicate frames very cheaply, it costs some amount of CPU to detect them, and a run of duplicates cannot span a keyframe boundary. This control code tells the encoder to produce the specified number of extra duplicates of the next frame. This allows the encoder to make smarter keyframe placement decisions and rate control decisions, and reduces CPU usage as well, when compared to just submitting the same frame for encoding multiple times. This setting only applies to the next frame submitted for encoding. You MUST call <a class="el" href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> repeatedly until it returns 0, or the extra duplicate frames will be lost.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>int</code>: The number of duplicates to produce. If this is negative or zero, no duplicates will be produced. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the number of duplicates is greater than or equal to the maximum keyframe interval. In the latter case, NO duplicate frames will be produced. You must ensure that the maximum keyframe interval is set larger than the maximum number of duplicates you will ever wish to insert prior to encoding. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the number of duplicates is greater than or equal to the maximum keyframe interval. In the latter case, NO duplicate frames will be produced. You must ensure that the maximum keyframe interval is set larger than the maximum number of duplicates you will ever wish to insert prior to encoding. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a0165348788e560a19b7c61ae8f0c2283"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_HUFFMAN_CODES" ref="a0165348788e560a19b7c61ae8f0c2283" args="" -->
+<a id="a0165348788e560a19b7c61ae8f0c2283" name="a0165348788e560a19b7c61ae8f0c2283"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0165348788e560a19b7c61ae8f0c2283">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_HUFFMAN_CODES</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_HUFFMAN_CODES&nbsp;&nbsp;&nbsp;(0)</td>
+          <td class="memname">#define TH_ENCCTL_SET_HUFFMAN_CODES&#160;&#160;&#160;(0)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the Huffman tables to use. </p>
-<p>The tables are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default tables.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code><a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>[<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>][<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a>]</code> </td></tr>
+<p >The tables are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default tables.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code><a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>[<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>][<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a>]</code> </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>Encoding has already begun or one or more of the given tables is not full or prefix-free, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>)*<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>*<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a></code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td>Encoding has already begun or one or more of the given tables is not full or prefix-free, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>)*<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>*<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a></code>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a27e755e15b4b5604c54974b304037a49"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE" ref="a27e755e15b4b5604c54974b304037a49" args="" -->
+<a id="a27e755e15b4b5604c54974b304037a49" name="a27e755e15b4b5604c54974b304037a49"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a27e755e15b4b5604c54974b304037a49">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&nbsp;&nbsp;&nbsp;(4)</td>
+          <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&#160;&#160;&#160;(4)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the maximum distance between key frames. </p>
-<p>This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
+<p >This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position.">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">_buf</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="aac087983fa951b9148c9db6bc2e81ef4"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_QUALITY" ref="aac087983fa951b9148c9db6bc2e81ef4" args="" -->
+<a id="aac087983fa951b9148c9db6bc2e81ef4" name="aac087983fa951b9148c9db6bc2e81ef4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aac087983fa951b9148c9db6bc2e81ef4">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_QUALITY</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_QUALITY&nbsp;&nbsp;&nbsp;(28)</td>
+          <td class="memname">#define TH_ENCCTL_SET_QUALITY&#160;&#160;&#160;(28)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the current encoding quality. </p>
-<p>This is only valid so long as no bitrate has been specified, either through the <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct used to initialize the encoder or through <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e" title="Sets the current encoding bitrate.">TH_ENCCTL_SET_BITRATE</a> (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target quality encoded in them will be updated.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The new target quality, in the range 0...63, inclusive. </td></tr>
+<p >This is only valid so long as no bitrate has been specified, either through the <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct used to initialize the encoder or through <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e" title="Sets the current encoding bitrate.">TH_ENCCTL_SET_BITRATE</a> (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target quality encoded in them will be updated.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>int</code>: The new target quality, in the range 0...63, inclusive. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>A target bitrate has already been specified, or the quality index was not in the range 0...63. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td>A target bitrate has already been specified, or the quality index was not in the range 0...63. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a3befcdd66678f8d27034f9c4b16d1b9c"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_QUANT_PARAMS" ref="a3befcdd66678f8d27034f9c4b16d1b9c" args="" -->
+<a id="a3befcdd66678f8d27034f9c4b16d1b9c" name="a3befcdd66678f8d27034f9c4b16d1b9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3befcdd66678f8d27034f9c4b16d1b9c">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_QUANT_PARAMS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&nbsp;&nbsp;&nbsp;(2)</td>
+          <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&#160;&#160;&#160;(2)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the quantization parameters to use. </p>
-<p>The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
+<p >The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>Encoding has already begun, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td>Encoding has already begun, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="aaefb515876b2a180ad5c3120fc584a52"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_RATE_BUFFER" ref="aaefb515876b2a180ad5c3120fc584a52" args="" -->
+<a id="aaefb515876b2a180ad5c3120fc584a52" name="aaefb515876b2a180ad5c3120fc584a52"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaefb515876b2a180ad5c3120fc584a52">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_RATE_BUFFER</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_RATE_BUFFER&nbsp;&nbsp;&nbsp;(22)</td>
+          <td class="memname">#define TH_ENCCTL_SET_RATE_BUFFER&#160;&#160;&#160;(22)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the size of the bitrate management bit reservoir as a function of number of frames. </p>
-<p>The reservoir size affects how quickly bitrate management reacts to instantaneous changes in the video complexity. Larger reservoirs react more slowly, and provide better overall quality, but require more buffering by a client, adding more latency to live streams. By default, libtheora sets the reservoir to the maximum distance between keyframes, subject to a minimum and maximum limit. This call may be used to increase or decrease the reservoir, increasing or decreasing the allowed temporary variance in bitrate. An implementation may impose some limits on the size of a reservoir it can handle, in which case the actual reservoir size may not be exactly what was requested. The actual value set will be returned.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: Requested size of the reservoir measured in frames. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The actual size of the reservoir set. </td></tr>
+<p >The reservoir size affects how quickly bitrate management reacts to instantaneous changes in the video complexity. Larger reservoirs react more slowly, and provide better overall quality, but require more buffering by a client, adding more latency to live streams. By default, libtheora sets the reservoir to the maximum distance between keyframes, subject to a minimum and maximum limit. This call may be used to increase or decrease the reservoir, increasing or decreasing the allowed temporary variance in bitrate. An implementation may impose some limits on the size of a reservoir it can handle, in which case the actual reservoir size may not be exactly what was requested. The actual value set will be returned.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>int</code>: Requested size of the reservoir measured in frames. </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">_buf</td><td><code>int</code>: The actual size of the reservoir set. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or rate control is not enabled. The buffer has an implementation defined minimum and maximum size and the value in _buf will be adjusted to match the actual value set. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or rate control is not enabled. The buffer has an implementation defined minimum and maximum size and the value in _buf will be adjusted to match the actual value set. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a026502e08fbe1af0a1063f39bd18129c"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_RATE_FLAGS" ref="a026502e08fbe1af0a1063f39bd18129c" args="" -->
+<a id="a026502e08fbe1af0a1063f39bd18129c" name="a026502e08fbe1af0a1063f39bd18129c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a026502e08fbe1af0a1063f39bd18129c">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_RATE_FLAGS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_RATE_FLAGS&nbsp;&nbsp;&nbsp;(20)</td>
+          <td class="memname">#define TH_ENCCTL_SET_RATE_FLAGS&#160;&#160;&#160;(20)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Modifies the default bitrate management behavior. </p>
-<p>Use to allow or disallow frame dropping, and to enable or disable capping bit reservoir overflows and underflows. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available flags</a>. The flags are set by default to <code><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33" title="Drop frames to keep within bitrate buffer constraints.">TH_RATECTL_DROP_FRAMES</a>|<a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c" title="Ignore bitrate buffer overflows.">TH_RATECTL_CAP_OVERFLOW</a></code>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: Any combination of <a class="el" href="theoraenc_8h.html#ratectlflags">the available flags</a>:</p>
-<ul>
+<p >Use to allow or disallow frame dropping, and to enable or disable capping bit reservoir overflows and underflows. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available flags</a>. The flags are set by default to <code><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33" title="Drop frames to keep within bitrate buffer constraints.">TH_RATECTL_DROP_FRAMES</a>|<a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c" title="Ignore bitrate buffer overflows.">TH_RATECTL_CAP_OVERFLOW</a></code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>int</code>: Any combination of <a class="el" href="theoraenc_8h.html#ratectlflags">the available flags</a>:<ul>
 <li><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33" title="Drop frames to keep within bitrate buffer constraints.">TH_RATECTL_DROP_FRAMES</a>: Enable frame dropping.</li>
 <li><a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c" title="Ignore bitrate buffer overflows.">TH_RATECTL_CAP_OVERFLOW</a>: Don't bank excess bits for later use.</li>
 <li><a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6" title="Ignore bitrate buffer underflows.">TH_RATECTL_CAP_UNDERFLOW</a>: Don't try to make up shortfalls later. </li>
@@ -546,128 +604,135 @@ Variables</h2></td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code> or rate control is not enabled. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code> or rate control is not enabled. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="abd9fbcb6a25a77d991d3620164fe59d6"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_SPLEVEL" ref="abd9fbcb6a25a77d991d3620164fe59d6" args="" -->
+<a id="abd9fbcb6a25a77d991d3620164fe59d6" name="abd9fbcb6a25a77d991d3620164fe59d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abd9fbcb6a25a77d991d3620164fe59d6">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_SPLEVEL</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&nbsp;&nbsp;&nbsp;(14)</td>
+          <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&#160;&#160;&#160;(14)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Sets the speed level. </p>
-<p>The current speed level may be retrieved using <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61" title="Gets the current speed level.">TH_ENCCTL_GET_SPLEVEL</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+<p >The current speed level may be retrieved using <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61" title="Gets the current speed level.">TH_ENCCTL_GET_SPLEVEL</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>int</code>: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a382d685a39a34d8e6ba76b00d804efd8"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_VP3_COMPATIBLE" ref="a382d685a39a34d8e6ba76b00d804efd8" args="" -->
+<a id="a382d685a39a34d8e6ba76b00d804efd8" name="a382d685a39a34d8e6ba76b00d804efd8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a382d685a39a34d8e6ba76b00d804efd8">&#9670;&nbsp;</a></span>TH_ENCCTL_SET_VP3_COMPATIBLE</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&nbsp;&nbsp;&nbsp;(10)</td>
+          <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&#160;&#160;&#160;(10)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Disables any encoder features that would prevent lossless transcoding back to VP3. </p>
-<p>This primarily means disabling block-adaptive quantization and always coding all four luma blocks in a macro block when 4MV is used. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
+<p >This primarily means disabling block-adaptive quantization and always coding all four luma blocks in a macro block when 4MV is used. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">_buf</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">_buf</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
   </table>
   </dd>
 </dl>
-<dl><dt><b>Return values:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td class="paramname">TH_EIMPL</td><td>Not supported by this implementation. </td></tr>
   </table>
   </dd>
 </dl>
 
 </div>
 </div>
-<a class="anchor" id="a32f9983b344a431334493cefb0b9337c"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_CAP_OVERFLOW" ref="a32f9983b344a431334493cefb0b9337c" args="" -->
+<a id="a32f9983b344a431334493cefb0b9337c" name="a32f9983b344a431334493cefb0b9337c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a32f9983b344a431334493cefb0b9337c">&#9670;&nbsp;</a></span>TH_RATECTL_CAP_OVERFLOW</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_RATECTL_CAP_OVERFLOW&nbsp;&nbsp;&nbsp;(0x2)</td>
+          <td class="memname">#define TH_RATECTL_CAP_OVERFLOW&#160;&#160;&#160;(0x2)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Ignore bitrate buffer overflows. </p>
-<p>If the encoder uses so few bits that the reservoir of available bits overflows, ignore the excess. The encoder will not try to use these extra bits in future frames. At high rates this may cause the result to be undersized, but allows a client to play the stream using a finite buffer; it should normally be enabled. </p>
+<p >If the encoder uses so few bits that the reservoir of available bits overflows, ignore the excess. The encoder will not try to use these extra bits in future frames. At high rates this may cause the result to be undersized, but allows a client to play the stream using a finite buffer; it should normally be enabled, which is the default. </p>
 
 </div>
 </div>
-<a class="anchor" id="ad0d62d9dce542caf5296b03b97e020a6"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_CAP_UNDERFLOW" ref="ad0d62d9dce542caf5296b03b97e020a6" args="" -->
+<a id="ad0d62d9dce542caf5296b03b97e020a6" name="ad0d62d9dce542caf5296b03b97e020a6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad0d62d9dce542caf5296b03b97e020a6">&#9670;&nbsp;</a></span>TH_RATECTL_CAP_UNDERFLOW</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_RATECTL_CAP_UNDERFLOW&nbsp;&nbsp;&nbsp;(0x4)</td>
+          <td class="memname">#define TH_RATECTL_CAP_UNDERFLOW&#160;&#160;&#160;(0x4)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Ignore bitrate buffer underflows. </p>
-<p>If the encoder uses so many bits that the reservoir of available bits underflows, ignore the deficit. The encoder will not try to make up these extra bits in future frames. At low rates this may cause the result to be oversized; it should normally be disabled. </p>
+<p >If the encoder uses so many bits that the reservoir of available bits underflows, ignore the deficit. The encoder will not try to make up these extra bits in future frames. At low rates this may cause the result to be oversized; it should normally be disabled, which is the default. </p>
 
 </div>
 </div>
-<a class="anchor" id="a3e7fab53b902b54135522ba286f45e33"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_DROP_FRAMES" ref="a3e7fab53b902b54135522ba286f45e33" args="" -->
+<a id="a3e7fab53b902b54135522ba286f45e33" name="a3e7fab53b902b54135522ba286f45e33"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e7fab53b902b54135522ba286f45e33">&#9670;&nbsp;</a></span>TH_RATECTL_DROP_FRAMES</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define TH_RATECTL_DROP_FRAMES&nbsp;&nbsp;&nbsp;(0x1)</td>
+          <td class="memname">#define TH_RATECTL_DROP_FRAMES&#160;&#160;&#160;(0x1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>Drop frames to keep within bitrate buffer constraints. </p>
-<p>This can have a severe impact on quality, but is the only way to ensure that bitrate targets are met at low rates during sudden bursts of activity. </p>
+<p >This can have a severe impact on quality, but is the only way to ensure that bitrate targets are met at low rates during sudden bursts of activity. It is enabled by default. </p>
 
 </div>
 </div>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="af5cc40472b925456d42526a035d66edd"></a><!-- doxytag: member="theoraenc.h::th_enc_ctx" ref="af5cc40472b925456d42526a035d66edd" args="" -->
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="af5cc40472b925456d42526a035d66edd" name="af5cc40472b925456d42526a035d66edd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af5cc40472b925456d42526a035d66edd">&#9670;&nbsp;</a></span>th_enc_ctx</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -675,47 +740,327 @@ Variables</h2></td></tr>
           <td class="memname">typedef struct <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
 <p>The encoder context. </p>
 
 </div>
 </div>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"></a><!-- doxytag: member="theoraenc.h::TH_VP31_HUFF_CODES" ref="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e" args="[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]" -->
+<h2 class="groupheader">Function Documentation</h2>
+<a id="aad036b5967e07629b9be10a4d77ada00" name="aad036b5967e07629b9be10a4d77ada00"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aad036b5967e07629b9be10a4d77ada00">&#9670;&nbsp;</a></span>th_encode_alloc()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const <a class="el" href="structth__huff__code.html">th_huff_code</a> <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a>[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]</td>
+          <td class="memname"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> * th_encode_alloc </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&#160;</td>
+          <td class="paramname"><em>_info</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Allocates an encoder instance. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_info</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled with the desired encoding parameters. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The initialized <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">NULL</td><td>If the encoding parameters were invalid. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
 </div>
-<div class="memdoc">
+<a id="a3a427f6514dfdc01ea72172c469d51d9" name="a3a427f6514dfdc01ea72172c469d51d9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3a427f6514dfdc01ea72172c469d51d9">&#9670;&nbsp;</a></span>th_encode_ctl()</h2>
 
-<p>The Huffman tables used by VP3. </p>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_encode_ctl </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>_req</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>_buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>_buf_sz</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Encoder control function. </p>
+<p >This is used to provide advanced control the encoding process. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_enc</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_req</td><td>The control code to process. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available control codes</a> for details. </td></tr>
+    <tr><td class="paramname">_buf</td><td>The parameters for this control code. </td></tr>
+    <tr><td class="paramname">_buf_sz</td><td>The size of the parameter buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Possible return values depend on the control code used. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of control codes</a> for specific values. Generally 0 indicates success. </dd></dl>
 
 </div>
 </div>
-<a class="anchor" id="a3b1b462989f4e7a5a98e6e697f1a7f7d"></a><!-- doxytag: member="theoraenc.h::TH_VP31_QUANT_INFO" ref="a3b1b462989f4e7a5a98e6e697f1a7f7d" args="" -->
+<a id="a9439d61b566039d194ff782681fbc408" name="a9439d61b566039d194ff782681fbc408"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9439d61b566039d194ff782681fbc408">&#9670;&nbsp;</a></span>th_encode_flushheader()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const <a class="el" href="structth__quant__info.html">th_quant_info</a> <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></td>
+          <td class="memname">int th_encode_flushheader </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&#160;</td>
+          <td class="paramname"><em>_comments</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>_op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Outputs the next header packet. </p>
+<p >This should be called repeatedly after encoder initialization until it returns 0 in order to get all of the header packets, in order, before encoding actual video data. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_enc</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_comments</td><td>The metadata to place in the comment header, when it is encoded. </td></tr>
+    <tr><td class="paramname">_op</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the header data. The memory for the header data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A positive value indicates that a header packet was successfully produced. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>No packet was produced, and no more header packets remain. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em>, <em>_comments</em>, or <em>_op</em> was <code>NULL</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
 </div>
-<div class="memdoc">
+<a id="a36b23d216532231925c4107894204680" name="a36b23d216532231925c4107894204680"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a36b23d216532231925c4107894204680">&#9670;&nbsp;</a></span>th_encode_free()</h2>
 
-<p>The quantization parameters used by VP3. </p>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_encode_free </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_enc</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Frees an allocated encoder instance. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_enc</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+  </table>
+  </dd>
+</dl>
 
 </div>
+</div>
+<a id="a96d8ac1dda53187455352f99bbb5b04b" name="a96d8ac1dda53187455352f99bbb5b04b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96d8ac1dda53187455352f99bbb5b04b">&#9670;&nbsp;</a></span>th_encode_packetout()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_encode_packetout </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>_last</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&#160;</td>
+          <td class="paramname"><em>_op</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieves encoded video data packets. </p>
+<p >This should be called repeatedly after each frame is submitted to flush any encoded packets, until it returns 0. The encoder will not buffer these packets as subsequent frames are compressed, so a failure to do so will result in lost video data. </p><dl class="section note"><dt>Note</dt><dd>Currently the encoder operates in a one-frame-in, one-packet-out manner. However, this may be changed in the future. </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_enc</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_last</td><td>Set this flag to a non-zero value if no more uncompressed frames will be submitted. This ensures that a proper EOS flag is set on the last packet. </td></tr>
+    <tr><td class="paramname">_op</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the video data. The memory for the video data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A positive value indicates that a video data packet was successfully produced. </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>No packet was produced, and no more encoded video data remains. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="adbe7dd66b411c2d61ab8153c15308750" name="adbe7dd66b411c2d61ab8153c15308750"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adbe7dd66b411c2d61ab8153c15308750">&#9670;&nbsp;</a></span>th_encode_ycbcr_in()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_encode_ycbcr_in </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&#160;</td>
+          <td class="paramname"><em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&#160;</td>
+          <td class="paramname"><em>_ycbcr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Submits an uncompressed frame to the encoder. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">_enc</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td class="paramname">_ycbcr</td><td>A buffer of Y'CbCr data to encode. If the width and height of the buffer matches the frame size the encoder was initialized with, the encoder will only reference the portion inside the picture region. Any data outside this region will be ignored, and need not map to a valid address. Alternatively, you can pass a buffer equal to the size of the picture region, if this is less than the full frame size. When using subsampled chroma planes, odd picture sizes or odd picture offsets may require an unexpected chroma plane size, and their use is generally discouraged, as they will not be well-supported by players and other media frameworks. See Section 4.4 of <a href="https://www.theora.org/doc/Theora.pdf">the Theora specification</a> for details if you wish to use them anyway. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>Success. </td></tr>
+    <tr><td class="paramname">TH_EFAULT</td><td><em>_enc</em> or <em>_ycbcr</em> is <code>NULL</code>. </td></tr>
+    <tr><td class="paramname">TH_EINVAL</td><td>The buffer size matches neither the frame size nor the picture size the encoder was initialized with, or encoding has already completed. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e" name="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">&#9670;&nbsp;</a></span>TH_VP31_HUFF_CODES</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="structth__huff__code.html">th_huff_code</a> TH_VP31_HUFF_CODES[<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a>][<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a>]</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">extern</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The Huffman tables used by VP3. </p>
+
+</div>
+</div>
+<a id="a3b1b462989f4e7a5a98e6e697f1a7f7d" name="a3b1b462989f4e7a5a98e6e697f1a7f7d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b1b462989f4e7a5a98e6e697f1a7f7d">&#9670;&nbsp;</a></span>TH_VP31_QUANT_INFO</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="structth__quant__info.html">th_quant_info</a> TH_VP31_QUANT_INFO</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">extern</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The quantization parameters used by VP3. </p>
+
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/doc/libtheora-1.2/theoraenc_8h_source.html b/doc/libtheora-1.2/theoraenc_8h_source.html
index 01d78b0..e583be4 100644
--- a/doc/libtheora-1.2/theoraenc_8h_source.html
+++ b/doc/libtheora-1.2/theoraenc_8h_source.html
@@ -1,125 +1,142 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>libtheora: theoraenc.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>theoraenc.h</h1>  </div>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">libtheora<span id="projectnumber">&#160;1.2.0</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="contents">
-<a href="theoraenc_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
-<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
-<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
-<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
-<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
-<a name="l00006"></a>00006 <span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
-<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
-<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
-<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
-<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
-<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
-<a name="l00012"></a>00012 <span class="comment"></span>
-<a name="l00013"></a>00013 <span class="comment">  function:</span>
-<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
-<a name="l00015"></a>00015 <span class="comment"></span>
-<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
-<a name="l00017"></a>00017 
-<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(_O_THEORA_THEORAENC_H_)</span>
-<a name="l00022"></a><a class="code" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">00022</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_THEORAENC_H_ (1)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># include &lt;stddef.h&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html" title="The shared libtheoradec and libtheoraenc C API.">codec.h</a>&quot;</span>
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027 <span class="preprocessor">#if defined(__cplusplus)</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
-<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span>
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 
-<a name="l00053"></a><a class="code" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">00053</a> <span class="preprocessor">#define TH_ENCCTL_SET_HUFFMAN_CODES (0)</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>
-<a name="l00066"></a><a class="code" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">00066</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span>
-<a name="l00079"></a><a class="code" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">00079</a> <span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>
-<a name="l00107"></a><a class="code" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">00107</a> <span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span>
-<a name="l00108"></a>00108 <span class="preprocessor"></span>
-<a name="l00121"></a><a class="code" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">00121</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span>
-<a name="l00122"></a>00122 <span class="preprocessor"></span>
-<a name="l00135"></a><a class="code" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">00135</a> <span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span>
-<a name="l00136"></a>00136 <span class="preprocessor"></span>
-<a name="l00149"></a><a class="code" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">00149</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL (16)</span>
-<a name="l00150"></a>00150 <span class="preprocessor"></span>
-<a name="l00175"></a><a class="code" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">00175</a> <span class="preprocessor">#define TH_ENCCTL_SET_DUP_COUNT (18)</span>
-<a name="l00176"></a>00176 <span class="preprocessor"></span>
-<a name="l00195"></a><a class="code" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">00195</a> <span class="preprocessor">#define TH_ENCCTL_SET_RATE_FLAGS (20)</span>
-<a name="l00196"></a>00196 <span class="preprocessor"></span>
-<a name="l00221"></a><a class="code" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">00221</a> <span class="preprocessor">#define TH_ENCCTL_SET_RATE_BUFFER (22)</span>
-<a name="l00222"></a>00222 <span class="preprocessor"></span>
-<a name="l00251"></a><a class="code" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">00251</a> <span class="preprocessor">#define TH_ENCCTL_2PASS_OUT (24)</span>
-<a name="l00252"></a>00252 <span class="preprocessor"></span>
-<a name="l00297"></a><a class="code" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">00297</a> <span class="preprocessor">#define TH_ENCCTL_2PASS_IN (26)</span>
-<a name="l00298"></a>00298 <span class="preprocessor"></span>
-<a name="l00313"></a><a class="code" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">00313</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUALITY (28)</span>
-<a name="l00314"></a>00314 <span class="preprocessor"></span>
-<a name="l00334"></a><a class="code" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">00334</a> <span class="preprocessor">#define TH_ENCCTL_SET_BITRATE (30)</span>
-<a name="l00335"></a>00335 <span class="preprocessor"></span>
-<a name="l00374"></a><a class="code" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">00374</a> <span class="preprocessor">#define TH_ENCCTL_SET_COMPAT_CONFIG (32)</span>
-<a name="l00375"></a>00375 <span class="preprocessor"></span>
-<a name="l00386"></a><a class="code" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">00386</a> <span class="preprocessor">#define TH_RATECTL_DROP_FRAMES   (0x1)</span>
-<a name="l00387"></a>00387 <span class="preprocessor"></span>
-<a name="l00394"></a><a class="code" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">00394</a> <span class="preprocessor">#define TH_RATECTL_CAP_OVERFLOW  (0x2)</span>
-<a name="l00395"></a>00395 <span class="preprocessor"></span>
-<a name="l00401"></a><a class="code" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">00401</a> <span class="preprocessor">#define TH_RATECTL_CAP_UNDERFLOW (0x4)</span>
-<a name="l00402"></a>00402 <span class="preprocessor"></span>
-<a name="l00407"></a>00407 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> <a class="code" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d" title="The quantization parameters used by VP3.">TH_VP31_QUANT_INFO</a>;
-<a name="l00408"></a>00408 
-<a name="l00410"></a>00410 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>
-<a name="l00411"></a>00411  <a class="code" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e" title="The Huffman tables used by VP3.">TH_VP31_HUFF_CODES</a>[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS];
-<a name="l00412"></a>00412 
-<a name="l00413"></a>00413 
-<a name="l00414"></a>00414 
-<a name="l00422"></a><a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">00422</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a>    <a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a>;
-<a name="l00452"></a>00452 <span class="keyword">extern</span> <a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *<a class="code" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc</a>(<span class="keyword">const</span> <a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
-<a name="l00461"></a>00461 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,<span class="keywordtype">size_t</span> _buf_sz);
-<a name="l00479"></a>00479 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,
-<a name="l00480"></a>00480  <a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_comments,ogg_packet *_op);
-<a name="l00503"></a>00503 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _ycbcr);
-<a name="l00527"></a>00527 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _last,ogg_packet *_op);
-<a name="l00530"></a>00530 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc);
-<a name="l00533"></a>00533 
-<a name="l00534"></a>00534 
-<a name="l00535"></a>00535 
-<a name="l00536"></a>00536 <span class="preprocessor">#if defined(__cplusplus)</span>
-<a name="l00537"></a>00537 <span class="preprocessor"></span>}
-<a name="l00538"></a>00538 <span class="preprocessor">#endif</span>
-<a name="l00539"></a>00539 <span class="preprocessor"></span>
-<a name="l00540"></a>00540 <span class="preprocessor">#endif</span>
-</pre></div></div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',false,false,'search.php','Search');
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0f91760d62c578de767c41a0aaae5482.html">theora</a></li>  </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 23 2010 for libtheora by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle"><div class="title">theoraenc.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="theoraenc_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/********************************************************************</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * IN &#39;COPYING&#39;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> * by the Xiph.Org Foundation https://www.xiph.org/                 *</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> *                                                                  *</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> ********************************************************************</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"></span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment">  function:</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"></span> </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> ********************************************************************/</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="preprocessor">#if !defined(OGG_THEORA_THEORAENC_HEADER)</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#ab43b2364621da8df29ee636107fef234">   21</a></span><span class="preprocessor"># define OGG_THEORA_THEORAENC_HEADER (1)</span></div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor"># include &lt;stddef.h&gt;</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html">codec.h</a>&quot;</span></div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="preprocessor">#if defined(__cplusplus)</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">   52</a></span><span class="preprocessor">#define TH_ENCCTL_SET_HUFFMAN_CODES (0)</span></div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">   65</a></span><span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span></div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">   78</a></span><span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">  106</a></span><span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span></div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">  120</a></span><span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span></div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">  134</a></span><span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span></div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">  148</a></span><span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL (16)</span></div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">  174</a></span><span class="preprocessor">#define TH_ENCCTL_SET_DUP_COUNT (18)</span></div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">  194</a></span><span class="preprocessor">#define TH_ENCCTL_SET_RATE_FLAGS (20)</span></div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">  220</a></span><span class="preprocessor">#define TH_ENCCTL_SET_RATE_BUFFER (22)</span></div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">  250</a></span><span class="preprocessor">#define TH_ENCCTL_2PASS_OUT (24)</span></div>
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">  296</a></span><span class="preprocessor">#define TH_ENCCTL_2PASS_IN (26)</span></div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">  312</a></span><span class="preprocessor">#define TH_ENCCTL_SET_QUALITY (28)</span></div>
+<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">  337</a></span><span class="preprocessor">#define TH_ENCCTL_SET_BITRATE (30)</span></div>
+<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#aeb3085ec96e06eca81b3a372e5ed9bff">  377</a></span><span class="preprocessor">#define TH_ENCCTL_SET_COMPAT_CONFIG (32)</span></div>
+<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span> </div>
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">  390</a></span><span class="preprocessor">#define TH_RATECTL_DROP_FRAMES   (0x1)</span></div>
+<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">  398</a></span><span class="preprocessor">#define TH_RATECTL_CAP_OVERFLOW  (0x2)</span></div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">  405</a></span><span class="preprocessor">#define TH_RATECTL_CAP_UNDERFLOW (0x4)</span></div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span><span class="keyword">extern</span> <span class="keyword">const</span> <a class="code hl_struct" href="structth__quant__info.html">th_quant_info</a> <a class="code hl_variable" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a>;</div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span> </div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span><span class="keyword">extern</span> <span class="keyword">const</span> <a class="code hl_struct" href="structth__huff__code.html">th_huff_code</a></div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span> <a class="code hl_variable" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a>[<a class="code hl_define" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a>][<a class="code hl_define" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a>];</div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span> </div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span> </div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">  426</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>    <a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>;</div>
+<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00">  456</a></span><span class="keyword">extern</span> <a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *<a class="code hl_function" href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00">th_encode_alloc</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structth__info.html">th_info</a> *_info);</div>
+<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9">  468</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a>(<a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,<span class="keywordtype">size_t</span> _buf_sz);</div>
+<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408">  486</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408">th_encode_flushheader</a>(<a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc,</div>
+<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span> <a class="code hl_struct" href="structth__comment.html">th_comment</a> *_comments,ogg_packet *_op);</div>
+<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750">  510</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a>(<a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc,<a class="code hl_typedef" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr);</div>
+<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b">  534</a></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_function" href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a>(<a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _last,ogg_packet *_op);</div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"><a class="line" href="theoraenc_8h.html#a36b23d216532231925c4107894204680">  537</a></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="theoraenc_8h.html#a36b23d216532231925c4107894204680">th_encode_free</a>(<a class="code hl_typedef" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc);</div>
+<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span> </div>
+<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span> </div>
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span><span class="preprocessor">#if defined(__cplusplus)</span></div>
+<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span>}</div>
+<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span> </div>
+<div class="line"><a id="l00547" name="l00547"></a><span class="lineno">  547</span><span class="preprocessor">#endif </span><span class="comment">/* OGG_THEORA_THEORAENC_HEADER */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="acodec_8h_html"><div class="ttname"><a href="codec_8h.html">codec.h</a></div><div class="ttdoc">The shared libtheoradec and libtheoraenc C API.</div></div>
+<div class="ttc" id="acodec_8h_html_a2a44f48084e76a58cae48fb5d47cd422"><div class="ttname"><a href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a></div><div class="ttdeci">#define TH_NDCT_TOKENS</div><div class="ttdoc">The number of DCT token values in each table.</div><div class="ttdef"><b>Definition:</b> codec.h:427</div></div>
+<div class="ttc" id="acodec_8h_html_a343f7cfabad179cc4fe527cf06873f45"><div class="ttname"><a href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a></div><div class="ttdeci">th_img_plane th_ycbcr_buffer[3]</div><div class="ttdoc">A complete image buffer for an uncompressed frame.</div><div class="ttdef"><b>Definition:</b> codec.h:170</div></div>
+<div class="ttc" id="acodec_8h_html_a49bf449eae33c5320f0c308f32c6ae42"><div class="ttname"><a href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a></div><div class="ttdeci">#define TH_NHUFFMAN_TABLES</div><div class="ttdoc">The number of Huffman tables used by Theora.</div><div class="ttdef"><b>Definition:</b> codec.h:425</div></div>
+<div class="ttc" id="astructth__comment_html"><div class="ttname"><a href="structth__comment.html">th_comment</a></div><div class="ttdoc">The comment information.</div><div class="ttdef"><b>Definition:</b> codec.h:325</div></div>
+<div class="ttc" id="astructth__huff__code_html"><div class="ttname"><a href="structth__huff__code.html">th_huff_code</a></div><div class="ttdoc">A Huffman code for a Theora DCT token.</div><div class="ttdef"><b>Definition:</b> codec.h:440</div></div>
+<div class="ttc" id="astructth__info_html"><div class="ttname"><a href="structth__info.html">th_info</a></div><div class="ttdoc">Theora bitstream information.</div><div class="ttdef"><b>Definition:</b> codec.h:206</div></div>
+<div class="ttc" id="astructth__quant__info_html"><div class="ttname"><a href="structth__quant__info.html">th_quant_info</a></div><div class="ttdoc">A complete set of quantization parameters.</div><div class="ttdef"><b>Definition:</b> codec.h:411</div></div>
+<div class="ttc" id="atheoraenc_8h_html_a36b23d216532231925c4107894204680"><div class="ttname"><a href="theoraenc_8h.html#a36b23d216532231925c4107894204680">th_encode_free</a></div><div class="ttdeci">void th_encode_free(th_enc_ctx *_enc)</div><div class="ttdoc">Frees an allocated encoder instance.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_a3a427f6514dfdc01ea72172c469d51d9"><div class="ttname"><a href="theoraenc_8h.html#a3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a></div><div class="ttdeci">int th_encode_ctl(th_enc_ctx *_enc, int _req, void *_buf, size_t _buf_sz)</div><div class="ttdoc">Encoder control function.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_a3b1b462989f4e7a5a98e6e697f1a7f7d"><div class="ttname"><a href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></div><div class="ttdeci">const th_quant_info TH_VP31_QUANT_INFO</div><div class="ttdoc">The quantization parameters used by VP3.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_a9439d61b566039d194ff782681fbc408"><div class="ttname"><a href="theoraenc_8h.html#a9439d61b566039d194ff782681fbc408">th_encode_flushheader</a></div><div class="ttdeci">int th_encode_flushheader(th_enc_ctx *_enc, th_comment *_comments, ogg_packet *_op)</div><div class="ttdoc">Outputs the next header packet.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_a96d8ac1dda53187455352f99bbb5b04b"><div class="ttname"><a href="theoraenc_8h.html#a96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a></div><div class="ttdeci">int th_encode_packetout(th_enc_ctx *_enc, int _last, ogg_packet *_op)</div><div class="ttdoc">Retrieves encoded video data packets.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_aad036b5967e07629b9be10a4d77ada00"><div class="ttname"><a href="theoraenc_8h.html#aad036b5967e07629b9be10a4d77ada00">th_encode_alloc</a></div><div class="ttdeci">th_enc_ctx * th_encode_alloc(const th_info *_info)</div><div class="ttdoc">Allocates an encoder instance.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_adbe7dd66b411c2d61ab8153c15308750"><div class="ttname"><a href="theoraenc_8h.html#adbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a></div><div class="ttdeci">int th_encode_ycbcr_in(th_enc_ctx *_enc, th_ycbcr_buffer _ycbcr)</div><div class="ttdoc">Submits an uncompressed frame to the encoder.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"><div class="ttname"><a href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a></div><div class="ttdeci">const th_huff_code TH_VP31_HUFF_CODES[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]</div><div class="ttdoc">The Huffman tables used by VP3.</div></div>
+<div class="ttc" id="atheoraenc_8h_html_af5cc40472b925456d42526a035d66edd"><div class="ttname"><a href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></div><div class="ttdeci">struct th_enc_ctx th_enc_ctx</div><div class="ttdoc">The encoder context.</div><div class="ttdef"><b>Definition:</b> theoraenc.h:426</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Mar 29 2025 07:10:33 for libtheora by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
+</small></address>
 </body>
 </html>
diff --git a/downloads/index.shtml b/downloads/index.shtml
index 856d1ca..9d92e8e 100644
--- a/downloads/index.shtml
+++ b/downloads/index.shtml
@@ -15,25 +15,15 @@
       <p>The <strong>libtheora</strong> reference implementation 
       provides the standard encoder and decoder under a BSD license.</p>
     <ul>
-      <li>[<a href="http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2">libtheora-1.1.1.tar.bz2</a>]<br/>
-          [<a href="http://downloads.xiph.org/releases/theora/libtheora-1.1.1.zip">libtheora-1.1.1.zip</a>]</li>
+      <li>[<a href="http://downloads.xiph.org/releases/theora/libtheora-1.2.0.tar.bz2">libtheora-1.2.0.tar.gz</a>]</li>
     </ul>
 
       <p>The libtheora implementation depends on the following libraries...</p>
     <ul>
-      <li><a href="http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.gz">libogg-1.3.1</a></li>
+      <li><a href="http://downloads.xiph.org/releases/ogg/libogg-1.3.4.tar.gz">libogg-1.3.4</a></li>
       <li><a href="http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz">libvorbis-1.3.3</a></li>
       <li><a href="http://www.libsdl.org/">libSDL 1.2</a> or later for the playback example</li>
     </ul>
-
-      <p>You may also be interesting in testing our unstable releases
-         toward <strong>libtheora 1.2</strong>.</p>
-    <ul>
-      <li>[<a href="http://downloads.xiph.org/releases/theora/libtheora-1.2.0alpha1.tar.xz">libtheora-1.2.0alpha1.tar.xz</a>]<br/>
-          [<a href="http://downloads.xiph.org/releases/theora/libtheora-1.2.0alpha1.tar.gz">libtheora-1.2.0alpha1.tar.gz</a>]<br/>
-          [<a href="http://downloads.xiph.org/releases/theora/libtheora-1.2.0alpha1.zip">libtheora-1.2.0alpha1.zip</a>]</li>
-      <li>[<a href="/git/">Source code repository</a>]</li>
-    </ul>
   </li>
 </ul>
 
diff --git a/news/index.shtml b/news/index.shtml
index 58739a6..1c13263 100644
--- a/news/index.shtml
+++ b/news/index.shtml
@@ -8,6 +8,40 @@
 <!--#include virtual="/ssi/pagetop.include" -->
 <!--  All your page content goes here  -->
 
+<h3>Finally the 1.2.0 release is here</h3>
+<p class="newsdate">2025 March 29</p>
+
+<p>After over one and a half decade of testing, Xiph.Org is pleased to
+announce the release of our next generation encoder for the free
+Theora video format, codename "Ptalarbvorm".  This final release
+features mostly minor fixes to documentation and build system compared
+to 1.2.0beta1. Files produced by newer encoders can be decoded by
+earlier releases.</p>
+
+<p>If you're comfortable building software, please download the source
+and give us some feedback.</p>
+
+<ul>
+<li><a href="http://downloads.xiph.org/releases/theora/libtheora-1.2.0.tar.gz">libtheora-1.2.0.tar.gz</a></li>
+</ul>
+
+<h3>First beta release with the new encoder</h3>
+<p class="newsdate">2025 March 16</p>
+
+<p>After over one and a half decade of testing, Xiph.Org is pleased to
+announce the first beta release of our next generation encoder for the
+free Theora video format, codename "Ptalarbvorm".  This second release
+features additional improvements in compression and performance, bug
+fixes and support for more operating systems and compilers. Files
+produced by newer encoders can be decoded by earlier releases.</p>
+
+<p>If you're comfortable building software, please download the source
+and give us some feedback.</p>
+
+<ul>
+<li><a href="http://downloads.xiph.org/releases/theora/libtheora-1.2.0beta1.tar.gz">libtheora-1.2.0beta1.tar.gz</a></li>
+</ul>
+
 <a name="cortado-0.5.1">
 <h3>Cortado 0.5.1 release</h3>
 </p>
-- 
GitLab