int GatherNextPage() { while (true) { // get our next header var hdr = FindNextPageHeader(); if (hdr == null) { return(-1); } // if it's in a disposed stream, grab the next page instead if (_disposedStreamSerials.Contains(hdr.StreamSerial)) { continue; } // otherwise, add it if (AddPage(hdr)) { var callback = NewStream; if (callback != null) { var ea = new NewStreamEventArgs(_packetReaders[hdr.StreamSerial]); callback(this, ea); if (ea.IgnoreStream) { _packetReaders[hdr.StreamSerial].Dispose(); continue; } } } return(hdr.StreamSerial); } }
public int GatherNextPage() { PageHeader pageHeader; while (true) { pageHeader = FindNextPageHeader(); if (pageHeader == null) { return(-1); } if (!_disposedStreamSerials.Contains(pageHeader.StreamSerial)) { if (!AddPage(pageHeader)) { break; } EventHandler <NewStreamEventArgs> newStream = this.NewStream; if (newStream == null) { break; } NewStreamEventArgs newStreamEventArgs = new NewStreamEventArgs(_packetReaders[pageHeader.StreamSerial]); newStream(this, newStreamEventArgs); if (!newStreamEventArgs.IgnoreStream) { break; } _packetReaders[pageHeader.StreamSerial].Dispose(); } } return(pageHeader.StreamSerial); }
public VorbisReader(IPacketProvider packetProvider) : this() { var ea = new NewStreamEventArgs(packetProvider); NewStream(this, ea); if (ea.IgnoreStream) throw new InvalidDataException("No Vorbis data found!"); }
private bool NewStreamCallback(LightPacketProvider packetProvider) { var relock = _reader.Release(); var ea = new NewStreamEventArgs(packetProvider); try { NewStream?.Invoke(this, ea); } finally { if (relock) { _reader.Lock(); } } return(!ea.IgnoreStream); }
void NewStream(object sender, NewStreamEventArgs ea) { var packetProvider = ea.PacketProvider; var decoder = new VorbisStreamDecoder(packetProvider); if (decoder.TryInit()) { _decoders.Add(decoder); _serials.Add(packetProvider.StreamSerial); } else { // This is almost certainly not a Vorbis stream ea.IgnoreStream = true; } }
int GatherNextPage() { while (true) { // get our next header var hdr = FindNextPageHeader(); if (hdr == null) { return -1; } // if it's in a disposed stream, grab the next page instead if (_disposedStreamSerials.Contains(hdr.StreamSerial)) continue; // otherwise, add it if (AddPage(hdr)) { var callback = NewStream; if (callback != null) { var ea = new NewStreamEventArgs(_packetReaders[hdr.StreamSerial]); callback(this, ea); if (ea.IgnoreStream) { _packetReaders[hdr.StreamSerial].Dispose(); continue; } } } return hdr.StreamSerial; } }