private async Task ProcessFragment(Stream s, int fragment)
{
BoxReader reader = new BoxReader(s);
string name;
while (reader.BaseStream.Position != reader.BaseStream.Length)
{
long size = reader.ReadHeader(out name);
if (name == "abst")
{
reader.ReadBootStrap(bootstrap);
}
else if (name == "mdat")
{
long max = reader.BaseStream.Position + size;
List <Tag> tags = new List <Tag>();
while (reader.BaseStream.Position != max)
{
tags.Add(await GetNextTag(reader.BaseStream));
}
await QueueTags(tags, fragment);
}
else
{
reader.BaseStream.Seek(size, SeekOrigin.Current);
}
}
reader.Dispose();
}