<html>

<head>
<title>libogg - function - oggpack_bytes</title>
<link rel=stylesheet href="style.css" type="text/css">
</head>

<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
<td align=right><p class=tiny>libogg release 1.3.3 - 20171107</p></td>
</tr>
</table>

<h1>oggpack_bytes</h1>

<p><i>declared in "ogg/ogg.h";</i></p>

<p>This function returns the total number of bytes behind the current 
access point in the <a href="oggpack_buffer.html">oggpack_buffer</a>. 
For write-initialized buffers, this is the number of complete bytes 
written so far. For read-initialized buffers, it is the number of 
complete bytes that have been read so far.
<p>The return value is the number of <b>complete</b> bytes in the buffer.
There may be extra (<8) bits.
<br><br>
<table border=0 color=black cellspacing=0 cellpadding=7>
<tr bgcolor=#cccccc>
	<td>
<pre><b>
long oggpack_bytes(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
</b></pre>
	</td>
</tr>
</table>

<h3>Parameters</h3>
<dl>
<dt><i>b</i></dt>
<dd><a href="oggpack_buffer.html">oggpack_buffer</a> struct to be checked.</dd>
</dl>


<h3>Return Values</h3>
<blockquote>
<li>
<i>n</i> is the total number of bytes within the current buffer.</li>
</blockquote>
<p>

<br><br>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
<td><p class=tiny>copyright &copy; 2000-2017 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
<td align=right><p class=tiny>libogg release 1.3.3 - 20171107</p></td>
</tr>
</table>


</body>

</html>
