private OggPage ReadPage() { byte[] pageHeaderData; if (stream.ReadBytes (out pageHeaderData, 27) < 27) return null; string magic = System.Text.Encoding.UTF8.GetString (pageHeaderData, 0, 4); if (magic != "OggS") return null; byte version = pageHeaderData[4]; OggPageType type = (OggPageType)pageHeaderData[5]; byte[] granule = new byte[8]; Array.Copy (pageHeaderData, 6, granule, 0, 8); //Buffer.BlockCopy (pageHeaderData, 6, granule, 0, 8); int streamSerialNumber = BitConverter.ToInt32 (pageHeaderData, 14); int pageSequenceNumber = BitConverter.ToInt32 (pageHeaderData, 18); int checksum = BitConverter.ToInt32 (pageHeaderData, 22); byte segments = pageHeaderData[26]; byte[] segmentLengths = new byte[segments]; if (stream.ReadBytes (out segmentLengths, segments) < segments) return null; byte[][] data = new byte[segmentLengths.Length][]; for (int i = 0; i < segmentLengths.Length; ++i) { byte len = segmentLengths[i]; byte[] segment; if (stream.ReadBytes (out segment, len) != len) return null; data[i] = segment; } OggPage page = new OggPage (streamSerialNumber, pageSequenceNumber); page.Type = type; page.Version = version; page.Segments = data; page.Granule = granule; return page; }
public void Enqueue(OggPage page) { this.lastPages.Enqueue (page); }
public void Enqueue(OggPage page) { this.lastPages.Enqueue(page); }