Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 71badfea370b2da6b38fbdc08c3752ed > files > 29

liboggz-doc-1.1.1-2.fc15.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>liboggz: Oggz Write API</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.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">liboggz&#160;<span id="projectnumber">1.1.1</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<h1>Oggz Write API</h1>  </div>
</div>
<div class="contents">

<p>Oggz maintains a packet queue, such that you can independently add packets to the queue and write an Ogg bitstream.  
<a href="#_details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__write__api.html#ga27ef9f56078d3c015431b1a67b2c1812">OggzWriteHungry</a> )(<a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, int empty, void *user_data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the signature of a callback which Oggz will call when <em>oggz</em> is <a class="el" href="group__hungry.html">hungry </a>.  <a href="#ga27ef9f56078d3c015431b1a67b2c1812"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__write__api.html#gaf362c030bc7a7f57cb23f2b863a59389">oggz_write_set_hungry_callback</a> (<a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, <a class="el" href="group__write__api.html#ga27ef9f56078d3c015431b1a67b2c1812">OggzWriteHungry</a> hungry, int only_when_empty, void *user_data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a callback for Oggz to call when <em>oggz</em> is <a class="el" href="group__hungry.html">hungry </a>.  <a href="#gaf362c030bc7a7f57cb23f2b863a59389"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__write__api.html#ga6ccaceb107db1fd2eae047dbdbaa5889">oggz_write_feed</a> (<a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, ogg_packet *op, long serialno, int flush, int *guard)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a packet to <em>oggz's</em> packet queue.  <a href="#ga6ccaceb107db1fd2eae047dbdbaa5889"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__write__api.html#ga5606dff01964caec4582eb172fde0c1c">oggz_write_output</a> (<a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, unsigned char *buf, long n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Output data from an OGGZ handle.  <a href="#ga5606dff01964caec4582eb172fde0c1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__write__api.html#ga3c97d94ea425d64546adf9c368b71904">oggz_write</a> (<a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, long n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Write n bytes from an OGGZ handle.  <a href="#ga3c97d94ea425d64546adf9c368b71904"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__write__api.html#gab25da7d2cbf39585357f2a426d3dba2f">oggz_write_get_next_page_size</a> (<a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the number of bytes in the next page to be written.  <a href="#gab25da7d2cbf39585357f2a426d3dba2f"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Oggz maintains a packet queue, such that you can independently add packets to the queue and write an Ogg bitstream. </p>
<p>There are two complementary methods for adding packets to the packet queue.</p>
<ul>
<li>by <a class="el" href="group__force__feed.html">force feeding Oggz </a></li>
<li>by using <a class="el" href="group__hungry.html">OggzHungry </a> callbacks</li>
</ul>
<p>As each packet is enqueued, its validity is checked against the framing constraints outlined in the <a class="el" href="group__basics.html">Ogg basics </a> section. If it does not pass these constraints, <a class="el" href="group__write__api.html#ga6ccaceb107db1fd2eae047dbdbaa5889" title="Add a packet to oggz&#39;s packet queue.">oggz_write_feed()</a> will fail with an appropriate error code.</p>
<dl class="note"><dt><b>Note:</b></dt><dd><ul>
<li>When writing, you can ensure that a packet starts on a new page by setting the <em>flush</em> parameter of <a class="el" href="group__write__api.html#ga6ccaceb107db1fd2eae047dbdbaa5889" title="Add a packet to oggz&#39;s packet queue.">oggz_write_feed()</a> to <em>OGGZ_FLUSH_BEFORE</em> when enqueuing it. Similarly you can ensure that the last page a packet is written into won't contain any following packets by setting the <em>flush</em> parameter of <a class="el" href="group__write__api.html#ga6ccaceb107db1fd2eae047dbdbaa5889" title="Add a packet to oggz&#39;s packet queue.">oggz_write_feed()</a> to <em>OGGZ_FLUSH_AFTER</em>.</li>
<li>The <em>OGGZ_FLUSH_BEFORE</em> and <em>OGGZ_FLUSH_AFTER</em> flags can be bitwise OR'd together to ensure that the packet will not share any pages with any other packets, either before or after. </li>
</ul>
</dd></dl>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga27ef9f56078d3c015431b1a67b2c1812"></a><!-- doxytag: member="oggz_write.h::OggzWriteHungry" ref="ga27ef9f56078d3c015431b1a67b2c1812" args=")(OGGZ *oggz, int empty, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="group__write__api.html#ga27ef9f56078d3c015431b1a67b2c1812">OggzWriteHungry</a>)(<a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *oggz, int empty, void *user_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This is the signature of a callback which Oggz will call when <em>oggz</em> is <a class="el" href="group__hungry.html">hungry </a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">oggz</td><td>The OGGZ handle </td></tr>
    <tr><td class="paramname">empty</td><td>A value of 1 indicates that the packet queue is currently empty. A value of 0 indicates that the packet queue is not empty. </td></tr>
    <tr><td class="paramname">user_data</td><td>A generic pointer you have provided earlier </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0</td><td>Continue </td></tr>
    <tr><td class="paramname">non-zero</td><td>Instruct Oggz to stop. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga3c97d94ea425d64546adf9c368b71904"></a><!-- doxytag: member="oggz_write.h::oggz_write" ref="ga3c97d94ea425d64546adf9c368b71904" args="(OGGZ *oggz, long n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long oggz_write </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *&#160;</td>
          <td class="paramname"><em>oggz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write n bytes from an OGGZ handle. </p>
<p>Oggz will call your write callback as needed.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">oggz</td><td>An OGGZ handle previously opened for writing </td></tr>
    <tr><td class="paramname">n</td><td>A count of bytes to be written </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">&gt; 0</td><td>The number of bytes successfully output </td></tr>
    <tr><td class="paramname">0</td><td>End of stream </td></tr>
    <tr><td class="paramname">OGGZ_ERR_RECURSIVE_WRITE</td><td>Attempt to initiate writing from within an OggzHungry callback </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_OGGZ</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_INVALID</td><td>Operation not suitable for this OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_STOP_OK</td><td>Writing was stopped by an OggzHungry callback returning OGGZ_STOP_OK </td></tr>
    <tr><td class="paramname">OGGZ_ERR_STOP_ERR</td><td>Reading was stopped by an OggzHungry callback returning OGGZ_STOP_ERR </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga6ccaceb107db1fd2eae047dbdbaa5889"></a><!-- doxytag: member="oggz_write.h::oggz_write_feed" ref="ga6ccaceb107db1fd2eae047dbdbaa5889" args="(OGGZ *oggz, ogg_packet *op, long serialno, int flush, int *guard)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int oggz_write_feed </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *&#160;</td>
          <td class="paramname"><em>oggz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ogg_packet *&#160;</td>
          <td class="paramname"><em>op</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>serialno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flush</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>guard</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add a packet to <em>oggz's</em> packet queue. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">oggz</td><td>An OGGZ handle previously opened for writing </td></tr>
    <tr><td class="paramname">op</td><td>An ogg_packet with all fields filled in </td></tr>
    <tr><td class="paramname">serialno</td><td>Identify the logical bitstream in <em>oggz</em> to add the packet to </td></tr>
    <tr><td class="paramname">flush</td><td>Bitmask of OGGZ_FLUSH_BEFORE, OGGZ_FLUSH_AFTER </td></tr>
    <tr><td class="paramname">guard</td><td>A guard for nocopy, NULL otherwise </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0</td><td>Success </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_GUARD</td><td><em>guard</em> specified has non-zero initialization </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BOS</td><td>Packet would be bos packet of a new logical bitstream, but oggz has already written one or more non-bos packets in other logical bitstreams, and <em>oggz</em> is not flagged OGGZ_NONSTRICT </td></tr>
    <tr><td class="paramname">OGGZ_ERR_EOS</td><td>The logical bitstream identified by <em>serialno</em> is already at eos, and <em>oggz</em> is not flagged OGGZ_NONSTRICT </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_BYTES</td><td><em>op-&gt;bytes</em> is invalid, and <em>oggz</em> is not flagged OGGZ_NONSTRICT </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_B_O_S</td><td><em>op-&gt;b_o_s</em> is invalid, and <em>oggz</em> is not flagged OGGZ_NONSTRICT </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_GRANULEPOS</td><td><em>op-&gt;granulepos</em> is less than that of an earlier packet within this logical bitstream, and <em>oggz</em> is not flagged OGGZ_NONSTRICT </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_PACKETNO</td><td><em>op-&gt;packetno</em> is less than that of an earlier packet within this logical bitstream, and <em>oggz</em> is not flagged OGGZ_NONSTRICT </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_SERIALNO</td><td><em>serialno</em> does not identify an existing logical bitstream in <em>oggz</em>, and <em>oggz</em> is not flagged OGGZ_NONSTRICT or <em>serialno</em> is equal to -1, or <em>serialno</em> does not fit in 32 bits, ie. within the range (-(2^31), (2^31)-1) </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_OGGZ</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_INVALID</td><td>Operation not suitable for this OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_OUT_OF_MEMORY</td><td>Unable to allocate memory to queue packet</td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>If <em>op-&gt;b_o_s</em> is initialized to <em>-1</em> before calling <a class="el" href="group__write__api.html#ga6ccaceb107db1fd2eae047dbdbaa5889" title="Add a packet to oggz&#39;s packet queue.">oggz_write_feed()</a>, Oggz will fill it in with the appropriate value; ie. 1 for the first packet of a new stream, and 0 otherwise. </dd></dl>

</div>
</div>
<a class="anchor" id="gab25da7d2cbf39585357f2a426d3dba2f"></a><!-- doxytag: member="oggz_write.h::oggz_write_get_next_page_size" ref="gab25da7d2cbf39585357f2a426d3dba2f" args="(OGGZ *oggz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long oggz_write_get_next_page_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *&#160;</td>
          <td class="paramname"><em>oggz</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Query the number of bytes in the next page to be written. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">oggz</td><td>An OGGZ handle previously opened for writing </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">&gt;= 0</td><td>The number of bytes in the next page </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_OGGZ</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_INVALID</td><td>Operation not suitable for this OGGZ </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga5606dff01964caec4582eb172fde0c1c"></a><!-- doxytag: member="oggz_write.h::oggz_write_output" ref="ga5606dff01964caec4582eb172fde0c1c" args="(OGGZ *oggz, unsigned char *buf, long n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long oggz_write_output </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *&#160;</td>
          <td class="paramname"><em>oggz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Output data from an OGGZ handle. </p>
<p>Oggz will call your write callback as needed.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">oggz</td><td>An OGGZ handle previously opened for writing </td></tr>
    <tr><td class="paramname">buf</td><td>A memory buffer </td></tr>
    <tr><td class="paramname">n</td><td>A count of bytes to output </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">&gt; 0</td><td>The number of bytes successfully output </td></tr>
    <tr><td class="paramname">0</td><td>End of stream </td></tr>
    <tr><td class="paramname">OGGZ_ERR_RECURSIVE_WRITE</td><td>Attempt to initiate writing from within an OggzHungry callback </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_OGGZ</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_INVALID</td><td>Operation not suitable for this OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_STOP_OK</td><td>Writing was stopped by an OggzHungry callback returning OGGZ_STOP_OK </td></tr>
    <tr><td class="paramname">OGGZ_ERR_STOP_ERR</td><td>Reading was stopped by an OggzHungry callback returning OGGZ_STOP_ERR </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaf362c030bc7a7f57cb23f2b863a59389"></a><!-- doxytag: member="oggz_write.h::oggz_write_set_hungry_callback" ref="gaf362c030bc7a7f57cb23f2b863a59389" args="(OGGZ *oggz, OggzWriteHungry hungry, int only_when_empty, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int oggz_write_set_hungry_callback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="oggz_8h.html#a672d218df13da45a4b41d5366211bfee">OGGZ</a> *&#160;</td>
          <td class="paramname"><em>oggz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__write__api.html#ga27ef9f56078d3c015431b1a67b2c1812">OggzWriteHungry</a>&#160;</td>
          <td class="paramname"><em>hungry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>only_when_empty</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>user_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a callback for Oggz to call when <em>oggz</em> is <a class="el" href="group__hungry.html">hungry </a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">oggz</td><td>An OGGZ handle previously opened for writing </td></tr>
    <tr><td class="paramname">hungry</td><td>Your callback function </td></tr>
    <tr><td class="paramname">only_when_empty</td><td>When to call: a value of 0 indicates that Oggz should call <em>hungry()</em> after each and every packet is written; a value of 1 indicates that Oggz should call <em>hungry()</em> only when its packet queue is empty </td></tr>
    <tr><td class="paramname">user_data</td><td>Arbitrary data you wish to pass to your callback </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0</td><td>Success </td></tr>
    <tr><td class="paramname">OGGZ_ERR_BAD_OGGZ</td><td><em>oggz</em> does not refer to an existing OGGZ </td></tr>
    <tr><td class="paramname">OGGZ_ERR_INVALID</td><td>Operation not suitable for this OGGZ </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Passing a value of 0 for <em>only_when_empty</em> allows you to feed new packets into <em>oggz's</em> packet queue on the fly. </dd></dl>

</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Tue Feb 8 2011 for liboggz by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>