CSJ2K.j2k.codestream.reader.HeaderDecoder.getPackedPktHead C# (CSharp) Метод

getPackedPktHead() публичный Метод

Return the packed packet headers for a given tile.
If an I/O error occurs while reading from the /// encoder header stream /// ///
public getPackedPktHead ( int tile ) : System.IO.MemoryStream
tile int
Результат System.IO.MemoryStream
        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());
        }