public File (File.IFileAbstraction abstraction, ReadStyle propertiesStyle) : base (abstraction) { uint riff_size; long tag_start, tag_end; Mode = AccessMode.Read; try { Read (true, propertiesStyle, out riff_size, out tag_start, out tag_end); } finally { Mode = AccessMode.Closed; } TagTypesOnDisk = TagTypes; GetTag (TagTypes.Id3v2, true); GetTag (TagTypes.RiffInfo, true); GetTag (TagTypes.MovieId, true); GetTag (TagTypes.DivX, true); }
/// <summary> /// Constructs and initializes a new instance of <see /// cref="DivXTag" /> by reading the contents from a /// specified position in a specified file. /// </summary> /// <param name="file"> /// A <see cref="File" /> object containing the file from /// which the contents of the new instance is to be read. /// </param> /// <param name="position"> /// A <see cref="long" /> value specify at what position to /// read the tag. /// </param> /// <exception cref="ArgumentNullException"> /// <paramref name="file" /> is <see langref="null" />. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// <paramref name="position" /> is less than zero or greater /// than the size of the file. /// </exception> /// <exception cref="CorruptFileException"> /// The file does not contain the file identifier at the /// correct offset from the given position. /// </exception> public DivXTag (File file, long position) { if (file == null) throw new ArgumentNullException ("file"); file.Mode = TagLib.File.AccessMode.Read; if (position < 0 || position > file.Length - Size) throw new ArgumentOutOfRangeException ( "position"); file.Seek (position); // read the tag -- always 128 bytes ByteVector data = file.ReadBlock ((int) Size); // some initial sanity checking if (!data.EndsWith (FileIdentifier)) throw new CorruptFileException ( "DivX tag data does not end with identifier."); Parse (data); }
public File (File.IFileAbstraction abstraction) : this (abstraction, ReadStyle.Average) {}