private static void PackComment(EncodeBuffer buffer, Comments vorbisComment) { // Preamble buffer.Write(0x03, 8); buffer.WriteString(VorbisString); // Vendor buffer.Write((uint)VendorString.Length, 32); buffer.WriteString(VendorString); // Comments buffer.Write((uint)vorbisComment.UserComments.Count, 32); foreach (var comment in vorbisComment.UserComments) { if (!string.IsNullOrEmpty(comment)) { buffer.Write((uint)comment.Length, 32); buffer.WriteString(comment); } else { buffer.Write(0, 32); } } buffer.Write(1, 1); }
private void PackBooks(EncodeBuffer buffer, VorbisInfo info) { var codecSetup = info.CodecSetup; buffer.Write(0x05, 8); buffer.WriteString(VorbisString); buffer.Write((uint)(codecSetup.BookParams.Count - 1), 8); foreach (var book in codecSetup.BookParams) { PackStaticBook(buffer, book); } // times; hook placeholders buffer.Write(0, 6); buffer.Write(0, 16); buffer.Write((uint)(codecSetup.FloorParams.Count - 1), 6); foreach (var floor in codecSetup.FloorParams) { buffer.Write(1, 16); // For now we're only using floor type 1 PackFloor(buffer, floor); } buffer.Write((uint)(codecSetup.ResidueParams.Count - 1), 6); foreach (var residue in codecSetup.ResidueParams) { buffer.Write((uint)residue.ResidueType, 16); PackResidue(buffer, residue); } buffer.Write((uint)(codecSetup.MapParams.Count - 1), 6); foreach (var mapping in codecSetup.MapParams) { buffer.Write(0, 16); // Mapping type is always zero PackMapping(buffer, info, mapping); } buffer.Write((uint)(codecSetup.ModeParams.Count - 1), 6); for (var i = 0; i < codecSetup.ModeParams.Count; i++) { PackModes(buffer, codecSetup, i); } buffer.Write(1, 1); }
private static void PackInfo(EncodeBuffer buffer, VorbisInfo info) { var codecSetup = info.CodecSetup; // preamble buffer.Write(0x01, 8); buffer.WriteString(VorbisString); // basic information about the stream buffer.Write(0x00, 32); buffer.Write((uint)info.Channels, 8); buffer.Write((uint)info.SampleRate, 32); buffer.Write(0, 32); // Bit rate upper not used buffer.Write((uint)info.BitRateNominal, 32); buffer.Write(0, 32); // Bit rate lower not used buffer.Write((uint)Encoding.Log(codecSetup.BlockSizes[0] - 1), 4); buffer.Write((uint)Encoding.Log(codecSetup.BlockSizes[1] - 1), 4); buffer.Write(1, 1); }