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();
}
private SemaphoreSlim queueLock=new SemaphoreSlim(1);