Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 2946d6d651bbdb069ce8220554506190 > files > 38

liboggz-devel-1.0.0-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>liboggz: Oggz Read API</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <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>
<div class="contents">
<h1>Oggz Read API</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Oggz parses Ogg bitstreams, forming ogg_packet structures, and calling your OggzReadPacket callback(s). 
<p>
You provide Ogg data to Oggz with <a class="el" href="group__read__api.html#g3ce7a31de5da56375057436c6b5108f2" title="Read n bytes into oggz, calling any read callbacks on the fly.">oggz_read()</a> or <a class="el" href="group__read__api.html#g77d4158dd119f496f73311ace7f630d6" title="Input data into oggz.">oggz_read_input()</a>, and independently process it in OggzReadPacket callbacks. It is possible to set a different callback per <em>serialno</em> (ie. for each logical bitstream in the Ogg bitstream - see the <a class="el" href="group__basics.html">Ogg basics</a> section for more detail).<p>
When using an OGGZ* opened with the OGGZ_AUTO flag set, Oggz will internally calculate the granulepos for each packet, even though these are not all recorded in the file: only the last packet ending on a page will have its granulepos recorded in the page header. Within a OggzReadPacket callback, calling <a class="el" href="group__seek__api.html#g29181fb4e8f4e3629cb84810614acd30" title="Provide the exact stored granulepos (from the page header) if relevant to the current...">oggz_tell_granulepos()</a> will retrieve the calculated granulepos.<p>
See <a class="el" href="group__seek__api.html">Oggz Seek API</a> for information on seeking on interleaved Ogg data, and for working with calculated granulepos values. 
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__read__api.html#gef015044907510cda7a3c06241e959e7">OggzReadPacket</a> )(<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, ogg_packet *op, long serialno, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is the signature of a callback which you must provide for Oggz to call whenever it finds a new packet in the Ogg stream associated with <em>oggz</em>.  <a href="#gef015044907510cda7a3c06241e959e7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__read__api.html#g8a1df0166fad1a0a6fe55d24e1a4b2e6">OggzReadPage</a> )(<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, const ogg_page *og, long serialno, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is the signature of a callback which you must provide for Oggz to call whenever it finds a new page in the Ogg stream associated with <em>oggz</em>.  <a href="#g8a1df0166fad1a0a6fe55d24e1a4b2e6"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__read__api.html#g6d5aae4f7f186fffe19d4fd3cd63148d">oggz_set_read_callback</a> (<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, long serialno, <a class="el" href="group__read__api.html#gef015044907510cda7a3c06241e959e7">OggzReadPacket</a> read_packet, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a callback for Oggz to call when a new Ogg packet is found in the stream.  <a href="#g6d5aae4f7f186fffe19d4fd3cd63148d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__read__api.html#gfe738d4fdd4b00b1280f5978be19b2d5">oggz_set_read_page</a> (<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, long serialno, <a class="el" href="group__read__api.html#g8a1df0166fad1a0a6fe55d24e1a4b2e6">OggzReadPage</a> read_page, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a callback for Oggz to call when a new Ogg page is found in the stream.  <a href="#gfe738d4fdd4b00b1280f5978be19b2d5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__read__api.html#g3ce7a31de5da56375057436c6b5108f2">oggz_read</a> (<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, long n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read n bytes into <em>oggz</em>, calling any read callbacks on the fly.  <a href="#g3ce7a31de5da56375057436c6b5108f2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__read__api.html#g77d4158dd119f496f73311ace7f630d6">oggz_read_input</a> (<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, unsigned char *buf, long n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input data into <em>oggz</em>.  <a href="#g77d4158dd119f496f73311ace7f630d6"></a><br></td></tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="gef015044907510cda7a3c06241e959e7"></a><!-- doxytag: member="oggz_read.h::OggzReadPacket" ref="gef015044907510cda7a3c06241e959e7" args=")(OGGZ *oggz, ogg_packet *op, long serialno, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="group__read__api.html#gef015044907510cda7a3c06241e959e7">OggzReadPacket</a>)(<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, ogg_packet *op, long serialno, void *user_data)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is the signature of a callback which you must provide for Oggz to call whenever it finds a new packet in the Ogg stream associated with <em>oggz</em>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>oggz</em>&nbsp;</td><td>The OGGZ handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>The full ogg_packet (see &lt;ogg/ogg.h&gt;) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>serialno</em>&nbsp;</td><td>Identify the logical bistream in <em>oggz</em> that contains <em>op</em> </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>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 to continue, non-zero to instruct Oggz to stop.</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>It is possible to provide different callbacks per logical bitstream -- see <a class="el" href="group__read__api.html#g6d5aae4f7f186fffe19d4fd3cd63148d" title="Set a callback for Oggz to call when a new Ogg packet is found in the stream.">oggz_set_read_callback()</a> for more information. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g8a1df0166fad1a0a6fe55d24e1a4b2e6"></a><!-- doxytag: member="oggz_read.h::OggzReadPage" ref="g8a1df0166fad1a0a6fe55d24e1a4b2e6" args=")(OGGZ *oggz, const ogg_page *og, long serialno, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="group__read__api.html#g8a1df0166fad1a0a6fe55d24e1a4b2e6">OggzReadPage</a>)(<a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, const ogg_page *og, long serialno, void *user_data)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is the signature of a callback which you must provide for Oggz to call whenever it finds a new page in the Ogg stream associated with <em>oggz</em>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>oggz</em>&nbsp;</td><td>The OGGZ handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>The full ogg_page (see &lt;ogg/ogg.h&gt;) </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>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 to continue, non-zero to instruct Oggz to stop. </dd></dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g3ce7a31de5da56375057436c6b5108f2"></a><!-- doxytag: member="oggz_read.h::oggz_read" ref="g3ce7a31de5da56375057436c6b5108f2" args="(OGGZ *oggz, long n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long oggz_read           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *&nbsp;</td>
          <td class="paramname"> <em>oggz</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 n bytes into <em>oggz</em>, calling any read callbacks on the fly. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>oggz</em>&nbsp;</td><td>An OGGZ handle previously opened for reading </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>A count of bytes to ingest </td></tr>
  </table>
</dl>
<dl compact><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 successfully ingested. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>End of file </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_BAD_OGGZ</em>&nbsp;</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_INVALID</em>&nbsp;</td><td>Operation not suitable for this OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_SYSTEM</em>&nbsp;</td><td>System error; check errno for details </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_STOP_OK</em>&nbsp;</td><td>Reading was stopped by a user callback returning OGGZ_STOP_OK </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_STOP_ERR</em>&nbsp;</td><td>Reading was stopped by a user callback returning OGGZ_STOP_ERR </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_HOLE_IN_DATA</em>&nbsp;</td><td>Hole (sequence number gap) detected in input data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_OUT_OF_MEMORY</em>&nbsp;</td><td>Out of memory </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g77d4158dd119f496f73311ace7f630d6"></a><!-- doxytag: member="oggz_read.h::oggz_read_input" ref="g77d4158dd119f496f73311ace7f630d6" args="(OGGZ *oggz, unsigned char *buf, long n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long oggz_read_input           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *&nbsp;</td>
          <td class="paramname"> <em>oggz</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 into <em>oggz</em>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>oggz</em>&nbsp;</td><td>An OGGZ handle previously opened for reading </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>A memory buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>A count of bytes to input </td></tr>
  </table>
</dl>
<dl compact><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 successfully ingested. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_BAD_OGGZ</em>&nbsp;</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_INVALID</em>&nbsp;</td><td>Operation not suitable for this OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_STOP_OK</em>&nbsp;</td><td>Reading was stopped by a user callback returning OGGZ_STOP_OK </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_STOP_ERR</em>&nbsp;</td><td>Reading was stopped by a user callback returning OGGZ_STOP_ERR </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_HOLE_IN_DATA</em>&nbsp;</td><td>Hole (sequence number gap) detected in input data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_OUT_OF_MEMORY</em>&nbsp;</td><td>Out of memory </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g6d5aae4f7f186fffe19d4fd3cd63148d"></a><!-- doxytag: member="oggz_read.h::oggz_set_read_callback" ref="g6d5aae4f7f186fffe19d4fd3cd63148d" args="(OGGZ *oggz, long serialno, OggzReadPacket read_packet, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int oggz_set_read_callback           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *&nbsp;</td>
          <td class="paramname"> <em>oggz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>serialno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__read__api.html#gef015044907510cda7a3c06241e959e7">OggzReadPacket</a>&nbsp;</td>
          <td class="paramname"> <em>read_packet</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 a callback for Oggz to call when a new Ogg packet is found in the stream. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>oggz</em>&nbsp;</td><td>An OGGZ handle previously opened for reading </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>serialno</em>&nbsp;</td><td>Identify the logical bitstream in <em>oggz</em> to attach this callback to, or -1 to attach this callback to all unattached logical bitstreams in <em>oggz</em>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read_packet</em>&nbsp;</td><td>Your callback function </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>
</dl>
<dl compact><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>OGGZ_ERR_BAD_SERIALNO</em>&nbsp;</td><td><em>serialno</em> does not identify an existing logical bitstream in <em>oggz</em>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_BAD_OGGZ</em>&nbsp;</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_INVALID</em>&nbsp;</td><td>Operation not suitable for this OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_OUT_OF_MEMORY</em>&nbsp;</td><td>Out of memory</td></tr>
  </table>
</dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Values of <em>serialno</em> other than -1 allows you to specify different callback functions for each logical bitstream.<p>
It is safe to call this callback from within an OggzReadPacket function, in order to specify that subsequent packets should be handled by a different OggzReadPacket function. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gfe738d4fdd4b00b1280f5978be19b2d5"></a><!-- doxytag: member="oggz_read.h::oggz_set_read_page" ref="gfe738d4fdd4b00b1280f5978be19b2d5" args="(OGGZ *oggz, long serialno, OggzReadPage read_page, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int oggz_set_read_page           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#672d218df13da45a4b41d5366211bfee">OGGZ</a> *&nbsp;</td>
          <td class="paramname"> <em>oggz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>serialno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__read__api.html#g8a1df0166fad1a0a6fe55d24e1a4b2e6">OggzReadPage</a>&nbsp;</td>
          <td class="paramname"> <em>read_page</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 a callback for Oggz to call when a new Ogg page is found in the stream. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>oggz</em>&nbsp;</td><td>An OGGZ handle previously opened for reading </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>serialno</em>&nbsp;</td><td>Identify the logical bitstream in <em>oggz</em> to attach this callback to, or -1 to attach this callback to all unattached logical bitstreams in <em>oggz</em>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read_page</em>&nbsp;</td><td>Your OggzReadPage callback function </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>
</dl>
<dl compact><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>OGGZ_ERR_BAD_OGGZ</em>&nbsp;</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_INVALID</em>&nbsp;</td><td>Operation not suitable for this OGGZ </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>OGGZ_ERR_OUT_OF_MEMORY</em>&nbsp;</td><td>Out of memory</td></tr>
  </table>
</dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Values of <em>serialno</em> other than -1 allows you to specify different callback functions for each logical bitstream.<p>
It is safe to call this callback from within an OggzReadPage function, in order to specify that subsequent pages should be handled by a different OggzReadPage function. </dd></dl>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 15 08:06:11 2009 for liboggz by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>