public static ulong Ebml_Write_Uint_With_Id(this BinaryWriter writer, ulong id, ulong val)
{
int bytes = UintSize(val);
writer.Ebml_Write_Id(id);
writer.Ebml_Write_Num((ulong)bytes);
ulong pos = (ulong)writer.BaseStream.Position;
for (int i = bytes - 1; i >= 0; i--)
writer.Write((byte)(val >> (i * 8)));
return pos;
}