3
public class IsoChunkLargeOffsetBox : FullBox
5
#region Private Properties
6
private ulong [] offsets;
10
public IsoChunkLargeOffsetBox (BoxHeader header, File file, Box handler) : base (header, file, handler)
12
ByteVector box_data = LoadData (file);
14
offsets = new ulong [(int) box_data.Mid (0, 4).ToUInt ()];
16
for (int i = 0; i < offsets.Length; i ++)
17
offsets [i] = (ulong) box_data.Mid (4 + i * 8, 8).ToLong ();
21
#region Public Methods
22
public void Overwrite (File file, long size_difference, long after)
24
if (Header.Position < 0)
25
throw new System.Exception ("Cannot overwrite headers created from ByteVectors.");
27
file.Insert (Render (size_difference, after), Header.Position, Size);
30
public ByteVector Render (long size_difference, long after)
32
ByteVector output = ByteVector.FromUInt ((uint) offsets.Length);
33
for (int i = 0; i < offsets.Length; i ++)
35
if (offsets [i] >= (ulong) after)
36
offsets [i] = (ulong) ((long)offsets [i] + size_difference);
37
output.Add (ByteVector.FromLong ((long) offsets [i]));
40
return Render (output);
43
public override ByteVector Render ()
49
#region Public Properties
50
public ulong [] Offsets {get {return offsets;}}