Exemplo n.º 1
0
        /// <summary>
        /// Writes the size field for this frame to a stream.
        /// </summary>
        /// <param name="stream">The stream to write to.</param>
        /// <param name="version">The ID3v2 version to use in writing the frame.</param>
        protected void WriteFrameSize(Stream stream, ID3Versions version)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            switch (version)
            {
            case ID3Versions.V2_2:
                stream.Write(EncodedInteger.ToBytes(this.Size, ID3V2_2FrameSizeFieldLength), 0, ID3V2_2FrameSizeFieldLength);
                break;

            case ID3Versions.V2_3:
                stream.Write(EncodedInteger.ToBytes(this.Size, ID3V2_3FrameSizeFieldLength), 0, ID3V2_3FrameSizeFieldLength);
                break;

            case ID3Versions.V2_4:
                stream.Write(SynchsafeInteger.Synchsafe(this.Size), 0, ID3V2_4FrameSizeFieldLength);
                break;

            default:
                throw new UnsupportedVersionException(version);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Writes the tag header to the specified stream.
 /// </summary>
 /// <param name="stream">The stream to be written to.</param>
 /// <param name="version">The ID3v2 version of the tag to be written.</param>
 private void WriteHeader(Stream stream, ID3Versions version)
 {
     if ((version & ID3Versions.V2) == ID3Versions.V2)
     {
         stream.Write(StringToBytes("ID3"), 0, 3);
         WriteVersion(stream, version);
         WriteFlags(stream, version);
         stream.Write(
             SynchsafeInteger.Synchsafe(this.GetFramesSize(version) + this.PaddingSize), 0, 4);
         stream.Flush();
     }
     else
     {
         throw new UnsupportedVersionException(version);
     }
 }