public EBML(Element element)
: this()
{
this.Element = element;
using (var s = new MemoryStream(this.Element.Data)) {
while (s.Position < s.Length)
{
var elt = Element.ReadHeader(s);
if (elt.ID.BinaryEquals(Elements.EBMLVersion))
{
this.Version = (int)Element.ReadUInt(s, elt.Size.Value);
}
else if (elt.ID.BinaryEquals(Elements.EBMLReadVersion))
{
this.ReadVersion = (int)Element.ReadUInt(s, elt.Size.Value);
}
else if (elt.ID.BinaryEquals(Elements.EBMLMaxIDLength))
{
this.MaxIDLength = (int)Element.ReadUInt(s, elt.Size.Value);
}
else if (elt.ID.BinaryEquals(Elements.EBMLMaxSizeLength))
{
this.MaxSizeLength = (int)Element.ReadUInt(s, elt.Size.Value);
}
else if (elt.ID.BinaryEquals(Elements.DocType))
{
this.DocType = Element.ReadString(s, elt.Size.Value);
}
else if (elt.ID.BinaryEquals(Elements.DocTypeVersion))
{
this.DocTypeVersion = (int)Element.ReadUInt(s, elt.Size.Value);
}
else if (elt.ID.BinaryEquals(Elements.DocTypeReadVersion))
{
this.DocTypeReadVersion = (int)Element.ReadUInt(s, elt.Size.Value);
}
else
{
elt.ReadBody(s);
}
}
}
}