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);
    }
 }