Пример #1
0
        public override void WriteHeader(string comment)
        {
            OggCrc oggCrc = new OggCrc();

            byte[] array = OggSpeexWriter.BuildOggPageHeader(2, 0L, this.streamSerialNumber, this.pageCount++, 1, new byte[]
            {
                80
            });
            byte[] array2 = AudioFileWriter.BuildSpeexHeader(this.sampleRate, this.mode, this.channels, this.vbr, this.nframes);
            oggCrc.Initialize();
            oggCrc.TransformBlock(array, 0, array.Length, array, 0);
            oggCrc.TransformFinalBlock(array2, 0, array2.Length);
            this.xout.Write(array, 0, 22);
            this.xout.Write(oggCrc.Hash, 0, oggCrc.HashSize / 8);
            this.xout.Write(array, 26, array.Length - 26);
            this.xout.Write(array2, 0, array2.Length);
            array = OggSpeexWriter.BuildOggPageHeader(0, 0L, this.streamSerialNumber, this.pageCount++, 1, new byte[]
            {
                (byte)(comment.Length + 8)
            });
            array2 = AudioFileWriter.BuildSpeexComment(comment);
            oggCrc.Initialize();
            oggCrc.TransformBlock(array, 0, array.Length, array, 0);
            oggCrc.TransformFinalBlock(array2, 0, array2.Length);
            this.xout.Write(array, 0, 22);
            this.xout.Write(oggCrc.Hash, 0, oggCrc.HashSize / 8);
            this.xout.Write(array, 26, array.Length - 26);
            this.xout.Write(array2, 0, array2.Length);
        }
Пример #2
0
        private void Flush(bool eos)
        {
            OggCrc oggCrc = new OggCrc();

            byte[] array = OggSpeexWriter.BuildOggPageHeader(eos ? 4 : 0, this.granulepos, this.streamSerialNumber, this.pageCount++, this.packetCount, this.headerBuffer);
            oggCrc.Initialize();
            oggCrc.TransformBlock(array, 0, array.Length, array, 0);
            oggCrc.TransformFinalBlock(this.dataBuffer, 0, this.dataBufferPtr);
            this.xout.Write(array, 0, 22);
            this.xout.Write(oggCrc.Hash, 0, oggCrc.HashSize / 8);
            this.xout.Write(array, 26, array.Length - 26);
            this.xout.Write(this.dataBuffer, 0, this.dataBufferPtr);
            this.dataBufferPtr   = 0;
            this.headerBufferPtr = 0;
            this.packetCount     = 0;
        }
Пример #3
0
 private static byte[] BuildOggPageHeader(int headerType, long granulepos, int streamSerialNumber, int pageCount, int packetCount, byte[] packetSizes)
 {
     byte[] array = new byte[packetCount + 27];
     OggSpeexWriter.WriteOggPageHeader(new BinaryWriter(new MemoryStream(array)), headerType, granulepos, streamSerialNumber, pageCount, packetCount, packetSizes);
     return(array);
 }