public PictureFrame(FrameHeader header, ID3Version version) : base(header) { if (version == ID3Version.ID3v1) throw new InvalidEnumArgumentException("version", (int)version, typeof(ID3Version)); _version = version; }
public Frame GetFrame(FrameHeader header, ID3Version version, Stream stream) { var frame = GetFrame(header.FrameID, version, header); frame.DecodeContent(ID3Utils.Read(stream, header.FrameSize)); return(frame); }
public ID3v2ExtendedHeader(Stream stream, ID3Version version) { if (stream == null) { throw new ArgumentNullException("stream"); } if (!stream.CanRead) { throw new ArgumentException("stream not readable"); } Version = version; if (version == ID3Version.ID3v2_3) { Parse3(stream); } else if (version == ID3Version.ID3v2_4) { Parse4(stream); } else { throw new ID3Exception("Invalid version in extendedheader"); } }
public FrameHeader(Stream stream, ID3Version version) { if (stream == null) { throw new ArgumentNullException("stream"); } if (!stream.CanRead) { throw new ArgumentException("stream is not readable"); } switch (version) { case ID3Version.ID3v2_2: Parse2(stream); break; case ID3Version.ID3v2_3: Parse3(stream); break; case ID3Version.ID3v2_4: Parse4(stream); break; default: throw new ID3Exception("Invalid ID3Version in Frameheader"); } }
internal static string GetID(FrameID id, ID3Version version) { var entry = Frames.Where((x) => x.ID == id); if (entry != null && entry.Count() > 0) { var e = entry.First(); string sid = null; if (version == ID3Version.ID3v2_2) { sid = e.ID3v2ID; } else if (version == ID3Version.ID3v2_3) { sid = e.ID3v3ID; } else if (version == ID3Version.ID3v2_4) { sid = e.ID3v4ID; } else { throw new InvalidOperationException(String.Format("FrameID {0} is not supported on version {1}", id, version)); } if (sid == null) { throw new InvalidOperationException(String.Format("FrameID {0} is not supported on version {1}", id, version)); } return(sid); } throw new ArgumentException("Invalid FrameID: " + id.ToString()); }
public PictureFrame(FrameHeader header, ID3Version version) : base(header) { if (version == ID3Version.ID3v1) { throw new InvalidEnumArgumentException("version", (int)version, typeof(ID3Version)); } _version = version; }
public PictureFrame(FrameHeader header, ID3Version version) : base(header) { if (version == ID3Version.ID3v1) { throw new NotSupportedException(string.Format("ID3Version.ID3v1 is not supported")); } _version = version; }
public ID3v2ExtendedHeader(Stream stream, ID3Version version) { if (stream == null) throw new ArgumentNullException("stream"); if (!stream.CanRead) throw new ArgumentException("stream not readable"); Version = version; if (version == ID3Version.ID3v2_3) Parse3(stream); else if (version == ID3Version.ID3v2_4) Parse4(stream); else throw new ID3Exception("Invalid version in extendedheader"); }
public Frame TryGetFrame(FrameHeader header, ID3Version version, Stream stream, out bool result) { try { result = true; var frame = GetFrame(header, version, stream); return frame; } catch (Exception) { result = false; return null; } }
public Frame TryGetFrame(FrameHeader header, ID3Version version, Stream stream, out bool result) { try { result = true; var frame = GetFrame(header, version, stream); return(frame); } catch (Exception) { result = false; return(null); } }
public static ID3v2FrameEntry GetFrameEntry(string id, ID3Version version) { switch (version) { case ID3Version.ID3v1: throw new ArgumentException("version"); case ID3Version.ID3v2_2: return Frames.Where((x) => !String.IsNullOrEmpty(x.ID3v2ID) && x.ID3v2ID.Equals(id, StringComparison.InvariantCultureIgnoreCase)).First(); case ID3Version.ID3v2_3: return Frames.Where((x) => !String.IsNullOrEmpty(x.ID3v3ID) && x.ID3v3ID.Equals(id, StringComparison.InvariantCultureIgnoreCase)).First(); case ID3Version.ID3v2_4: return Frames.Where((x) => !String.IsNullOrEmpty(x.ID3v4ID) && x.ID3v4ID.Equals(id, StringComparison.InvariantCultureIgnoreCase)).First(); default: throw new ArgumentException("Unknown version"); } }
public FrameHeader(Stream stream, ID3Version version) { if (stream == null) throw new ArgumentNullException("stream"); if (!stream.CanRead) throw new ArgumentException("stream is not readable"); switch (version) { case ID3Version.ID3v2_2: Parse2(stream); break; case ID3Version.ID3v2_3: Parse3(stream); break; case ID3Version.ID3v2_4: Parse4(stream); break; default: throw new ID3Exception("Invalid ID3Version in Frameheader"); } }
public static string GetID(FrameID frameId, ID3Version version) { if (version == ID3Version.ID3v1) throw new ArgumentOutOfRangeException("ID3v1 does not support frames"); string id = String.Empty; //http://id3.org/id3v2.3.0 switch (frameId) { case FrameID.AudioEnctryption: id = "AENC"; break; case FrameID.AttachedPicutre: id = "APIC"; break; case FrameID.Comments: id = "COMM"; break; case FrameID.CommercialFrame: id = "COMR"; break; case FrameID.EncryptionMethodRegistration: id = "ENCR"; break; case FrameID.Equalization: id = "EQUA"; break; case FrameID.EventTimeingCodes: id = "ETCO"; break; case FrameID.GeneralEncapsulatedObject: id = "GEOB"; break; case FrameID.GroupIdentificationRegistration: id = "GRID"; break; case FrameID.InvolvedPeopleList: if (version == ID3Version.ID3v2_4) id = "TIPL"; break; id = "IPLS"; break; case FrameID.LinkedInformation: id = "LINK"; break; case FrameID.MusicCDIdentifier: id = "MCDI"; break; case FrameID.MPEGLocationLookupTable: id = "MLLT"; break; case FrameID.OwnershipFrame: id = "OWNE"; break; case FrameID.PrivateFrame: id = "PRIV"; break; case FrameID.PlayCounter: id = "PCNT"; break; case FrameID.Popularimeter: id = "POPM"; break; case FrameID.PositionSynchronisationFrame: id = "POSS"; break; case FrameID.RecommendedBufferSize: id = "RBUF"; break; case FrameID.RelativeVolumeAdjustment: id = "RVAD"; break; case FrameID.Reverb: id = "RVRB"; break; case FrameID.SynchronizedLyrics: id = "SYLT"; break; case FrameID.SynchronizedTempoCodes: id = "SYTC"; break; case FrameID.Album: id = "TALB"; break; case FrameID.BeatsPerMinute: id = "TBPM"; break; case FrameID.Composer: id = "TCOM"; break; case FrameID.ContentType: id = "TCON"; break; case FrameID.CopyrightMessage: id = "TCOP"; break; case FrameID.Date: id = "TDAT"; break; case FrameID.PlaylistDelay: id = "TDLY"; break; case FrameID.EncodedBy: id = "TENC"; break; case FrameID.TextWriter: id = "TEXT"; break; case FrameID.FileType: id = "TFLT"; break; case FrameID.Time: id = "TIME"; break; case FrameID.ContentGroupDescription: id = "TIT1"; break; case FrameID.Title: id = "TIT2"; break; case FrameID.Subtitle: id = "TIT3"; break; case FrameID.InitialKey: id = "TKEY"; break; case FrameID.Languages: id = "TLAN"; break; case FrameID.Length: id = "TLEN"; break; case FrameID.MediaType: id = "TMED"; break; case FrameID.OriginalAlbum: id = "TOAL"; break; case FrameID.OriginalFileName: id = "TOFN"; break; case FrameID.OriginalTextWriter: id = "TOLY"; break; case FrameID.OriginalArtist: id = "TOPE"; break; case FrameID.OriginalReleaseYear: id = "TORY"; break; case FrameID.FileOwner: id = "TOWN"; break; case FrameID.LeadPerformers: id = "TPE1"; break; case FrameID.Band: id = "TPE2"; break; case FrameID.Conductor: id = "TPE3"; break; case FrameID.Interpreted: id = "TPE4"; break; case FrameID.PartOfASet: id = "TPOS"; break; case FrameID.Publisher: id = "TPUB"; break; case FrameID.TrackNumber: id = "TRCK"; break; case FrameID.RecordingDates: id = "TRDA"; break; case FrameID.InternetRadioStationName: id = "TRSN"; break; case FrameID.InternetRadioStationOwner: id = "TRSO"; break; case FrameID.Size: id = "TSIZ"; break; case FrameID.ISRC: id = "TSRC"; break; case FrameID.EncodingSettings: id = "TSSE"; break; case FrameID.Year: id = "TYER"; break; case FrameID.UserTextInformation: id = "TXXX"; break; case FrameID.UniqueFileIdentifier: id = "UFID"; break; case FrameID.TermsOfUse: id = "USER"; break; case FrameID.UnsynchronizedLyris: id = "USLT"; break; case FrameID.CommercialInformationURL: id = "WCOM"; break; case FrameID.CopyrightURL: id = "WCOP"; break; case FrameID.OfficialAudioFileWebpage: id = "WOAF"; break; case FrameID.OfficialArtistWebpage: id = "WOAR"; break; case FrameID.OfficialAudioSourceWebpage: id = "WOAS"; break; case FrameID.InternetRadioStationWebpage: id = "WORS"; break; case FrameID.PaymentURL: id = "WPAY"; break; case FrameID.PublishersOfficialWebpage: id = "WPUB"; break; case FrameID.UserURLLinkFrame: id = "WXXX"; break; case FrameID.MusicicanCreditsList: id = "TMCL"; break; case FrameID.Mood: id = "TMOO"; break; case FrameID.ProducedNotice: id = "TPRO"; break; case FrameID.AlbumSortOrder: id = "TSOA"; break; case FrameID.PerformerSortOrder: id = "TSOP"; break; case FrameID.TitleSortOrder: id = "TSOT"; break; case FrameID.SetSubtitle: id = "TSST"; break; default: throw new ArgumentOutOfRangeException("frameid", "Invalid FrameID"); } if (version == ID3Version.ID3v2_2) { id = ConvertVersion3IDToVersion2(id); } return id; }
public static string GetID(FrameID frameId, ID3Version version) { if (version == ID3Version.ID3v1) { throw new ArgumentOutOfRangeException("ID3v1 does not support frames"); } string id = String.Empty; //http://id3.org/id3v2.3.0 switch (frameId) { case FrameID.AudioEnctryption: id = "AENC"; break; case FrameID.AttachedPicutre: id = "APIC"; break; case FrameID.Comments: id = "COMM"; break; case FrameID.CommercialFrame: id = "COMR"; break; case FrameID.EncryptionMethodRegistration: id = "ENCR"; break; case FrameID.Equalization: id = "EQUA"; break; case FrameID.EventTimeingCodes: id = "ETCO"; break; case FrameID.GeneralEncapsulatedObject: id = "GEOB"; break; case FrameID.GroupIdentificationRegistration: id = "GRID"; break; case FrameID.InvolvedPeopleList: if (version == ID3Version.ID3v2_4) { id = "TIPL"; } break; id = "IPLS"; break; case FrameID.LinkedInformation: id = "LINK"; break; case FrameID.MusicCDIdentifier: id = "MCDI"; break; case FrameID.MPEGLocationLookupTable: id = "MLLT"; break; case FrameID.OwnershipFrame: id = "OWNE"; break; case FrameID.PrivateFrame: id = "PRIV"; break; case FrameID.PlayCounter: id = "PCNT"; break; case FrameID.Popularimeter: id = "POPM"; break; case FrameID.PositionSynchronisationFrame: id = "POSS"; break; case FrameID.RecommendedBufferSize: id = "RBUF"; break; case FrameID.RelativeVolumeAdjustment: id = "RVAD"; break; case FrameID.Reverb: id = "RVRB"; break; case FrameID.SynchronizedLyrics: id = "SYLT"; break; case FrameID.SynchronizedTempoCodes: id = "SYTC"; break; case FrameID.Album: id = "TALB"; break; case FrameID.BeatsPerMinute: id = "TBPM"; break; case FrameID.Composer: id = "TCOM"; break; case FrameID.ContentType: id = "TCON"; break; case FrameID.CopyrightMessage: id = "TCOP"; break; case FrameID.Date: id = "TDAT"; break; case FrameID.PlaylistDelay: id = "TDLY"; break; case FrameID.EncodedBy: id = "TENC"; break; case FrameID.TextWriter: id = "TEXT"; break; case FrameID.FileType: id = "TFLT"; break; case FrameID.Time: id = "TIME"; break; case FrameID.ContentGroupDescription: id = "TIT1"; break; case FrameID.Title: id = "TIT2"; break; case FrameID.Subtitle: id = "TIT3"; break; case FrameID.InitialKey: id = "TKEY"; break; case FrameID.Languages: id = "TLAN"; break; case FrameID.Length: id = "TLEN"; break; case FrameID.MediaType: id = "TMED"; break; case FrameID.OriginalAlbum: id = "TOAL"; break; case FrameID.OriginalFileName: id = "TOFN"; break; case FrameID.OriginalTextWriter: id = "TOLY"; break; case FrameID.OriginalArtist: id = "TOPE"; break; case FrameID.OriginalReleaseYear: id = "TORY"; break; case FrameID.FileOwner: id = "TOWN"; break; case FrameID.LeadPerformers: id = "TPE1"; break; case FrameID.Band: id = "TPE2"; break; case FrameID.Conductor: id = "TPE3"; break; case FrameID.Interpreted: id = "TPE4"; break; case FrameID.PartOfASet: id = "TPOS"; break; case FrameID.Publisher: id = "TPUB"; break; case FrameID.TrackNumber: id = "TRCK"; break; case FrameID.RecordingDates: id = "TRDA"; break; case FrameID.InternetRadioStationName: id = "TRSN"; break; case FrameID.InternetRadioStationOwner: id = "TRSO"; break; case FrameID.Size: id = "TSIZ"; break; case FrameID.ISRC: id = "TSRC"; break; case FrameID.EncodingSettings: id = "TSSE"; break; case FrameID.Year: id = "TYER"; break; case FrameID.UserTextInformation: id = "TXXX"; break; case FrameID.UniqueFileIdentifier: id = "UFID"; break; case FrameID.TermsOfUse: id = "USER"; break; case FrameID.UnsynchronizedLyris: id = "USLT"; break; case FrameID.CommercialInformationURL: id = "WCOM"; break; case FrameID.CopyrightURL: id = "WCOP"; break; case FrameID.OfficialAudioFileWebpage: id = "WOAF"; break; case FrameID.OfficialArtistWebpage: id = "WOAR"; break; case FrameID.OfficialAudioSourceWebpage: id = "WOAS"; break; case FrameID.InternetRadioStationWebpage: id = "WORS"; break; case FrameID.PaymentURL: id = "WPAY"; break; case FrameID.PublishersOfficialWebpage: id = "WPUB"; break; case FrameID.UserURLLinkFrame: id = "WXXX"; break; case FrameID.MusicicanCreditsList: id = "TMCL"; break; case FrameID.Mood: id = "TMOO"; break; case FrameID.ProducedNotice: id = "TPRO"; break; case FrameID.AlbumSortOrder: id = "TSOA"; break; case FrameID.PerformerSortOrder: id = "TSOP"; break; case FrameID.TitleSortOrder: id = "TSOT"; break; case FrameID.SetSubtitle: id = "TSST"; break; default: throw new ArgumentOutOfRangeException("frameid", "Invalid FrameID"); } if (version == ID3Version.ID3v2_2) { id = ConvertVersion3IDToVersion2(id); } return(id); }
private Frame GetFrame(string id, ID3Version version, FrameHeader header) { FrameID frameID = FrameIDFactory.GetFrameEntry(id, version).ID; switch (frameID) { case FrameID.Length: case FrameID.EncodedBy: //--- case FrameID.Album: case FrameID.Composer: case FrameID.ContentType: case FrameID.CopyrightMessage: case FrameID.TextWriter: case FrameID.FileType: case FrameID.ContentGroupDescription: case FrameID.Title: case FrameID.Subtitle: case FrameID.InitialKey: case FrameID.Languages: case FrameID.MediaType: case FrameID.OriginalAlbum: case FrameID.OriginalFileName: case FrameID.OriginalTextWriter: case FrameID.OriginalArtist: case FrameID.FileOwner: case FrameID.LeadPerformers: //-- case FrameID.Band: case FrameID.Conductor: case FrameID.Interpreted: //remixed case FrameID.PartOfASet: case FrameID.Publisher: case FrameID.TrackNumber: case FrameID.RecordingDates: case FrameID.InternetRadioStationName: case FrameID.InternetRadioStationOwner: case FrameID.ISRC: case FrameID.EncodingSettings: case FrameID.MusicicanCreditsList: case FrameID.InvolvedPeopleList: case FrameID.Mood: case FrameID.ProducedNotice: case FrameID.AlbumSortOrder: case FrameID.PerformerSortOrder: case FrameID.TitleSortOrder: case FrameID.SetSubtitle: return(new MultiStringTextFrame(header)); //multistringtextframe case FrameID.Size: //--- case FrameID.BeatsPerMinute: case FrameID.Date: case FrameID.PlaylistDelay: case FrameID.Time: case FrameID.OriginalReleaseYear: case FrameID.Year: return(new NumericTextFrame(header)); //numerictextframe case FrameID.RecordingTime: case FrameID.OriginalReleaseTime: case FrameID.EncodingTime: case FrameID.ReleaseTime: case FrameID.TaggingTime: return(new TimestampTextFrame(header)); //Timestamptextframe case FrameID.CommercialInformationURL: case FrameID.CopyrightURL: case FrameID.OfficialAudioFileWebpage: case FrameID.OfficialArtistWebpage: case FrameID.OfficialAudioSourceWebpage: case FrameID.InternetRadioStationWebpage: case FrameID.PaymentURL: case FrameID.PublishersOfficialWebpage: return(new TextFrame(header)); //textframe case FrameID.PrivateFrame: case FrameID.UniqueFileIdentifier: return(new DataFrame(header)); case FrameID.MusicCDIdentifier: case FrameID.RecommendedBufferSize: //--- case FrameID.EncryptedMetaData: case FrameID.AudioSeekPointIndex: case FrameID.MPEGLocationLookupTable: case FrameID.SynchronizedTempoCodes: case FrameID.RelativeVolumeAdjustment: case FrameID.RelativeVolumeAdjustmentOld: case FrameID.Equalization: case FrameID.EqualizationOld: return(new BinaryFrame(header)); case FrameID.UserTextInformation: case FrameID.UserURLLinkFrame: return(new UserDefiniedTextFrame(header)); case FrameID.AttachedPicutre: return(new PictureFrame(header, version)); case FrameID.UnsynchronizedLyris: case FrameID.Comments: return(new CommentAndLyricsFrame(header)); case FrameID.TermsOfUse: return(new TermsOfUseFrame(header)); case FrameID.OwnershipFrame: return(new OwnershipFrame(header)); case FrameID.CommercialFrame: return(new CommercialFrame(header)); case FrameID.Popularimeter: return(new Popularimeter(header)); } return(null); }
public static FrameID GetFrameType(string frameID, ID3Version version) { if (version == ID3Version.ID3v1) { throw new ArgumentOutOfRangeException("ID3v1 does not support frames"); } if (version == ID3Version.ID3v2_2) { frameID = ConvertVersion2IDToVersion3(frameID); } switch (frameID) { case "AENC": return(FrameID.AudioEnctryption); case "APIC": return(FrameID.AttachedPicutre); case "COMM": return(FrameID.Comments); case "COMR": return(FrameID.CommercialFrame); case "ENCR": return(FrameID.EncryptionMethodRegistration); case "EQUA": return(FrameID.Equalization); case "ETCO": return(FrameID.EventTimeingCodes); case "GEOB": return(FrameID.GeneralEncapsulatedObject); case "GRID": return(FrameID.GroupIdentificationRegistration); case "IPLS": case "TIPL": return(FrameID.InvolvedPeopleList); case "LINK": return(FrameID.LinkedInformation); case "MCDI": return(FrameID.MusicCDIdentifier); case "MLLT": return(FrameID.MPEGLocationLookupTable); case "OWNE": return(FrameID.OwnershipFrame); case "PRIV": return(FrameID.PrivateFrame); case "PCNT": return(FrameID.PlayCounter); case "POPM": return(FrameID.Popularimeter); case "POSS": return(FrameID.PositionSynchronisationFrame); case "RBUF": return(FrameID.RecommendedBufferSize); case "RVAD": return(FrameID.RelativeVolumeAdjustment); case "RVRB": return(FrameID.Reverb); case "SYLT": return(FrameID.SynchronizedLyrics); case "SYTC": return(FrameID.SynchronizedTempoCodes); case "TALB": return(FrameID.Album); case "TBPM": return(FrameID.BeatsPerMinute); case "TCOM": return(FrameID.Composer); case "TCON": return(FrameID.ContentType); case "TCOP": return(FrameID.CopyrightMessage); case "TDAT": return(FrameID.Date); case "TDLY": return(FrameID.PlaylistDelay); case "TENC": return(FrameID.EncodedBy); case "TEXT": return(FrameID.TextWriter); case "TFLT": return(FrameID.FileType); case "TIME": return(FrameID.Time); case "TIT1": return(FrameID.ContentGroupDescription); case "TIT2": return(FrameID.Title); case "TIT3": return(FrameID.Subtitle); case "TKEY": return(FrameID.InitialKey); case "TLAN": return(FrameID.Languages); case "TLEN": return(FrameID.Length); case "TMED": return(FrameID.MediaType); case "TOAL": return(FrameID.OriginalAlbum); case "TOFN": return(FrameID.OriginalFileName); case "TOLY": return(FrameID.OriginalTextWriter); case "TOPE": return(FrameID.OriginalArtist); case "TORY": return(FrameID.OriginalReleaseYear); case "TPE1": return(FrameID.LeadPerformers); case "TPE2": return(FrameID.Band); case "TPE3": return(FrameID.Conductor); case "TPE4": return(FrameID.Interpreted); case "TPOS": return(FrameID.PartOfASet); case "TPUB": return(FrameID.Publisher); case "TRCK": return(FrameID.TrackNumber); case "TRDA": return(FrameID.RecordingDates); case "TRSN": return(FrameID.InternetRadioStationName); case "TRSO": return(FrameID.InternetRadioStationOwner); case "TSIZ": return(FrameID.Size); case "TSRC": return(FrameID.ISRC); case "TSSE": return(FrameID.EncodingSettings); case "TYER": return(FrameID.Year); case "TXXX": return(FrameID.UserTextInformation); case "UFID": return(FrameID.UniqueFileIdentifier); case "USER": return(FrameID.TermsOfUse); case "USLT": return(FrameID.UnsynchronizedLyris); case "WCOM": return(FrameID.CommercialInformationURL); case "WCOP": return(FrameID.CopyrightURL); case "WOAF": return(FrameID.OfficialAudioFileWebpage); case "WOAR": return(FrameID.OfficialArtistWebpage); case "WOAS": return(FrameID.OfficialAudioSourceWebpage); case "WORS": return(FrameID.InternetRadioStationWebpage); case "WPAY": return(FrameID.PaymentURL); case "WPUB": return(FrameID.PublishersOfficialWebpage); case "WXXX": return(FrameID.UserURLLinkFrame); case "TMCL": return(FrameID.MusicicanCreditsList); case "TMOO": return(FrameID.Mood); case "TPRO": return(FrameID.ProducedNotice); case "TSOA": return(FrameID.AlbumSortOrder); case "TSOP": return(FrameID.PerformerSortOrder); case "TSOT": return(FrameID.TitleSortOrder); case "TSST": return(FrameID.SetSubtitle); default: throw new ArgumentOutOfRangeException("frameid", "Invalid FrameID"); } }
internal static string GetID(FrameID id, ID3Version version) { var entry = Frames.Where((x) => x.ID == id); if (entry != null && entry.Count() > 0) { var e = entry.First(); string sid = null; if (version == ID3Version.ID3v2_2) sid = e.ID3v2ID; else if (version == ID3Version.ID3v2_3) sid = e.ID3v3ID; else if (version == ID3Version.ID3v2_4) sid = e.ID3v4ID; else throw new InvalidOperationException(String.Format("FrameID {0} is not supported on version {1}", id, version)); if (sid == null) throw new InvalidOperationException(String.Format("FrameID {0} is not supported on version {1}", id, version)); return sid; } throw new ArgumentException("Invalid FrameID: " + id.ToString()); }
private Frame GetFrame(string id, ID3Version version, FrameHeader header) { FrameID frameID = FrameIDFactory2.GetFrameEntry(id, version).ID; switch (frameID) { case FrameID.Length: case FrameID.EncodedBy://--- case FrameID.Album: case FrameID.Composer: case FrameID.ContentType: case FrameID.CopyrightMessage: case FrameID.TextWriter: case FrameID.FileType: case FrameID.ContentGroupDescription: case FrameID.Title: case FrameID.Subtitle: case FrameID.InitialKey: case FrameID.Languages: case FrameID.MediaType: case FrameID.OriginalAlbum: case FrameID.OriginalFileName: case FrameID.OriginalTextWriter: case FrameID.OriginalArtist: case FrameID.FileOwner: case FrameID.LeadPerformers: //-- case FrameID.Band: case FrameID.Conductor: case FrameID.Interpreted: //remixed case FrameID.PartOfASet: case FrameID.Publisher: case FrameID.TrackNumber: case FrameID.RecordingDates: case FrameID.InternetRadioStationName: case FrameID.InternetRadioStationOwner: case FrameID.ISRC: case FrameID.EncodingSettings: case FrameID.MusicicanCreditsList: case FrameID.InvolvedPeopleList: case FrameID.Mood: case FrameID.ProducedNotice: case FrameID.AlbumSortOrder: case FrameID.PerformerSortOrder: case FrameID.TitleSortOrder: case FrameID.SetSubtitle: return new MultiStringTextFrame(header); //multistringtextframe case FrameID.Size://--- case FrameID.BeatsPerMinute: case FrameID.Date: case FrameID.PlaylistDelay: case FrameID.Time: case FrameID.OriginalReleaseYear: case FrameID.Year: return new NumericTextFrame(header); //numerictextframe case FrameID.RecordingTime: case FrameID.OriginalReleaseTime: case FrameID.EncodingTime: case FrameID.ReleaseTime: case FrameID.TaggingTime: return new TimestampTextFrame(header); //Timestamptextframe case FrameID.CommercialInformationURL: case FrameID.CopyrightURL: case FrameID.OfficialAudioFileWebpage: case FrameID.OfficialArtistWebpage: case FrameID.OfficialAudioSourceWebpage: case FrameID.InternetRadioStationWebpage: case FrameID.PaymentURL: case FrameID.PublishersOfficialWebpage: return new TextFrame(header); //textframe case FrameID.PrivateFrame: case FrameID.UniqueFileIdentifier: return new DataFrame(header); case FrameID.MusicCDIdentifier: case FrameID.RecommendedBufferSize: //--- case FrameID.EncryptedMetaData: case FrameID.AudioSeekPointIndex: case FrameID.MPEGLocationLookupTable: case FrameID.SynchronizedTempoCodes: case FrameID.RelativeVolumeAdjustment: case FrameID.RelativeVolumeAdjustmentOld: case FrameID.Equalization: case FrameID.EqualizationOld: return new BinaryFrame(header); case FrameID.UserTextInformation: case FrameID.UserURLLinkFrame: return new UserDefiniedTextFrame(header); case FrameID.AttachedPicutre: return new PictureFrame(header, version); case FrameID.UnsynchronizedLyris: case FrameID.Comments: return new CommentAndLyricsFrame(header); case FrameID.TermsOfUse: return new TermsOfUseFrame(header); case FrameID.OwnershipFrame: return new OwnershipFrame(header); case FrameID.CommercialFrame: return new CommercialFrame(header); case FrameID.Popularimeter: return new Popularimeter(header); } return null; }
public static FrameID GetFrameType(string frameID, ID3Version version) { if (version == ID3Version.ID3v1) throw new ArgumentOutOfRangeException("ID3v1 does not support frames"); if (version == ID3Version.ID3v2_2) frameID = ConvertVersion2IDToVersion3(frameID); switch (frameID) { case "AENC": return FrameID.AudioEnctryption; case "APIC": return FrameID.AttachedPicutre; case "COMM": return FrameID.Comments; case "COMR": return FrameID.CommercialFrame; case "ENCR": return FrameID.EncryptionMethodRegistration; case "EQUA": return FrameID.Equalization; case "ETCO": return FrameID.EventTimeingCodes; case "GEOB": return FrameID.GeneralEncapsulatedObject; case "GRID": return FrameID.GroupIdentificationRegistration; case "IPLS": case "TIPL": return FrameID.InvolvedPeopleList; case "LINK": return FrameID.LinkedInformation; case "MCDI": return FrameID.MusicCDIdentifier; case "MLLT": return FrameID.MPEGLocationLookupTable; case "OWNE": return FrameID.OwnershipFrame; case "PRIV": return FrameID.PrivateFrame; case "PCNT": return FrameID.PlayCounter; case "POPM": return FrameID.Popularimeter; case "POSS": return FrameID.PositionSynchronisationFrame; case "RBUF": return FrameID.RecommendedBufferSize; case "RVAD": return FrameID.RelativeVolumeAdjustment; case "RVRB": return FrameID.Reverb; case "SYLT": return FrameID.SynchronizedLyrics; case "SYTC": return FrameID.SynchronizedTempoCodes; case "TALB": return FrameID.Album; case "TBPM": return FrameID.BeatsPerMinute; case "TCOM": return FrameID.Composer; case "TCON": return FrameID.ContentType; case "TCOP": return FrameID.CopyrightMessage; case "TDAT": return FrameID.Date; case "TDLY": return FrameID.PlaylistDelay; case "TENC": return FrameID.EncodedBy; case "TEXT": return FrameID.TextWriter; case "TFLT": return FrameID.FileType; case "TIME": return FrameID.Time; case "TIT1": return FrameID.ContentGroupDescription; case "TIT2": return FrameID.Title; case "TIT3": return FrameID.Subtitle; case "TKEY": return FrameID.InitialKey; case "TLAN": return FrameID.Languages; case "TLEN": return FrameID.Length; case "TMED": return FrameID.MediaType; case "TOAL": return FrameID.OriginalAlbum; case "TOFN": return FrameID.OriginalFileName; case "TOLY": return FrameID.OriginalTextWriter; case "TOPE": return FrameID.OriginalArtist; case "TORY": return FrameID.OriginalReleaseYear; case "TPE1": return FrameID.LeadPerformers; case "TPE2": return FrameID.Band; case "TPE3": return FrameID.Conductor; case "TPE4": return FrameID.Interpreted; case "TPOS": return FrameID.PartOfASet; case "TPUB": return FrameID.Publisher; case "TRCK": return FrameID.TrackNumber; case "TRDA": return FrameID.RecordingDates; case "TRSN": return FrameID.InternetRadioStationName; case "TRSO": return FrameID.InternetRadioStationOwner; case "TSIZ": return FrameID.Size; case "TSRC": return FrameID.ISRC; case "TSSE": return FrameID.EncodingSettings; case "TYER": return FrameID.Year; case "TXXX": return FrameID.UserTextInformation; case "UFID": return FrameID.UniqueFileIdentifier; case "USER": return FrameID.TermsOfUse; case "USLT": return FrameID.UnsynchronizedLyris; case "WCOM": return FrameID.CommercialInformationURL; case "WCOP": return FrameID.CopyrightURL; case "WOAF": return FrameID.OfficialAudioFileWebpage; case "WOAR": return FrameID.OfficialArtistWebpage; case "WOAS": return FrameID.OfficialAudioSourceWebpage; case "WORS": return FrameID.InternetRadioStationWebpage; case "WPAY": return FrameID.PaymentURL; case "WPUB": return FrameID.PublishersOfficialWebpage; case "WXXX": return FrameID.UserURLLinkFrame; case "TMCL": return FrameID.MusicicanCreditsList; case "TMOO": return FrameID.Mood; case "TPRO": return FrameID.ProducedNotice; case "TSOA": return FrameID.AlbumSortOrder; case "TSOP": return FrameID.PerformerSortOrder; case "TSOT": return FrameID.TitleSortOrder; case "TSST": return FrameID.SetSubtitle; default: throw new ArgumentOutOfRangeException("frameid", "Invalid FrameID"); } }
public Frame GetFrame(FrameHeader header, ID3Version version, Stream stream) { var frame = GetFrame(header.FrameID, version, header); frame.DecodeContent(ID3Utils.Read(stream, header.FrameSize)); return frame; }