Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 76d546f6c048029d7a68c93de06bb323 > files > 51

libannodex-devel-0.7.3-14.fc14.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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>libannodex: anx_read.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</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="tabs">
    <ul>
      <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>
<div class="contents">
<h1>anx_read.h File Reference</h1>
<p>libannodex provides a convenient callback based framework for reading Annodex media.  
<a href="#_details">More...</a></p>
<code>#include &lt;<a class="el" href="anx__types_8h_source.html">annodex/anx_types.h</a>&gt;</code><br/>

<p><a href="anx__read_8h_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#a429f7b920ad29a59bb3eea6455998b59">AnxReadStream</a> )(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, double timebase, char *utc, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signature for a callback called when the 'Annodex' stream header is parsed.  <a href="#a429f7b920ad29a59bb3eea6455998b59"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#aa0ae28b56eaf880f4421837b97c5a398">AnxReadTrack</a> )(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, long serialno, char *id, char *content_type, <a class="el" href="anx__int64_8h.html#a581323f3c813f8e1bc61293b6b086c46">anx_int64_t</a> granule_rate_n, <a class="el" href="anx__int64_8h.html#a581323f3c813f8e1bc61293b6b086c46">anx_int64_t</a> granule_rate_d, int nr_header_packets, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signature for a callback called each time an 'AnxData' track header is parsed.  <a href="#aa0ae28b56eaf880f4421837b97c5a398"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#ab33d836cb5b6f966d434f5e8b9377405">AnxReadHead</a> )(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, const <a class="el" href="struct__AnxHead.html">AnxHead</a> *head, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signature for a callback called when the head element is parsed.  <a href="#ab33d836cb5b6f966d434f5e8b9377405"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#ab6e18b640155e2efb2537b2ee2b0c30f">AnxReadClip</a> )(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, const <a class="el" href="struct__AnxClip.html">AnxClip</a> *clip, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signature for a callback called each time a clip element is parsed.  <a href="#ab6e18b640155e2efb2537b2ee2b0c30f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#ace198711d9caf6ffcf620fdd33f6f77c">AnxReadRaw</a> )(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, unsigned char *data, long n, long serialno, <a class="el" href="anx__int64_8h.html#a581323f3c813f8e1bc61293b6b086c46">anx_int64_t</a> granulepos, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signature for a callback called each time a raw data packet is found.  <a href="#ace198711d9caf6ffcf620fdd33f6f77c"></a><br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#abf81c687c0a83dc1111723e7409f1784">anx_set_read_stream_callback</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, <a class="el" href="anx__read_8h.html#a429f7b920ad29a59bb3eea6455998b59">AnxReadStream</a> read_stream, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function to call each time an 'Annodex' stream header is parsed.  <a href="#abf81c687c0a83dc1111723e7409f1784"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#acc0ef3b514b0ecc9e0f93202c173270d">anx_get_read_stream_user_data</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the user_data associated with an attached AnxReadStream callback.  <a href="#acc0ef3b514b0ecc9e0f93202c173270d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#a4fa56629c919f1990a3a86f50d7b42ba">anx_set_read_track_callback</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, <a class="el" href="anx__read_8h.html#aa0ae28b56eaf880f4421837b97c5a398">AnxReadTrack</a> read_track, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function to call each time an 'AnxData' track header is parsed.  <a href="#a4fa56629c919f1990a3a86f50d7b42ba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#add0bc18009f6162ddfbe108f28bb121e">anx_get_read_track_user_data</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the user_data associated with an attached AnxReadTrack callback.  <a href="#add0bc18009f6162ddfbe108f28bb121e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#a78dded2733296af159104300225f06c7">anx_set_read_head_callback</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, <a class="el" href="anx__read_8h.html#ab33d836cb5b6f966d434f5e8b9377405">AnxReadHead</a> read_head, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function to call when the head element is read.  <a href="#a78dded2733296af159104300225f06c7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#afdf616cef944e504f5513d58948b97bd">anx_get_read_head_user_data</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the user_data associated with an attached AnxReadHead callback.  <a href="#afdf616cef944e504f5513d58948b97bd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#a9e7c208be30fb69aaa2669d81af5d274">anx_set_read_clip_callback</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, <a class="el" href="anx__read_8h.html#ab6e18b640155e2efb2537b2ee2b0c30f">AnxReadClip</a> read_clip, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function to call each time a clip is parsed.  <a href="#a9e7c208be30fb69aaa2669d81af5d274"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#a36ba15b62214377edeb6c6be0a221f27">anx_get_read_clip_user_data</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the user_data associated with an attached AnxReadClip callback.  <a href="#a36ba15b62214377edeb6c6be0a221f27"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#a12b8acecdf65e2fc8b66ccb69e267890">anx_set_read_raw_callback</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, <a class="el" href="anx__read_8h.html#ace198711d9caf6ffcf620fdd33f6f77c">AnxReadRaw</a> read_raw, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the function to call each time a raw data packet is read.  <a href="#a12b8acecdf65e2fc8b66ccb69e267890"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#aac2fe39ce00cc81316f7c78c0f2e5cb9">anx_get_read_raw_user_data</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the user_data associated with an attached AnxReadRaw callback.  <a href="#aac2fe39ce00cc81316f7c78c0f2e5cb9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#ab1d3766fe3e8cadcbfbf1a7528ccbe9b">anx_read</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, long n)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read from an annodex opened with <a class="el" href="anx__general_8h.html#a41fcec7e6fc88c7112bc0533c52a13e1" title="Open a file containing Annodex media.">anx_open()</a> or <a class="el" href="anx__general_8h.html#a89fa75b5309f161fe5994decc2536dbd" title="Attach to an existing file descriptor.">anx_open_stdio()</a>.  <a href="#ab1d3766fe3e8cadcbfbf1a7528ccbe9b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="anx__read_8h.html#a2a48b67f248cbd1da58a31eba40009fe">anx_read_input</a> (<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, unsigned char *buf, long n)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input data from a memory buffer into an annodex.  <a href="#a2a48b67f248cbd1da58a31eba40009fe"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>libannodex provides a convenient callback based framework for reading Annodex media. </p>
<p>After opening an annodex for reading, you can attach various callbacks relevant to the parts of the file you are interested in, including the stream header, track headers, head element, clips and media data. Then, as bytes are read, libannodex will call your callbacks as appropriate.</p>
<p>For tutorial information and examples, refer to the following:</p>
<ul>
<li><a class="el" href="group__reading__files.html">Reading from files and file descriptors </a></li>
<li><a class="el" href="group__reading__memory.html">Reading from memory buffers </a></li>
<li><a class="el" href="group__reading__callbacks.html">Advanced management of AnxRead* callbacks </a> </li>
</ul>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ab6e18b640155e2efb2537b2ee2b0c30f"></a><!-- doxytag: member="anx_read.h::AnxReadClip" ref="ab6e18b640155e2efb2537b2ee2b0c30f" args=")(ANNODEX *annodex, const AnxClip *clip, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="anx__read_8h.html#ab6e18b640155e2efb2537b2ee2b0c30f">AnxReadClip</a>)(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, const <a class="el" href="struct__AnxClip.html">AnxClip</a> *clip, void *user_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Signature for a callback called each time a clip element is parsed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>the ANNODEX* handle in use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>clip</em>&nbsp;</td><td>the clip element </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>A generic pointer you have provided earlier </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>ANX_CONTINUE on success, and to inform anx_read*() functions to continue on to the next packet</li>
<li>ANX_STOP_OK on success, to inform anx_read*() functions to return without further processing</li>
<li>ANX_STOP_ERR on error, to inform anx_read*() functions to return without further processing </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ab33d836cb5b6f966d434f5e8b9377405"></a><!-- doxytag: member="anx_read.h::AnxReadHead" ref="ab33d836cb5b6f966d434f5e8b9377405" args=")(ANNODEX *annodex, const AnxHead *head, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="anx__read_8h.html#ab33d836cb5b6f966d434f5e8b9377405">AnxReadHead</a>)(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, const <a class="el" href="struct__AnxHead.html">AnxHead</a> *head, void *user_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Signature for a callback called when the head element is parsed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>the ANNODEX* handle in use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>head</em>&nbsp;</td><td>the head element </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>A generic pointer you have provided earlier </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>ANX_CONTINUE on success, and to inform anx_read*() functions to continue on to the next packet</li>
<li>ANX_STOP_OK on success, to inform anx_read*() functions to return without further processing</li>
<li>ANX_STOP_ERR on error, to inform anx_read*() functions to return without further processing </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ace198711d9caf6ffcf620fdd33f6f77c"></a><!-- doxytag: member="anx_read.h::AnxReadRaw" ref="ace198711d9caf6ffcf620fdd33f6f77c" args=")(ANNODEX *annodex, unsigned char *data, long n, long serialno, anx_int64_t granulepos, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="anx__read_8h.html#ace198711d9caf6ffcf620fdd33f6f77c">AnxReadRaw</a>)(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, unsigned char *data, long n, long serialno, <a class="el" href="anx__int64_8h.html#a581323f3c813f8e1bc61293b6b086c46">anx_int64_t</a> granulepos, void *user_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Signature for a callback called each time a raw data packet is found. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>the ANNODEX* handle in use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to the data read from the packet </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>the length in bytes of the data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>serialno</em>&nbsp;</td><td>the track serial number of the packet </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>granulepos</em>&nbsp;</td><td>the granule position of the packet </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>A generic pointer you have provided earlier </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>ANX_CONTINUE on success, and to inform anx_read*() functions to continue on to the next packet</li>
<li>ANX_STOP_OK on success, to inform anx_read*() functions to return without further processing</li>
<li>ANX_STOP_ERR on error, to inform anx_read*() functions to return without further processing </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="a429f7b920ad29a59bb3eea6455998b59"></a><!-- doxytag: member="anx_read.h::AnxReadStream" ref="a429f7b920ad29a59bb3eea6455998b59" args=")(ANNODEX *annodex, double timebase, char *utc, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="anx__read_8h.html#a429f7b920ad29a59bb3eea6455998b59">AnxReadStream</a>)(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, double timebase, char *utc, void *user_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Signature for a callback called when the 'Annodex' stream header is parsed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>the ANNODEX* handle in use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timebase</em>&nbsp;</td><td>the timebase of the annodex </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>utc</em>&nbsp;</td><td>the UTC timebase of the annodex </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>A generic pointer you have provided earlier </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>ANX_CONTINUE on success, and to inform anx_read*() functions to continue on to the next packet</li>
<li>ANX_STOP_OK on success, to inform anx_read*() functions to return without further processing</li>
<li>ANX_STOP_ERR on error, to inform anx_read*() functions to return without further processing </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="aa0ae28b56eaf880f4421837b97c5a398"></a><!-- doxytag: member="anx_read.h::AnxReadTrack" ref="aa0ae28b56eaf880f4421837b97c5a398" args=")(ANNODEX *annodex, long serialno, char *id, char *content_type, anx_int64_t granule_rate_n, anx_int64_t granule_rate_d, int nr_header_packets, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="anx__read_8h.html#aa0ae28b56eaf880f4421837b97c5a398">AnxReadTrack</a>)(<a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *annodex, long serialno, char *id, char *content_type, <a class="el" href="anx__int64_8h.html#a581323f3c813f8e1bc61293b6b086c46">anx_int64_t</a> granule_rate_n, <a class="el" href="anx__int64_8h.html#a581323f3c813f8e1bc61293b6b086c46">anx_int64_t</a> granule_rate_d, int nr_header_packets, void *user_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Signature for a callback called each time an 'AnxData' track header is parsed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>the ANNODEX* handle in use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>serialno</em>&nbsp;</td><td>the track serial number </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>the id attribute of the track </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>content_type</em>&nbsp;</td><td>the content type of the track </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>granule_rate_n</em>&nbsp;</td><td>the numerator of the granule rate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>granule_rate_d</em>&nbsp;</td><td>the denominator of the granule rate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nr_header_packets</em>&nbsp;</td><td>the number of header packets of the track </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>A generic pointer you have provided earlier </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>ANX_CONTINUE on success, and to inform anx_read*() functions to continue on to the next packet</li>
<li>ANX_STOP_OK on success, to inform anx_read*() functions to return without further processing</li>
<li>ANX_STOP_ERR on error, to inform anx_read*() functions to return without further processing </li>
</ul>
</dd></dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a36ba15b62214377edeb6c6be0a221f27"></a><!-- doxytag: member="anx_read.h::anx_get_read_clip_user_data" ref="a36ba15b62214377edeb6c6be0a221f27" args="(ANNODEX *annodex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* anx_get_read_clip_user_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retrieve the user_data associated with an attached AnxReadClip callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the associated user_data </dd></dl>

</div>
</div>
<a class="anchor" id="afdf616cef944e504f5513d58948b97bd"></a><!-- doxytag: member="anx_read.h::anx_get_read_head_user_data" ref="afdf616cef944e504f5513d58948b97bd" args="(ANNODEX *annodex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* anx_get_read_head_user_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retrieve the user_data associated with an attached AnxReadHead callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the associated user_data </dd></dl>

</div>
</div>
<a class="anchor" id="aac2fe39ce00cc81316f7c78c0f2e5cb9"></a><!-- doxytag: member="anx_read.h::anx_get_read_raw_user_data" ref="aac2fe39ce00cc81316f7c78c0f2e5cb9" args="(ANNODEX *annodex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* anx_get_read_raw_user_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retrieve the user_data associated with an attached AnxReadRaw callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the associated user_data </dd></dl>

</div>
</div>
<a class="anchor" id="acc0ef3b514b0ecc9e0f93202c173270d"></a><!-- doxytag: member="anx_read.h::anx_get_read_stream_user_data" ref="acc0ef3b514b0ecc9e0f93202c173270d" args="(ANNODEX *annodex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* anx_get_read_stream_user_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retrieve the user_data associated with an attached AnxReadStream callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the associated user_data </dd></dl>

</div>
</div>
<a class="anchor" id="add0bc18009f6162ddfbe108f28bb121e"></a><!-- doxytag: member="anx_read.h::anx_get_read_track_user_data" ref="add0bc18009f6162ddfbe108f28bb121e" args="(ANNODEX *annodex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* anx_get_read_track_user_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retrieve the user_data associated with an attached AnxReadTrack callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the associated user_data </dd></dl>

</div>
</div>
<a class="anchor" id="ab1d3766fe3e8cadcbfbf1a7528ccbe9b"></a><!-- doxytag: member="anx_read.h::anx_read" ref="ab1d3766fe3e8cadcbfbf1a7528ccbe9b" args="(ANNODEX *annodex, long n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long anx_read </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read from an annodex opened with <a class="el" href="anx__general_8h.html#a41fcec7e6fc88c7112bc0533c52a13e1" title="Open a file containing Annodex media.">anx_open()</a> or <a class="el" href="anx__general_8h.html#a89fa75b5309f161fe5994decc2536dbd" title="Attach to an existing file descriptor.">anx_open_stdio()</a>. </p>
<p>The annodex is automatically parsed and relevant read callbacks are called, stopping when the required number of bytes have been read, or earlier if any of the read callbacks returned other than ANX_CONTINUE. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>count of bytes to read </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the count of bytes actually read </dd></dl>

</div>
</div>
<a class="anchor" id="a2a48b67f248cbd1da58a31eba40009fe"></a><!-- doxytag: member="anx_read.h::anx_read_input" ref="a2a48b67f248cbd1da58a31eba40009fe" args="(ANNODEX *annodex, unsigned char *buf, long n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long anx_read_input </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>n</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 data from a memory buffer into an annodex. </p>
<p>Usually the annodex would have been created with <a class="el" href="anx__general_8h.html#ac80d1e58dc4043d5bd0d0fac98db5866" title="Create a managed Annodex handle This is an alternative interface for non-file annodexes...">anx_new()</a>. The annodex is automatically parsed and relevant read callbacks are called, stopping when the required number of bytes have been read, or earlier if any of the read callbacks returned other than ANX_CONTINUE. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>a memory buffer containing data to input </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>count of bytes to input </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the count of bytes actually input </dd></dl>

</div>
</div>
<a class="anchor" id="a9e7c208be30fb69aaa2669d81af5d274"></a><!-- doxytag: member="anx_read.h::anx_set_read_clip_callback" ref="a9e7c208be30fb69aaa2669d81af5d274" args="(ANNODEX *annodex, AnxReadClip read_clip, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int anx_set_read_clip_callback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="anx__read_8h.html#ab6e18b640155e2efb2537b2ee2b0c30f">AnxReadClip</a>&nbsp;</td>
          <td class="paramname"> <em>read_clip</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the function to call each time a clip is parsed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read_clip</em>&nbsp;</td><td>the callback to call </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Arbitrary data you wish to pass to your callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success </dd></dl>

</div>
</div>
<a class="anchor" id="a78dded2733296af159104300225f06c7"></a><!-- doxytag: member="anx_read.h::anx_set_read_head_callback" ref="a78dded2733296af159104300225f06c7" args="(ANNODEX *annodex, AnxReadHead read_head, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int anx_set_read_head_callback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="anx__read_8h.html#ab33d836cb5b6f966d434f5e8b9377405">AnxReadHead</a>&nbsp;</td>
          <td class="paramname"> <em>read_head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the function to call when the head element is read. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read_head</em>&nbsp;</td><td>the callback to call </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Arbitrary data you wish to pass to your callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure </dd></dl>

</div>
</div>
<a class="anchor" id="a12b8acecdf65e2fc8b66ccb69e267890"></a><!-- doxytag: member="anx_read.h::anx_set_read_raw_callback" ref="a12b8acecdf65e2fc8b66ccb69e267890" args="(ANNODEX *annodex, AnxReadRaw read_raw, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int anx_set_read_raw_callback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="anx__read_8h.html#ace198711d9caf6ffcf620fdd33f6f77c">AnxReadRaw</a>&nbsp;</td>
          <td class="paramname"> <em>read_raw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the function to call each time a raw data packet is read. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read_raw</em>&nbsp;</td><td>the callback to call </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Arbitrary data you wish to pass to your callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure </dd></dl>

</div>
</div>
<a class="anchor" id="abf81c687c0a83dc1111723e7409f1784"></a><!-- doxytag: member="anx_read.h::anx_set_read_stream_callback" ref="abf81c687c0a83dc1111723e7409f1784" args="(ANNODEX *annodex, AnxReadStream read_stream, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int anx_set_read_stream_callback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="anx__read_8h.html#a429f7b920ad29a59bb3eea6455998b59">AnxReadStream</a>&nbsp;</td>
          <td class="paramname"> <em>read_stream</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the function to call each time an 'Annodex' stream header is parsed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read_stream</em>&nbsp;</td><td>the callback to call </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Arbitrary data you wish to pass to your callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure </dd></dl>

</div>
</div>
<a class="anchor" id="a4fa56629c919f1990a3a86f50d7b42ba"></a><!-- doxytag: member="anx_read.h::anx_set_read_track_callback" ref="a4fa56629c919f1990a3a86f50d7b42ba" args="(ANNODEX *annodex, AnxReadTrack read_track, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int anx_set_read_track_callback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="anx__types_8h.html#ae126f9198f90b3eb15fe9aa8833eee52">ANNODEX</a> *&nbsp;</td>
          <td class="paramname"> <em>annodex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="anx__read_8h.html#aa0ae28b56eaf880f4421837b97c5a398">AnxReadTrack</a>&nbsp;</td>
          <td class="paramname"> <em>read_track</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the function to call each time an 'AnxData' track header is parsed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>annodex</em>&nbsp;</td><td>an ANNODEX* handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read_track</em>&nbsp;</td><td>the callback to call </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Arbitrary data you wish to pass to your callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure </dd></dl>

</div>
</div>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2-20100208 </small></address>
</body>
</html>