<html>

<head>
<title>Tremor - Return Codes</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>Tremor documentation</p></td>
<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
</tr>
</table>

<h1>Return Codes</h1>

<p>

The following return codes are <tt>#define</tt>d in "ivorbiscodec.h"
may be returned by libvorbisidec.  Descriptions of a code relevant to
a specific function are found in the reference description of that
function.

<dl>

<dt>OV_FALSE</dt>
<dd>Not true, or no data available</dd>

<dt>OV_HOLE</dt>
<dd>Tremor encoutered missing or corrupt data in the bitstream.  Recovery
is normally automatic and this return code is for informational purposes only.</dd>

<dt>OV_EREAD</dt>
<dd>Read error while fetching compressed data for decode</dd>

<dt>OV_EFAULT</dt>
<dd>Internal inconsistency in decode state.  Continuing is likely not possible.</dd>

<dt>OV_EIMPL</dt>
<dd>Feature not implemented</dd>

<dt>OV_EINVAL</dt>
<dd>Either an invalid argument, or incompletely initialized argument passed to libvorbisidec call</dd>

<dt>OV_ENOTVORBIS</dt>
<dd>The given file/data was not recognized as Ogg Vorbis data.</dd>

<dt>OV_EBADHEADER</dt>
<dd>The file/data is apparently an Ogg Vorbis stream, but contains a corrupted or undecipherable header.</dd>

<dt>OV_EVERSION</dt>
<dd>The bitstream format revision of the given stream is not supported.</dd>

<dt>OV_EBADLINK</dt>
<dd>The given link exists in the Vorbis data stream, but is not decipherable due to garbacge or corruption.</dd>

<dt>OV_ENOSEEK</dt>
<dd>The given stream is not seekable</dd>

</dl>

<br><br>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
</tr><tr>
<td><p class=tiny>Tremor documentation</p></td>
<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
</tr>
</table>

</body>

</html>
