public VorbisReader(Stream stream, bool closeStreamOnDispose)
: this()
{
var bufferedStream = new BufferedReadStream(stream);
bufferedStream.CloseBaseStream = closeStreamOnDispose;
// try Ogg first
var oggContainer = new Ogg.ContainerReader(bufferedStream, closeStreamOnDispose);
if (!LoadContainer(oggContainer))
{
// oops, not Ogg!
// we don't support any other container types yet, so error out
// TODO: Add Matroska fallback
bufferedStream.Close();
throw new InvalidDataException("Could not determine container type!");
}
_containerReader = oggContainer;
if (_decoders.Count == 0) throw new InvalidDataException("No Vorbis data found!");
}