Esempio n. 1
0
        /// <summary>
        /// Parses the frame header flags.
        /// </summary>
        /// <param name="flagBytes">The frame header flags.</param>
        /// <param name="version">The ID3 version of the tag being parsed.</param>
        private void ParseFlags(byte[] flagBytes, ID3Versions version)
        {
            int frameStatus;
            int frameFormat;

            switch (version)
            {
            case ID3Versions.V2_2:
                // do nothing - no flags in v2.2
                break;

            case ID3Versions.V2_3:
                frameStatus = (int)flagBytes[0];
                frameFormat = (int)flagBytes[1];
                frameStatus = frameStatus << 8;
                headerFlags = ConvertFlags((FrameHeaderFlagsV2_3)frameStatus + frameFormat);
                break;

            case ID3Versions.V2_4:
                frameStatus = (int)flagBytes[0];
                frameFormat = (int)flagBytes[1];
                frameStatus = frameStatus << 8;
                headerFlags = (FrameHeaderFlagsV2_4)frameStatus + frameFormat;
                break;

            default:
                throw new UnsupportedVersionException(version);
            }
        }
Esempio n. 2
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);
        }
Esempio 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_4 flagSet, FrameHeaderFlagsV2_4 flagToCheck)
 {
     return((flagSet & flagToCheck) == flagToCheck);
 }
Esempio n. 4
0
 /// <summary>
 /// Copy constructor.
 /// </summary>
 /// <param name="frame">Frame to copy.</param>
 protected ID3v2Frame(ID3v2Frame frame)
 {
     this.frameType   = frame.frameType;
     this.headerFlags = frame.headerFlags;
 }