Beispiel #1
0
        /// <summary>
        /// New DataWithSymbolFrame
        /// </summary>
        /// <param name="FrameID">FrameID</param>
        /// <param name="Flags">Frame Flags</param>
        /// <param name="Data">FileStream to read frame data from</param>
        /// <param name="Length">Maximum available length for this frame</param>
        public DataWithSymbolFrame(string FrameID, FrameFlags Flags, int Length, Stream FS)
            : base(FrameID, Flags, FS)
        {
            TStream = new BreadPlayer.Tags.TagStreamUWP(FS);
            _Owner  = TStream.ReadText(Length, TextEncodings.Ascii, ref Length, true);

            _Symbol = TStream.ReadByte(FS);
            Length--;

            _Data = TStream.ReadData(Length);
        }
        /// <summary>
        /// Create new AudioEncryptionFrame
        /// </summary>
        /// <param name="FrameID">4 Characters tag identifier</param>
        /// <param name="Flags">2 Bytes flags identifier</param>
        /// <param name="Data">Contain Data for this frame</param>
        /// <param name="Length">Maximum available length for this frame</param>
        public AudioEncryptionFrame(string FrameID, FrameFlags Flags, int Length, Stream FS)
            : base(FrameID, Flags, FS)
        {
            TStream = new BreadPlayer.Tags.TagStreamUWP(FS);
            _Owner  = TStream.ReadText(Length, TextEncodings.Ascii, ref Length, true);

            _PreviewStart  = Convert.ToInt32(TStream.ReadUInt(2));
            _PreviewLength = Convert.ToInt32(TStream.ReadUInt(2));
            Length        -= 4;

            _Data = TStream.ReadData(Length);
        }
Beispiel #3
0
        /// <summary>
        /// Create new ID3v2 class for specific file
        /// </summary>
        /// <param name="FilePath">FileAddress to read ID3 information from</param>
        /// <param name="LoadData">Indicate load ID3 in constructor or not</param>
        public ID3v2(bool LoadData, Stream FS)
        {
            // ------ Set default values -----------
            _LoadLinkedFrames = true;
            _DropUnknown      = false;

            Initializer();
            TStream = new BreadPlayer.Tags.TagStreamUWP(FS);
            if (LoadData == true)
            {
                Load();
            }
        }
Beispiel #4
0
        /// <summary>
        /// Create a new Frame class
        /// </summary>
        /// <param name="FrameID">4 Characters tag identifier</param>
        /// <param name="Flags">Frame Falgs</param>
        protected Frame(string FrameID, FrameFlags Flags, Stream FS)
        {
            // All FrameID letters must be capital
            FrameID = FrameID.ToUpper();

            if (!ValidatingFrameID(FrameID, ExceptionLevels.Error))
            {
                return;
            }
            Tag         = new BreadPlayer.Tags.TagStreamUWP(FS);
            _FrameFlags = Flags;
            _FrameID    = FrameID;
            _IsLinked   = false;
        }
Beispiel #5
0
        /// <summary>
        /// New SynchronisedText
        /// </summary>
        /// <param name="FrameID">FrameID</param>
        /// <param name="Flags">Frame Flag</param>
        /// <param name="Data">FileStream contain current frame data</param>
        /// <param name="Length">Maximum availabel length for this frame</param>
        public SynchronisedText(string FrameID, FrameFlags Flags, int Length, Stream FS)
            : base(FrameID, Flags, FS)
        {
            _Syllables   = new FrameCollection <Syllable>("Syllables");
            TStream      = new BreadPlayer.Tags.TagStreamUWP(FS);
            TextEncoding = (TextEncodings)TStream.ReadByte(FS);
            if (!IsValidEnumValue(TextEncoding, ExceptionLevels.Error, FrameID))
            {
                return;
            }

            Length--;

            Language = new Language(TStream.FS);
            Length  -= 3;

            _TimeStamp = (TimeStamps)TStream.ReadByte(FS);
            if (!IsValidEnumValue(_TimeStamp, ExceptionLevels.Error, FrameID))
            {
                return;
            }

            Length--;

            _ContentType = (ContentTypes)TStream.ReadByte(FS);
            if (!IsValidEnumValue(_ContentType))
            {
                _ContentType = ContentTypes.Other;
            }
            Length--;

            // use Text variable for descriptor property
            Text = TStream.ReadText(Length, TextEncoding, ref Length, true);

            string tempText;
            uint   tempTime;

            while (Length > 5)
            {
                tempText = TStream.ReadText(Length, TextEncoding, ref Length, true);
                tempTime = TStream.ReadUInt(4);

                _Syllables.Add(FrameID, new Syllable(tempTime, tempText));

                Length -= 4;
            }
        }
Beispiel #6
0
        /// <summary>
        /// Create new TextWithLanguageFrame
        /// </summary>
        /// <param name="FrameID">4 Characters tag identifier</param>
        /// <param name="Flags">2 Bytes flags identifier</param>
        /// <param name="Data">TagStream contains frame data</param>
        /// <param name="Length">Maximum available length for current frame is TagStream</param>
        public TextWithLanguageFrame(string FrameID, FrameFlags Flags, int Length, Stream FS)
            : base(FrameID, Flags, FS)
        {
            TStream      = new BreadPlayer.Tags.TagStreamUWP(FS);
            TextEncoding = (TextEncodings)TStream.FS.ReadByte();
            Length--;
            if (!IsValidEnumValue(TextEncoding, ExceptionLevels.Error, FrameID))
            {
                return;
            }

            _Language = new Language(TStream.FS);
            Length   -= 3;

            Description = TStream.ReadText(Length, TextEncoding, ref Length, true);

            Text = TStream.ReadText(Length, TextEncoding);
        }
        /// <summary>
        /// Create new GeneralFileFrame
        /// </summary>
        /// <param name="FrameID">4 Characters tag identifier</param>
        /// <param name="Flags">2 Bytes flags identifier</param>
        /// <param name="Data">Contain Data for this frame</param>
        /// <param name="Length">Maximum available length for this frame</param>
        public GeneralFileFrame(string FrameID, FrameFlags Flags, int Length, Stream FS)
            : base(FrameID, Flags, FS)
        {
            TStream       = new BreadPlayer.Tags.TagStreamUWP(FS);
            _TextEncoding = (TextEncodings)TStream.ReadByte(FS);
            Length--;
            if (!IsValidEnumValue(_TextEncoding, ExceptionLevels.Error, FrameID))
            {
                return;
            }

            _MIMEType = TStream.ReadText(Length, TextEncodings.Ascii, ref Length, true);

            _FileName = TStream.ReadText(Length, _TextEncoding, ref Length, true);

            _Description = TStream.ReadText(Length, _TextEncoding, ref Length, true);

            _Data = TStream.ReadData(Length);
        }
Beispiel #8
0
        /// <summary>
        /// Create new EventTimingCodeFrame
        /// </summary>
        /// <param name="FrameID">FrameID</param>
        /// <param name="Flags">Flags of frame</param>
        /// <param name="Data">TagStream to read data from</param>
        /// <param name="Length">Maximum available length</param>
        public EventTimingCodeFrame(string FrameID, FrameFlags Flags, int Length, Stream FS)
            : base(FrameID, Flags, FS)
        {
            _Events    = new FrameCollection <EventCode>("EventCode");
            TStream    = new BreadPlayer.Tags.TagStreamUWP(FS);
            _TimeStamp = (TimeStamps)TStream.ReadByte(FS);
            if (!IsValidEnumValue(_TimeStamp, ExceptionLevels.Error, FrameID))
            {
                return;
            }

            Length--;

            while (Length >= 5)
            {
                _Events.Add(FrameID, new EventCode(TStream.ReadByte(FS), TStream.ReadUInt(4)));

                Length -= 5;
            }
        }
 public Language(Stream FS)
 {
     TStream = new BreadPlayer.Tags.TagStreamUWP(FS);
     Read();
 }
Beispiel #10
0
        private string _Text; // Contain text of current frame

        /// <summary>
        /// Create new TextOnlyFrame
        /// </summary>
        /// <param name="FrameID">4 Characters tag identifier</param>
        /// <param name="Flags">Flags of current frame</param>
        protected TextOnlyFrame(string FrameID, FrameFlags Flags, Stream FS)
            : base(FrameID, Flags, FS)
        {
            TStream = new BreadPlayer.Tags.TagStreamUWP(FS);
        }
 /// <summary>
 /// New BinaryFrame
 /// </summary>
 /// <param name="FrameID">FrameID</param>
 /// <param name="Flags">Frame Flag</param>
 /// <param name="Data">FileStream contain frame data</param>
 /// <param name="Length">Maximum available length for this frame</param>
 public BinaryFrame(string FrameID, FrameFlags Flags, int Length, Stream FS)
     : base(FrameID, Flags, FS)
 {
     TStream = new BreadPlayer.Tags.TagStreamUWP(FS);
     _Data   = TStream.ReadData(Length);
 }