public void Read()
{
if(path == null)
return;
FileStream fs = new FileStream(path, FileMode.Open,FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
uint n = 0;
uint len = (uint)fs.Length;
nClips = 0;
while (n < len)
{
fs.Seek(n, SeekOrigin.Begin);
uint header = br.ReadUInt32() & 0xFFFFFF;
if (header != 0x503846)
return;
fs.Seek(2, SeekOrigin.Current);
_mClips[nClips].Frames = br.ReadUInt16();
n += 8;
fs.Seek(n+8, SeekOrigin.Begin);
fs.Seek(_mClips[nClips].Frames*0x2C+(0x2C-8), SeekOrigin.Current);
header = br.ReadUInt32() & 0xFFFFFF;
if (header != 0x4B4942)
return;
_mClips[nClips].Resolutions[0].Offset = (uint)fs.Position-4;
_mClips[nClips].Resolutions[0].Size = br.ReadUInt32();
_mClips[nClips].Frames = br.ReadUInt32();
_mClips[nClips].Resolutions[0].Size += 8;
n = _mClips[nClips].Resolutions[0].Size + _mClips[nClips].Resolutions[0].Offset;
fs.Seek(n, SeekOrigin.Begin);
header = br.ReadUInt32() & 0xFFFFFF;
if(header != 0x4B4942)
return;
_mClips[nClips].Resolutions[1].Offset = _mClips[nClips].Resolutions[0].Offset + _mClips[nClips].Resolutions[0].Size;
_mClips[nClips].Resolutions[1].Size = br.ReadUInt32();
_mClips[nClips].Resolutions[1].Size += 8;
n += _mClips[nClips].Resolutions[1].Size;
nClips++;
}
bSuccess = true;
br.Dispose();
fs.Dispose();
}