コード例 #1
0
ファイル: LightPageReader.cs プロジェクト: aharit/NVorbis
        private bool AddPage()
        {
            if (!_packetProviders.ContainsKey(StreamSerial))
            {
                if (_ignoredSerials.Contains(StreamSerial))
                {
                    // nevermind... we're supposed to ignore these
                    return(false);
                }

                var packetProvider = new LightPacketProvider(this);
                _packetProviders.Add(StreamSerial, packetProvider);
                if (!_newStreamCallback(packetProvider))
                {
                    _packetProviders.Remove(StreamSerial);
                    _ignoredSerials.Add(StreamSerial);
                    packetProvider.Dispose();
                    return(false);
                }
            }
            else
            {
                _packetProviders[StreamSerial].AddPage();
            }

            return(true);
        }
コード例 #2
0
ファイル: LightPacket.cs プロジェクト: aharit/NVorbis
 internal LightPacket(LightPageReader reader, LightPacketProvider packetProvider, int index, IList <Tuple <long, int> > data)
     : base(data.Sum(p => p.Item2))
 {
     _reader         = reader;
     _packetProvider = packetProvider;
     Index           = index;
     _dataSrc        = data;
 }
コード例 #3
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);
        }