/// <summary> /// Create new Equalisation frame /// </summary> /// <param name="FrameID">4 characters frame identifer of current Frame class</param> /// <param name="Flags">Frame Flags</param> /// <param name="Data">TagStream to read frame from</param> /// <param name="Length">Maximum length to read frame</param> public Equalisation(string FrameID, FrameFlags Flags, int Length, Stream FS) : base(FrameID, Flags, FS) { _Frequensies = new FrameCollection <FrequencyAdjustmentFrame>("Frequency Adjustment"); TStream = new Macalifa.Tags.TagStreamUWP(FS); _AdjustmentBits = TStream.ReadByte(FS); Length--; if (_AdjustmentBits == 0) { ExceptionOccured(new ID3Exception("Adjustment bit of Equalisation is zero. this frame is invalid", FrameID, ExceptionLevels.Error)); return; } if (_AdjustmentBits % 8 != 0 || _AdjustmentBits > 32) { ExceptionOccured(new ID3Exception("AdjustmentBit of Equalisation Frame is out of supported range of this program", FrameID, ExceptionLevels.Error)); return; } int AdLen = _AdjustmentBits / 8; int FreqBuf; uint AdjBuf; while (Length > 3) { FreqBuf = Convert.ToInt32(TStream.ReadUInt(2)); AdjBuf = TStream.ReadUInt(AdLen); _Frequensies.Add(new FrequencyAdjustmentFrame(FreqBuf, AdjBuf)); Length -= 2 + AdLen; } }
/// <summary> /// Create new STempoCodes /// </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"></param> public SynchronisedTempoFrame(string FrameID, FrameFlags Flags, int Length, Stream FS) : base(FrameID, Flags, FS) { _TempoCodes = new FrameCollection <TempoCode>("Temnpo Codes"); TStream = new Macalifa.Tags.TagStreamUWP(FS); _TimeStamp = (TimeStamps)TStream.ReadByte(FS); if (IsValidEnumValue(_TimeStamp, ExceptionLevels.Error, FrameID)) { return; } int Tempo; uint Time; while (Length > 4) { Tempo = TStream.ReadByte(FS); Length--; if (Tempo == 0xFF) { Tempo += TStream.ReadByte(FS); Length--; } Time = TStream.ReadUInt(4); Length -= 4; _TempoCodes.Add(new TempoCode(Tempo, Time)); } }
/// <summary> /// New PrivateFrame /// </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 PrivateFrame(string FrameID, FrameFlags Flags, int Length, Stream FS) : base(FrameID, Flags, FS) { TStream = new Macalifa.Tags.TagStreamUWP(FS); _Owner = TStream.ReadText(Length, TextEncodings.Ascii, ref Length, true); _Data = TStream.ReadData(Length); // Read Data }
/// <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 Macalifa.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 Macalifa.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); }
/// <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 Macalifa.Tags.TagStreamUWP(FS); if (LoadData == true) { Load(); } }
/// <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 Macalifa.Tags.TagStreamUWP(FS); _FrameFlags = Flags; _FrameID = FrameID; _IsLinked = false; }
/// <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 Macalifa.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(new Syllable(tempTime, tempText)); Length -= 4; } }
/// <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 Macalifa.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 Macalifa.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); }
/// <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 Macalifa.Tags.TagStreamUWP(FS); _TimeStamp = (TimeStamps)TStream.ReadByte(FS); if (!IsValidEnumValue(_TimeStamp, ExceptionLevels.Error, FrameID)) { return; } Length--; while (Length >= 5) { _Events.Add(new EventCode(TStream.ReadByte(FS), TStream.ReadUInt(4))); Length -= 5; } }
/// <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 Macalifa.Tags.TagStreamUWP(FS); _Data = TStream.ReadData(Length); }
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 Macalifa.Tags.TagStreamUWP(FS); }
public Language(Stream FS) { TStream = new Macalifa.Tags.TagStreamUWP(FS); Read(); }