public virtual System.IO.MemoryStream getPackedPktHead(int tile)
{
if (pkdPktHeaders == null)
{
int i, t;
pkdPktHeaders = new System.IO.MemoryStream[nTiles];
for (i = nTiles - 1; i >= 0; i--)
{
pkdPktHeaders[i] = new System.IO.MemoryStream();
}
if (nPPMMarkSeg != 0)
{
// If this is first time packed packet headers are requested,
// create packed packet headers from Nppm and Ippm fields
int nppm;
int nTileParts = tileOfTileParts.Count;
byte[] temp;
System.IO.MemoryStream pph;
System.IO.MemoryStream allNppmIppm = new System.IO.MemoryStream();
// Concatenate all Nppm and Ippm fields
for (i = 0; i < nPPMMarkSeg; i++)
{
byte[] temp_byteArray;
temp_byteArray = pPMMarkerData[i];
allNppmIppm.Write(temp_byteArray, 0, temp_byteArray.Length);
}
pph = new System.IO.MemoryStream(allNppmIppm.ToArray());
// Read all packed packet headers and concatenate for each
// tile part
for (i = 0; i < nTileParts; i++)
{
t = ((System.Int32) tileOfTileParts[i]);
// get Nppm value
nppm = (pph.ReadByte() << 24) | (pph.ReadByte() << 16) | (pph.ReadByte() << 8) | (pph.ReadByte());
temp = new byte[nppm];
// get ippm field
pph.Read(temp, 0, temp.Length); //SupportClass.ReadInput(pph, temp, 0, temp.Length);
byte[] temp_byteArray2;
temp_byteArray2 = temp;
pkdPktHeaders[t].Write(temp_byteArray2, 0, temp_byteArray2.Length);
}
}
else
{
int tp;
// Write all packed packet headers to pkdPktHeaders
for (t = nTiles - 1; t >= 0; t--)
{
for (tp = 0; tp < nTileParts[t]; tp++)
{
for (i = 0; i < nPPTMarkSeg[t][tp]; i++)
{
byte[] temp_byteArray3;
temp_byteArray3 = tilePartPkdPktHeaders[t][tp][i];
pkdPktHeaders[t].Write(temp_byteArray3, 0, temp_byteArray3.Length);
}
}
}
}
}
return new System.IO.MemoryStream(pkdPktHeaders[tile].ToArray());
}