Exemplo n.º 1
0
        /// <summary>
        /// Converts ID3v2.3 frame header flags to ID3v2.4 frame header flags.
        /// </summary>
        /// <param name="flags2_3">ID3v2.3 frame header flags to convert.</param>
        /// <returns>Converted ID3v2.4 frame header flags.</returns>
        private FrameHeaderFlagsV2_4 ConvertFlags(FrameHeaderFlagsV2_3 flags2_3)
        {
            FrameHeaderFlagsV2_4 flags2_4 = FrameHeaderFlagsV2_4.None;

            if (HasFlag(flags2_3, FrameHeaderFlagsV2_3.TagAlterPreservation))
            {
                flags2_4 |= FrameHeaderFlagsV2_4.TagAlterPreservation;
            }
            if (HasFlag(flags2_3, FrameHeaderFlagsV2_3.FileAlterPreservation))
            {
                flags2_4 |= FrameHeaderFlagsV2_4.FileAlterPreservation;
            }
            if (HasFlag(flags2_3, FrameHeaderFlagsV2_3.ReadOnly))
            {
                flags2_4 |= FrameHeaderFlagsV2_4.ReadOnly;
            }
            if (HasFlag(flags2_3, FrameHeaderFlagsV2_3.Compression))
            {
                flags2_4 |= FrameHeaderFlagsV2_4.Compression;
            }
            if (HasFlag(flags2_3, FrameHeaderFlagsV2_3.Encryption))
            {
                flags2_4 |= FrameHeaderFlagsV2_4.Encryption;
            }

            return(flags2_4);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Writes the header flags 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 WriteFlags(Stream stream, ID3Versions version)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            byte formatByte;
            byte statusByte;

            switch (version)
            {
            case ID3Versions.V2_2:
                break;

            case ID3Versions.V2_3:
                FrameHeaderFlagsV2_3 flags2_3 = ConvertFlags(this.HeaderFlags);
                formatByte = (byte)flags2_3;
                statusByte = (byte)(((int)flags2_3) >> 8);
                stream.WriteByte(statusByte);
                stream.WriteByte(formatByte);
                break;

            case ID3Versions.V2_4:
                formatByte = (byte)this.HeaderFlags;
                statusByte = (byte)(((int)this.HeaderFlags) >> 8);
                stream.WriteByte(statusByte);
                stream.WriteByte(formatByte);
                break;

            default:
                throw new UnsupportedVersionException(version);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Returns true if flagSet contains flagToCheck; false otherwise.
 /// </summary>
 /// <param name="flagSet">A set of flags.</param>
 /// <param name="flagToCheck">A flag to be checked for.</param>
 /// <returns>True if flagSet contains flagToCheck; false otherwise.</returns>
 private bool HasFlag(FrameHeaderFlagsV2_3 flagSet, FrameHeaderFlagsV2_3 flagToCheck)
 {
     return((flagSet & flagToCheck) == flagToCheck);
 }