public AviHeaderList(TagLib.File file, long position, int length) { if (file == null) { throw new ArgumentNullException("file"); } List list = new List(file, position, length); if (!list.ContainsKey("avih")) { throw new CorruptFileException("Avi header not found."); } ByteVector header_data = list ["avih"][0]; if (header_data.Count != 0x38) { throw new CorruptFileException("Invalid header length."); } header = new AviHeader(header_data); foreach (ByteVector list_data in list["LIST"]) { if (list_data.StartsWith("strl")) { codecs.Add(AviStream.ParseStreamList(list_data).Codec); } } }
/// <summary> /// Constructs and initializes a new instance of <see /// cref="AviHeaderList" /> by reading the contents of a raw /// RIFF list from a specified position in a <see /// cref="TagLib.File"/>. /// </summary> /// <param name="file"> /// A <see cref="TagLib.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 list. /// </param> /// <param name="length"> /// A <see cref="int" /> value specifying the number of bytes /// to read. /// </param> /// <exception cref="ArgumentNullException"> /// <paramref name="file" /> is <see langword="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 list does not contain an AVI header or the AVI header /// is the wrong length. /// </exception> public AviHeaderList(TagLib.File file, long position, int length) { if (file == null) { throw new ArgumentNullException(nameof(file)); } if (length < 0) { throw new ArgumentOutOfRangeException(nameof(length)); } if (position < 0 || position > file.Length - length) { throw new ArgumentOutOfRangeException(nameof(position)); } List list = new List(file, position, length); if (!list.ContainsKey("avih")) { throw new CorruptFileException("Avi header not found."); } ByteVector header_data = list["avih"][0]; if (header_data.Count != 0x38) { throw new CorruptFileException("Invalid header length."); } Header = new AviHeader(header_data, 0); foreach (ByteVector list_data in list["LIST"]) { if (list_data.StartsWith("strl")) { AviStream stream = AviStream.ParseStreamList(list_data); if (stream != null) { codecs.Add(stream.Codec); } } } }
public AviHeaderList(TagLib.File file, long position, int length) { if (file == null) { throw new ArgumentNullException("file"); } if (length < 0) { throw new ArgumentOutOfRangeException("length"); } if ((position < 0L) || (position > (file.Length - length))) { throw new ArgumentOutOfRangeException("position"); } List list = new List(file, position, length); if (!list.ContainsKey("avih")) { throw new CorruptFileException("Avi header not found."); } ByteVector data = list["avih"][0]; if (data.Count != 0x38) { throw new CorruptFileException("Invalid header length."); } this.header = new AviHeader(data, 0); IEnumerator<ByteVector> enumerator = list["LIST"].GetEnumerator(); try { while (enumerator.MoveNext()) { ByteVector current = enumerator.Current; if (current.StartsWith("strl")) { this.codecs.Add(AviStream.ParseStreamList(current).Codec); } } } finally { if (enumerator == null) { } enumerator.Dispose(); } }
public AviHeaderList (TagLib.File file, long position, int length) { if (file == null) throw new ArgumentNullException ("file"); List list = new List (file, position, length); if (!list.ContainsKey ("avih")) throw new CorruptFileException ("Avi header not found."); ByteVector header_data = list ["avih"][0]; if (header_data.Count != 0x38) throw new CorruptFileException ("Invalid header length."); header = new AviHeader (header_data); foreach (ByteVector list_data in list ["LIST"]) { if (list_data.StartsWith ("strl")) codecs.Add (AviStream.ParseStreamList (list_data).Codec); } }