group__basefuncs.html 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <title>libtheora: Functions Shared by Encode and Decode</title>
  6. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  7. <link href="doxygen.css" rel="stylesheet" type="text/css"/>
  8. </head>
  9. <body>
  10. <!-- Generated by Doxygen 1.6.1 -->
  11. <div class="navigation" id="top">
  12. <div class="tabs">
  13. <ul>
  14. <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
  15. <li><a href="modules.html"><span>Modules</span></a></li>
  16. <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
  17. <li><a href="files.html"><span>Files</span></a></li>
  18. </ul>
  19. </div>
  20. </div>
  21. <div class="contents">
  22. <h1>Functions Shared by Encode and Decode</h1><table border="0" cellpadding="0" cellspacing="0">
  23. <tr><td colspan="2"><h2>Basic shared functions</h2></td></tr>
  24. <tr><td colspan="2"><p><a class="anchor" id="amgrpb625c22fa07613c734f71c378fe32d7a"></a> </p>
  25. <br/><br/></td></tr>
  26. <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>
  27. <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>
  28. <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>
  29. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the library version number. <a href="#gab723a75c0f95b3eb817f7f769846016b"></a><br/></td></tr>
  30. <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>
  31. <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>
  32. <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>
  33. <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>
  34. <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>
  35. <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>
  36. <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>
  37. <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>
  38. <tr><td colspan="2"><h2>Functions for manipulating header data</h2></td></tr>
  39. <tr><td colspan="2"><p><a class="anchor" id="amgrp14ef5f819e97c870c128539ed1f334e3"></a> </p>
  40. <br/><br/></td></tr>
  41. <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>
  42. <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>
  43. <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>
  44. <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>
  45. <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>
  46. <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>
  47. <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>
  48. <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>
  49. <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>
  50. <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>
  51. <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>
  52. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by its tag. <a href="#ga33c8b4f57a03217636d704c2ebb211fa"></a><br/></td></tr>
  53. <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>
  54. <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>
  55. <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>
  56. <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>
  57. </table>
  58. <hr/><h2>Function Documentation</h2>
  59. <a class="anchor" id="ga19a1f7b8032db957df151a34e5ac9272"></a><!-- doxytag: member="codec.h::th_comment_add" ref="ga19a1f7b8032db957df151a34e5ac9272" args="(th_comment *_tc, char *_comment)" -->
  60. <div class="memitem">
  61. <div class="memproto">
  62. <table class="memname">
  63. <tr>
  64. <td class="memname">void th_comment_add </td>
  65. <td>(</td>
  66. <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
  67. <td class="paramname"> <em>_tc</em>, </td>
  68. </tr>
  69. <tr>
  70. <td class="paramkey"></td>
  71. <td></td>
  72. <td class="paramtype">char *&nbsp;</td>
  73. <td class="paramname"> <em>_comment</em></td><td>&nbsp;</td>
  74. </tr>
  75. <tr>
  76. <td></td>
  77. <td>)</td>
  78. <td></td><td></td><td></td>
  79. </tr>
  80. </table>
  81. </div>
  82. <div class="memdoc">
  83. <p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
  84. <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>
  85. <dl><dt><b>Parameters:</b></dt><dd>
  86. <table border="0" cellspacing="2" cellpadding="0">
  87. <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>
  88. <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>
  89. </table>
  90. </dd>
  91. </dl>
  92. </div>
  93. </div>
  94. <a class="anchor" id="ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><!-- doxytag: member="codec.h::th_comment_add_tag" ref="ga6c5edc201ca220a30787ca6c1ddcaeaf" args="(th_comment *_tc, char *_tag, char *_val)" -->
  95. <div class="memitem">
  96. <div class="memproto">
  97. <table class="memname">
  98. <tr>
  99. <td class="memname">void th_comment_add_tag </td>
  100. <td>(</td>
  101. <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
  102. <td class="paramname"> <em>_tc</em>, </td>
  103. </tr>
  104. <tr>
  105. <td class="paramkey"></td>
  106. <td></td>
  107. <td class="paramtype">char *&nbsp;</td>
  108. <td class="paramname"> <em>_tag</em>, </td>
  109. </tr>
  110. <tr>
  111. <td class="paramkey"></td>
  112. <td></td>
  113. <td class="paramtype">char *&nbsp;</td>
  114. <td class="paramname"> <em>_val</em></td><td>&nbsp;</td>
  115. </tr>
  116. <tr>
  117. <td></td>
  118. <td>)</td>
  119. <td></td><td></td><td></td>
  120. </tr>
  121. </table>
  122. </div>
  123. <div class="memdoc">
  124. <p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
  125. <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>
  126. <dl><dt><b>Parameters:</b></dt><dd>
  127. <table border="0" cellspacing="2" cellpadding="0">
  128. <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>
  129. <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>
  130. <tr><td valign="top"></td><td valign="top"><em>_val</em>&nbsp;</td><td>The corresponding value as a null-terminated string. </td></tr>
  131. </table>
  132. </dd>
  133. </dl>
  134. </div>
  135. </div>
  136. <a class="anchor" id="gae736c1afa514947a3feb223143af95e3"></a><!-- doxytag: member="codec.h::th_comment_clear" ref="gae736c1afa514947a3feb223143af95e3" args="(th_comment *_tc)" -->
  137. <div class="memitem">
  138. <div class="memproto">
  139. <table class="memname">
  140. <tr>
  141. <td class="memname">void th_comment_clear </td>
  142. <td>(</td>
  143. <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
  144. <td class="paramname"> <em>_tc</em></td>
  145. <td>&nbsp;)&nbsp;</td>
  146. <td></td>
  147. </tr>
  148. </table>
  149. </div>
  150. <div class="memdoc">
  151. <p>Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
  152. <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>
  153. <dl><dt><b>Parameters:</b></dt><dd>
  154. <table border="0" cellspacing="2" cellpadding="0">
  155. <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>
  156. </table>
  157. </dd>
  158. </dl>
  159. </div>
  160. </div>
  161. <a class="anchor" id="ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><!-- doxytag: member="codec.h::th_comment_init" ref="ga6c8ab25988e7ea9d7b1e31a54cf58f09" args="(th_comment *_tc)" -->
  162. <div class="memitem">
  163. <div class="memproto">
  164. <table class="memname">
  165. <tr>
  166. <td class="memname">void th_comment_init </td>
  167. <td>(</td>
  168. <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
  169. <td class="paramname"> <em>_tc</em></td>
  170. <td>&nbsp;)&nbsp;</td>
  171. <td></td>
  172. </tr>
  173. </table>
  174. </div>
  175. <div class="memdoc">
  176. <p>Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
  177. <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>
  178. <dl><dt><b>Parameters:</b></dt><dd>
  179. <table border="0" cellspacing="2" cellpadding="0">
  180. <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>
  181. </table>
  182. </dd>
  183. </dl>
  184. </div>
  185. </div>
  186. <a class="anchor" id="ga33c8b4f57a03217636d704c2ebb211fa"></a><!-- doxytag: member="codec.h::th_comment_query" ref="ga33c8b4f57a03217636d704c2ebb211fa" args="(th_comment *_tc, char *_tag, int _count)" -->
  187. <div class="memitem">
  188. <div class="memproto">
  189. <table class="memname">
  190. <tr>
  191. <td class="memname">char* th_comment_query </td>
  192. <td>(</td>
  193. <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
  194. <td class="paramname"> <em>_tc</em>, </td>
  195. </tr>
  196. <tr>
  197. <td class="paramkey"></td>
  198. <td></td>
  199. <td class="paramtype">char *&nbsp;</td>
  200. <td class="paramname"> <em>_tag</em>, </td>
  201. </tr>
  202. <tr>
  203. <td class="paramkey"></td>
  204. <td></td>
  205. <td class="paramtype">int&nbsp;</td>
  206. <td class="paramname"> <em>_count</em></td><td>&nbsp;</td>
  207. </tr>
  208. <tr>
  209. <td></td>
  210. <td>)</td>
  211. <td></td><td></td><td></td>
  212. </tr>
  213. </table>
  214. </div>
  215. <div class="memdoc">
  216. <p>Look up a comment value by its tag. </p>
  217. <dl><dt><b>Parameters:</b></dt><dd>
  218. <table border="0" cellspacing="2" cellpadding="0">
  219. <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>
  220. <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
  221. <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>
  222. </table>
  223. </dd>
  224. </dl>
  225. <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>
  226. <dl><dt><b>Return values:</b></dt><dd>
  227. <table border="0" cellspacing="2" cellpadding="0">
  228. <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If no matching tag is found. </td></tr>
  229. </table>
  230. </dd>
  231. </dl>
  232. </div>
  233. </div>
  234. <a class="anchor" id="ga81d518dc4426f63ceaedcbe2668679fc"></a><!-- doxytag: member="codec.h::th_comment_query_count" ref="ga81d518dc4426f63ceaedcbe2668679fc" args="(th_comment *_tc, char *_tag)" -->
  235. <div class="memitem">
  236. <div class="memproto">
  237. <table class="memname">
  238. <tr>
  239. <td class="memname">int th_comment_query_count </td>
  240. <td>(</td>
  241. <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
  242. <td class="paramname"> <em>_tc</em>, </td>
  243. </tr>
  244. <tr>
  245. <td class="paramkey"></td>
  246. <td></td>
  247. <td class="paramtype">char *&nbsp;</td>
  248. <td class="paramname"> <em>_tag</em></td><td>&nbsp;</td>
  249. </tr>
  250. <tr>
  251. <td></td>
  252. <td>)</td>
  253. <td></td><td></td><td></td>
  254. </tr>
  255. </table>
  256. </div>
  257. <div class="memdoc">
  258. <p>Look up the number of instances of a tag. </p>
  259. <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>
  260. <dl><dt><b>Parameters:</b></dt><dd>
  261. <table border="0" cellspacing="2" cellpadding="0">
  262. <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>
  263. <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
  264. </table>
  265. </dd>
  266. </dl>
  267. <dl class="return"><dt><b>Returns:</b></dt><dd>The number on instances of this particular tag. </dd></dl>
  268. </div>
  269. </div>
  270. <a class="anchor" id="ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><!-- doxytag: member="codec.h::th_granule_frame" ref="ga95b10e76fc4c05d0240ea2dfd9fd62bd" args="(void *_encdec, ogg_int64_t _granpos)" -->
  271. <div class="memitem">
  272. <div class="memproto">
  273. <table class="memname">
  274. <tr>
  275. <td class="memname">ogg_int64_t th_granule_frame </td>
  276. <td>(</td>
  277. <td class="paramtype">void *&nbsp;</td>
  278. <td class="paramname"> <em>_encdec</em>, </td>
  279. </tr>
  280. <tr>
  281. <td class="paramkey"></td>
  282. <td></td>
  283. <td class="paramtype">ogg_int64_t&nbsp;</td>
  284. <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
  285. </tr>
  286. <tr>
  287. <td></td>
  288. <td>)</td>
  289. <td></td><td></td><td></td>
  290. </tr>
  291. </table>
  292. </div>
  293. <div class="memdoc">
  294. <p>Converts a granule position to an absolute frame index, starting at <code>0</code>. </p>
  295. <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>
  296. <dl><dt><b>Parameters:</b></dt><dd>
  297. <table border="0" cellspacing="2" cellpadding="0">
  298. <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>
  299. <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
  300. </table>
  301. </dd>
  302. </dl>
  303. <dl class="return"><dt><b>Returns:</b></dt><dd>The absolute frame index corresponding to <em>_granpos</em>. </dd></dl>
  304. <dl><dt><b>Return values:</b></dt><dd>
  305. <table border="0" cellspacing="2" cellpadding="0">
  306. <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>
  307. </table>
  308. </dd>
  309. </dl>
  310. </div>
  311. </div>
  312. <a class="anchor" id="ga707e1e281de788af0df39ef00f3fb432"></a><!-- doxytag: member="codec.h::th_granule_time" ref="ga707e1e281de788af0df39ef00f3fb432" args="(void *_encdec, ogg_int64_t _granpos)" -->
  313. <div class="memitem">
  314. <div class="memproto">
  315. <table class="memname">
  316. <tr>
  317. <td class="memname">double th_granule_time </td>
  318. <td>(</td>
  319. <td class="paramtype">void *&nbsp;</td>
  320. <td class="paramname"> <em>_encdec</em>, </td>
  321. </tr>
  322. <tr>
  323. <td class="paramkey"></td>
  324. <td></td>
  325. <td class="paramtype">ogg_int64_t&nbsp;</td>
  326. <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
  327. </tr>
  328. <tr>
  329. <td></td>
  330. <td>)</td>
  331. <td></td><td></td><td></td>
  332. </tr>
  333. </table>
  334. </div>
  335. <div class="memdoc">
  336. <p>Converts a granule position to an absolute time in seconds. </p>
  337. <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>
  338. <dl><dt><b>Parameters:</b></dt><dd>
  339. <table border="0" cellspacing="2" cellpadding="0">
  340. <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>
  341. <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
  342. </table>
  343. </dd>
  344. </dl>
  345. <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>
  346. <dl><dt><b>Return values:</b></dt><dd>
  347. <table border="0" cellspacing="2" cellpadding="0">
  348. <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>
  349. </table>
  350. </dd>
  351. </dl>
  352. </div>
  353. </div>
  354. <a class="anchor" id="gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><!-- doxytag: member="codec.h::th_info_clear" ref="gab3d6441ab4a4969859ef5fd78a9e3c1c" args="(th_info *_info)" -->
  355. <div class="memitem">
  356. <div class="memproto">
  357. <table class="memname">
  358. <tr>
  359. <td class="memname">void th_info_clear </td>
  360. <td>(</td>
  361. <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
  362. <td class="paramname"> <em>_info</em></td>
  363. <td>&nbsp;)&nbsp;</td>
  364. <td></td>
  365. </tr>
  366. </table>
  367. </div>
  368. <div class="memdoc">
  369. <p>Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
  370. <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>
  371. <dl><dt><b>Parameters:</b></dt><dd>
  372. <table border="0" cellspacing="2" cellpadding="0">
  373. <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>
  374. </table>
  375. </dd>
  376. </dl>
  377. </div>
  378. </div>
  379. <a class="anchor" id="ga430d9c605816a6ca0bdce3a0b965b926"></a><!-- doxytag: member="codec.h::th_info_init" ref="ga430d9c605816a6ca0bdce3a0b965b926" args="(th_info *_info)" -->
  380. <div class="memitem">
  381. <div class="memproto">
  382. <table class="memname">
  383. <tr>
  384. <td class="memname">void th_info_init </td>
  385. <td>(</td>
  386. <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
  387. <td class="paramname"> <em>_info</em></td>
  388. <td>&nbsp;)&nbsp;</td>
  389. <td></td>
  390. </tr>
  391. </table>
  392. </div>
  393. <div class="memdoc">
  394. <p>Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
  395. <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>
  396. <dl><dt><b>Parameters:</b></dt><dd>
  397. <table border="0" cellspacing="2" cellpadding="0">
  398. <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>
  399. </table>
  400. </dd>
  401. </dl>
  402. </div>
  403. </div>
  404. <a class="anchor" id="ga02f3f38261a9b39452d8a5e6f8737cc1"></a><!-- doxytag: member="codec.h::th_packet_isheader" ref="ga02f3f38261a9b39452d8a5e6f8737cc1" args="(ogg_packet *_op)" -->
  405. <div class="memitem">
  406. <div class="memproto">
  407. <table class="memname">
  408. <tr>
  409. <td class="memname">int th_packet_isheader </td>
  410. <td>(</td>
  411. <td class="paramtype">ogg_packet *&nbsp;</td>
  412. <td class="paramname"> <em>_op</em></td>
  413. <td>&nbsp;)&nbsp;</td>
  414. <td></td>
  415. </tr>
  416. </table>
  417. </div>
  418. <div class="memdoc">
  419. <p>Determines whether a Theora packet is a header or not. </p>
  420. <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>
  421. <dl><dt><b>Parameters:</b></dt><dd>
  422. <table border="0" cellspacing="2" cellpadding="0">
  423. <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>
  424. </table>
  425. </dd>
  426. </dl>
  427. <dl><dt><b>Return values:</b></dt><dd>
  428. <table border="0" cellspacing="2" cellpadding="0">
  429. <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet is a header packet </td></tr>
  430. <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is a video data packet. </td></tr>
  431. </table>
  432. </dd>
  433. </dl>
  434. </div>
  435. </div>
  436. <a class="anchor" id="gafe95cfd06f0fef413266c9168a66248a"></a><!-- doxytag: member="codec.h::th_packet_iskeyframe" ref="gafe95cfd06f0fef413266c9168a66248a" args="(ogg_packet *_op)" -->
  437. <div class="memitem">
  438. <div class="memproto">
  439. <table class="memname">
  440. <tr>
  441. <td class="memname">int th_packet_iskeyframe </td>
  442. <td>(</td>
  443. <td class="paramtype">ogg_packet *&nbsp;</td>
  444. <td class="paramname"> <em>_op</em></td>
  445. <td>&nbsp;)&nbsp;</td>
  446. <td></td>
  447. </tr>
  448. </table>
  449. </div>
  450. <div class="memdoc">
  451. <p>Determines whether a theora packet is a key frame or not. </p>
  452. <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>
  453. <dl><dt><b>Parameters:</b></dt><dd>
  454. <table border="0" cellspacing="2" cellpadding="0">
  455. <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>
  456. </table>
  457. </dd>
  458. </dl>
  459. <dl><dt><b>Return values:</b></dt><dd>
  460. <table border="0" cellspacing="2" cellpadding="0">
  461. <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet contains a key frame. </td></tr>
  462. <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet contains a delta frame. </td></tr>
  463. <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The packet is not a video data packet. </td></tr>
  464. </table>
  465. </dd>
  466. </dl>
  467. </div>
  468. </div>
  469. <a class="anchor" id="gab723a75c0f95b3eb817f7f769846016b"></a><!-- doxytag: member="codec.h::th_version_number" ref="gab723a75c0f95b3eb817f7f769846016b" args="(void)" -->
  470. <div class="memitem">
  471. <div class="memproto">
  472. <table class="memname">
  473. <tr>
  474. <td class="memname">ogg_uint32_t th_version_number </td>
  475. <td>(</td>
  476. <td class="paramtype">void&nbsp;</td>
  477. <td class="paramname"></td>
  478. <td>&nbsp;)&nbsp;</td>
  479. <td></td>
  480. </tr>
  481. </table>
  482. </div>
  483. <div class="memdoc">
  484. <p>Retrieves the library version number. </p>
  485. <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>
  486. <div class="fragment"><pre class="fragment"> (VERSION_MAJOR&lt;&lt;16)+(VERSION_MINOR&lt;&lt;8)+(VERSION_SUBMINOR)
  487. </pre></div> <dl class="return"><dt><b>Returns:</b></dt><dd>the version number. </dd></dl>
  488. </div>
  489. </div>
  490. <a class="anchor" id="ga04846066738d9f2024fc9961162b2dbc"></a><!-- doxytag: member="codec.h::th_version_string" ref="ga04846066738d9f2024fc9961162b2dbc" args="(void)" -->
  491. <div class="memitem">
  492. <div class="memproto">
  493. <table class="memname">
  494. <tr>
  495. <td class="memname">const char* th_version_string </td>
  496. <td>(</td>
  497. <td class="paramtype">void&nbsp;</td>
  498. <td class="paramname"></td>
  499. <td>&nbsp;)&nbsp;</td>
  500. <td></td>
  501. </tr>
  502. </table>
  503. </div>
  504. <div class="memdoc">
  505. <p>Retrieves a human-readable string to identify the library vendor and version. </p>
  506. <dl class="return"><dt><b>Returns:</b></dt><dd>the version string. </dd></dl>
  507. </div>
  508. </div>
  509. </div>
  510. <hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
  511. <a href="http://www.doxygen.org/index.html">
  512. <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
  513. </body>
  514. </html>