public static async Task <MetadataItemsBox> CreateAsync(IBinaryStream stream, Box box) { if (!box.IsContainer) { throw new FormatException(); } var metadataItemsBox = new MetadataItemsBox(); foreach (var subbox in box.Boxes) { switch (subbox.Name) { case "covr": var data = subbox.Boxes.FirstOrDefault(a => a.Name == "data"); if (data != null) { metadataItemsBox.Cover = (await MetadataValueBox.CreateAsync(stream, data).ConfigureAwait(false)).DataLocation; } break; default: break; } } return(metadataItemsBox); }
public static Task <MetadataValueBox> CreateAsync(IBinaryStream stream, Box box) { var metadataValueBox = new MetadataValueBox(); stream.Position = box.Offset + 8; stream.Position += 8; // TypeIndicator + LocaleIndicator metadataValueBox.DataLocation = new DataLocation(stream.Position, box.Length - stream.Position); return(Task.FromResult(metadataValueBox)); }