private TagTypes ReadTagInfo(ref long position) { if ((position - read_size) >= 0L) { this.file.Seek(position - read_size); ByteVector vector = this.file.ReadBlock(read_size); try { int offset = vector.Count - ((int) 0x20L); if (vector.ContainsAt(TagLib.Ape.Footer.FileIdentifier, offset)) { TagLib.Ape.Footer footer = new TagLib.Ape.Footer(vector.Mid(offset)); if ((footer.CompleteTagSize == 0) || ((footer.Flags & FooterFlags.IsHeader) != ((FooterFlags) 0))) { return TagTypes.None; } position -= footer.CompleteTagSize; return (TagTypes.None | TagTypes.Ape); } offset = vector.Count - ((int) 10L); if (vector.ContainsAt(TagLib.Id3v2.Footer.FileIdentifier, offset)) { TagLib.Id3v2.Footer footer2 = new TagLib.Id3v2.Footer(vector.Mid(offset)); position -= footer2.CompleteTagSize; return (TagTypes.None | TagTypes.Id3v2); } if (vector.StartsWith(TagLib.Id3v1.Tag.FileIdentifier)) { position -= 0x80L; return (TagTypes.None | TagTypes.Id3v1); } } catch (CorruptFileException) { } } return TagTypes.None; }
private TagTypes ReadTagInfo(ref long position) { this.file.Seek(position); ByteVector data = this.file.ReadBlock(this.read_size); try { if (data.StartsWith(TagLib.Ape.Footer.FileIdentifier)) { TagLib.Ape.Footer footer = new TagLib.Ape.Footer(data); position += footer.CompleteTagSize; return (TagTypes.None | TagTypes.Ape); } if (data.StartsWith(Header.FileIdentifier)) { Header header = new Header(data); position += header.CompleteTagSize; return (TagTypes.None | TagTypes.Id3v2); } } catch (CorruptFileException) { } return TagTypes.None; }