Error return codes possible from libvorbis and libvorbisfile:
All 'failure' style returns are <0; this either indicates a generic
'false' value (eg, ready? T or F) or an error condition. Code can
safely just test for < 0, or look at the specific return code for more
detail.
*** Return codes:
OV_FALSE The call returned a 'false' status (eg, ov_bitrate_instant
can return OV_FALSE if playback is not in progress, and thus
there is no instantaneous bitrate information to report.
OV_HOLE libvorbis/libvorbisfile is alerting the application that
there was an interruption in the data (one of: garbage
between pages, loss of sync followed by recapture, or a
corrupt page)
OV_EREAD A read from media returned an error.
OV_EFAULT Internal logic fault; indicates a bug or heap/stack
corruption.
OV_EIMPL The bitstream makes use of a feature not implemented in this
library version.
OV_EINVAL Invalid argument value.
OV_ENOTVORBIS Bitstream/page/packet is not Vorbis data.
OV_EBADHEADER Invalid Vorbis bitstream header.
OV_EVERSION Vorbis version mismatch.
OV_ENOTAUDIO Packet data submitted to vorbis_synthesis is not audio data.
OV_EBADPACKET Invalid packet submitted to vorbis_synthesis.
OV_EBADLINK Invalid stream section supplied to libvorbis/libvorbisfile,
or the requested link is corrupt.
OV_ENOSEEK Bitstream is not seekable.
****************************************************************
*** Libvorbis functions that can return failure/error codes:
int vorbis_analysis_headerout()
OV_EIMPL
int vorbis_analysis_wrote()
OV_EINVAL
int vorbis_synthesis_headerin()
OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER
int vorbis_synthesis()
OV_ENOTAUDIO, OV_EBADPACKET
int vorbis_synthesis_read()
OV_EINVAL
****************************************************************
*** Libvorbisfile functions that can return failure/error codes:
int ov_open_callbacks()
OV_EREAD, OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER, OV_FAULT
int ov_open()
OV_EREAD, OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER, OV_FAULT
long ov_bitrate()
OV_EINVAL, OV_FALSE
long ov_bitrate_instant()
OV_FALSE
ogg_int64_t ov_raw_total()
OV_EINVAL
ogg_int64_t ov_pcm_total()
OV_EINVAL
double ov_time_total()
OV_EINVAL
int ov_raw_seek()
OV_ENOSEEK, OV_EINVAL, OV_BADLINK
int ov_pcm_seek_page()
OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
int ov_pcm_seek()
OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
int ov_time_seek()
OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
int ov_time_seek_page()
OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
long ov_read()
OV_HOLE, OV_EBADLINK