/// <summary> /// Parses a raw AVI stream list and returns the stream /// information. /// </summary> /// <param name="data"> /// A <see cref="ByteVector" /> object containing raw stream /// list. /// </param> /// <returns> /// A <see cref="AviStream" /> object containing stream /// information. /// </returns> public static AviStream ParseStreamList(ByteVector data) { if (data == null) { throw new ArgumentNullException(nameof(data)); } if (!data.StartsWith("strl")) { return(null); } AviStream stream = null; var pos = 4; while (pos + 8 < data.Count) { var id = data.Mid(pos, 4); var block_length = (int)data.Mid(pos + 4, 4) .ToUInt(false); if (id == "strh" && stream == null) { var stream_header = new AviStreamHeader(data, pos + 8); if (stream_header.Type == "vids") { stream = new AviVideoStream( stream_header); } else if (stream_header.Type == "auds") { stream = new AviAudioStream( stream_header); } } else if (stream != null) { stream.ParseItem(id, data, pos + 8, block_length); } pos += block_length + 8; } return(stream); }
/// <summary> /// Constructs and intializes a new instance of /// <see /// cref="AviVideoStream" /> /// with a specified stream header. /// </summary> /// <param name="header"> /// A <see cref="AviStreamHeader" /> object containing the /// stream's header. /// </param> public AviVideoStream(AviStreamHeader header) : base(header) { }
/// <summary> /// Constructs and intializes a new instance of /// <see /// cref="AviStream" /> /// with a specified stream header. /// </summary> /// <param name="header"> /// A <see cref="AviStreamHeader" /> object containing the /// stream's header. /// </param> protected AviStream(AviStreamHeader header) { Header = header; }
/// <summary> /// Constructs and intializes a new instance of /// <see /// cref="AviAudioStream" /> /// with a specified stream header. /// </summary> /// <param name="header"> /// A <see cref="AviStreamHeader" /> object containing the /// stream's header. /// </param> public AviAudioStream(AviStreamHeader header) : base(header) { }