Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
 public VorbisReader(IPacketProvider packetProvider)
     : this()
 {
     var ea = new NewStreamEventArgs(packetProvider);
     NewStream(this, ea);
     if (ea.IgnoreStream) throw new InvalidDataException("No Vorbis data found!");
 }
Пример #4
0
        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);
        }
Пример #5
0
 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;
     }
 }
Пример #6
0
        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;
            }
        }