/// <summary> /// Returns the frame in a byte array. /// </summary> /// <returns>The frame in a byte array.</returns> public byte[] ToByteArray() { using (StreamBuffer sb = new StreamBuffer()) { sb.WriteBigEndianInt32(_header); sb.Write(_sampleFrameNumberBytes); int blockSize = (_header >> 12) & 0xF; switch (blockSize) { case 0x06: sb.WriteByte((byte)(BlockSize - 1)); break; case 0x07: sb.WriteBigEndianInt16((short)(BlockSize - 1)); break; } int samplingRate = (_header >> 8) & 0xF; switch (samplingRate) { case 0x0C: sb.WriteByte((byte)(SamplingRate / 1000)); break; case 0x0D: sb.WriteBigEndianInt16((short)SamplingRate); break; case 0x0E: sb.WriteBigEndianInt16((short)(SamplingRate / 10)); break; } sb.WriteByte((byte)_crc8); foreach (FlacSubFrame subFrame in SubFrames) sb.Write(subFrame.ToByteArray()); sb.WriteBigEndianInt16((short)_crc16); return sb.ToByteArray(); } }
/// <inheritdoc/> public override byte[] ToByteArray() { using (StreamBuffer buf = new StreamBuffer()) { buf.WriteString(Name); buf.WriteBigEndianInt32(Flags); if ((Flags & XingHeaderFlags.FrameCountFlag) != 0) buf.WriteBigEndianInt32(FrameCount); if ((Flags & XingHeaderFlags.FileSizeFlag) != 0) buf.WriteBigEndianInt32(FileSize); // Extract TOC (Table of Contents) for more accurate seeking if ((Flags & XingHeaderFlags.TocFlag) != 0) { for (int i = 0; i < 100; i++) buf.WriteByte((byte)Toc[i]); } if ((Flags & XingHeaderFlags.VbrScaleFlag) != 0) buf.WriteBigEndianInt32(Quality); return buf.ToByteArray(); } }
public void WriteByteTest() { StreamBuffer target = new StreamBuffer(); // TODO: Initialize to an appropriate value byte value = 0; // TODO: Initialize to an appropriate value target.WriteByte(value); Assert.Inconclusive("A method that does not return a value cannot be verified."); }
////------------------------------------------------------------------------------------------------------------------------------ /// <inheritdoc/> /// <remarks> /// The extended tags will only be written when <see cref="UseExtendedTag"/> is set to true. /// </remarks> public byte[] ToByteArray() { using (StreamBuffer buffer = new StreamBuffer()) { byte[] byteValue; if (UseExtendedTag) { // TAG+ buffer.Write(ExtendedHeaderIdentifierBytes); // Title - write the last 60 bytes byteValue = _encoding.GetBytes(GetExtendedString(_trackTitle ?? String.Empty, 30, 60, true)); buffer.Write(byteValue); buffer.WritePadding(0x00, 60 - byteValue.Length); // Artist - write the last 60 bytes byteValue = _encoding.GetBytes(GetExtendedString(_artist ?? String.Empty, 30, 60, true)); buffer.Write(byteValue); buffer.WritePadding(0x00, 60 - byteValue.Length); // Album Title - write the last 60 bytes byteValue = _encoding.GetBytes(GetExtendedString(_albumTitle ?? String.Empty, 30, 60, true)); buffer.Write(byteValue); buffer.WritePadding(0x00, 60 - byteValue.Length); // Track Speed buffer.WriteByte((byte)_trackSpeed); // Extended Track Genre byteValue = _encoding.GetBytes(ExtendedTrackGenre ?? String.Empty); buffer.Write(byteValue); buffer.WritePadding(0x00, 30 - byteValue.Length); // Start-time long startTimeMinutes = (StartTime.Days * 24 * 60) + (StartTime.Hours * 60) + StartTime.Minutes; long startTimeSeconds = StartTime.Seconds; string startTime = startTimeMinutes.ToString("000") + ":" + startTimeSeconds.ToString("00"); byteValue = _encoding.GetBytes(GetTruncatedEncodedString(startTime, 6)); buffer.Write(byteValue); // End-time long endTimeMinutes = (EndTime.Days * 24 * 60) + (EndTime.Hours * 60) + EndTime.Minutes; long endTimeSeconds = EndTime.Seconds; string endTime = endTimeMinutes.ToString("000") + ":" + endTimeSeconds.ToString("00"); byteValue = _encoding.GetBytes(GetTruncatedEncodedString(endTime, 6)); buffer.Write(byteValue); } // TAG buffer.Write(HeaderIdentifierBytes); // Track Title byteValue = _encoding.GetBytes(GetTruncatedEncodedString(_trackTitle ?? String.Empty, 30)); buffer.Write(byteValue); buffer.WritePadding(0x00, 30 - byteValue.Length); // Artist byteValue = _encoding.GetBytes(GetTruncatedEncodedString(_artist ?? String.Empty, 30)); buffer.Write(byteValue); buffer.WritePadding(0x00, 30 - byteValue.Length); // Album Title byteValue = _encoding.GetBytes(GetTruncatedEncodedString(_albumTitle ?? String.Empty, 30)); buffer.Write(byteValue); buffer.WritePadding(0x00, 30 - byteValue.Length); // Album Year byteValue = _encoding.GetBytes(AlbumYear ?? String.Empty); buffer.Write(byteValue); buffer.WritePadding(0x00, 4 - byteValue.Length); // Track comment byteValue = _encoding.GetBytes(TrackComment ?? String.Empty); buffer.Write(byteValue); buffer.WritePadding(0x00, TrackCommentLength - byteValue.Length); // Track Number if (Version >= Id3v1Version.Id3v11) { buffer.WriteByte(0x00); buffer.WriteByte(TrackNumber); } // Genre buffer.WriteByte((byte)Genre); return buffer.ToByteArray(); } }
////------------------------------------------------------------------------------------------------------------------------------ /// <summary> /// Places the <see cref="LameTag"/> into a byte array. /// </summary> /// <returns>A byte array that represents the <see cref="LameTag"/> instance.</returns> public byte[] ToByteArray() { using (StreamBuffer buffer = new StreamBuffer()) { if (Version < 3.09f) { buffer.WriteString(EncoderVersion, Encoding.ASCII, 20); } else { buffer.WriteString(EncoderVersion, Encoding.ASCII, 9); buffer.WriteByte((byte)((InfoTagRevision & 0xF0) | (VbrMethod & 0x0F))); buffer.WriteByte((byte)LowpassFilterValue); buffer.WriteFloat(PeakSignalAmplitude); buffer.WriteShort(RadioReplayGain); buffer.WriteShort(AudiophileReplayGain); buffer.WriteByte((byte)EncodingFlags); buffer.WriteByte((byte)BitRate); buffer.WriteBytes(EncoderDelays, 3); buffer.WriteByte((byte)Misc); buffer.WriteByte((byte)Mp3Gain); buffer.WriteShort(PresetSurroundInfo); buffer.WriteBigEndianInt32(MusicLength); buffer.WriteBigEndianInt16(_musicCrc); buffer.WriteBigEndianInt16(_infoTagCrc); } return buffer.ToByteArray(); } }