Example #1
0
 /// <summary>
 /// Writes the header pages that start the Ogg Speex file. Prepares file for
 /// data to be written.
 /// </summary>
 ///
 /// <param name="comment">description to be included in the header.</param>
 /// @exception IOException
 public override void WriteHeader(String comment)
 {
     byte[]        header;
     byte[]        data;
     NSpeex.OggCrc crc = new NSpeex.OggCrc();
     /* writes the OGG header page */
     header = BuildOggPageHeader(2, 0,
                                 streamSerialNumber, pageCount++, 1, new byte[] { 80 });
     data = NSpeex.AudioFileWriter.BuildSpeexHeader(sampleRate, mode,
                                                    channels, vbr, nframes);
     crc.Initialize();
     crc.TransformBlock(header, 0, header.Length, header, 0);
     crc.TransformFinalBlock(data, 0, data.Length);
     xout.Write(header, 0, 22);
     xout.Write(crc.Hash, 0, crc.HashSize / 8);
     xout.Write(header, 26, header.Length - 26);
     xout.Write(data, 0, data.Length);
     /* writes the OGG comment page */
     header = BuildOggPageHeader(0, 0,
                                 streamSerialNumber, pageCount++, 1,
                                 new byte[] { (byte)(comment.Length + 8) });
     data = NSpeex.AudioFileWriter.BuildSpeexComment(comment);
     crc.Initialize();
     crc.TransformBlock(header, 0, header.Length, header, 0);
     crc.TransformFinalBlock(data, 0, data.Length);
     xout.Write(header, 0, 22);
     xout.Write(crc.Hash, 0, crc.HashSize / 8);
     xout.Write(header, 26, header.Length - 26);
     xout.Write(data, 0, data.Length);
 }
Example #2
0
 /// <summary>
 /// Flush the Ogg page out of the buffers into the file.
 /// </summary>
 ///
 /// <param name="eos"> -</param>
 /// @exception IOException
 private void Flush(bool eos)
 {
     byte[]        header;
     NSpeex.OggCrc crc = new NSpeex.OggCrc();
     /* writes the OGG header page */
     header = BuildOggPageHeader(((eos) ? 4 : 0),
                                 granulepos, streamSerialNumber, pageCount++, packetCount,
                                 headerBuffer);
     crc.Initialize();
     crc.TransformBlock(header, 0, header.Length, header, 0);
     crc.TransformFinalBlock(dataBuffer, 0, dataBufferPtr);
     xout.Write(header, 0, 22);
     xout.Write(crc.Hash, 0, crc.HashSize / 8);
     xout.Write(header, 26, header.Length - 26);
     xout.Write(dataBuffer, 0, dataBufferPtr);
     dataBufferPtr   = 0;
     headerBufferPtr = 0;
     packetCount     = 0;
 }