private void ParseDataPesPacket()
        {
            if (null == this._handler)
            {
                return;
            }
            TsPesPacket packet = this.CreatePacket(this._startIndex + 6, this._index - 6 - this._startIndex, 0UL, new ulong?());

            this._startIndex = this._index;
            this._handler(packet);
        }
        private TsPesPacket CreatePacket(int index, int length, ulong pts, ulong?dts)
        {
            Debug.Assert(length > 0);
            Debug.Assert(index >= 0);
            Debug.Assert(index + length <= this._bufferEntry.Buffer.Length);
            TsPesPacket tsPesPacket = this._pesPacketPool.AllocatePesPacket(this._bufferEntry);

            tsPesPacket.Index  = index;
            tsPesPacket.Length = length;
            tsPesPacket.PresentationTimestamp = this.PtsToTimestamp(pts);
            tsPesPacket.DecodeTimestamp       = dts.HasValue ? new TimeSpan?(this.PtsToTimestamp(dts.Value)) : new TimeSpan?();
            Debug.Assert(tsPesPacket.PresentationTimestamp >= TimeSpan.Zero);
            return(tsPesPacket);
        }
        private void ParseNormalPesPacket()
        {
            if (null == this._handler)
            {
                return;
            }
            int num1 = 6 + this._startIndex;

            byte[] numArray1 = this._bufferEntry.Buffer;
            byte[] numArray2 = numArray1;
            int    index1    = num1;
            int    num2      = 1;
            int    num3      = index1 + num2;
            byte   num4      = numArray2[index1];

            if (128 != ((int)num4 & 192))
            {
                return;
            }
            byte num5  = (byte)((int)num4 >> 4 & 3);
            bool flag1 = 0 != ((int)num4 & 8);
            bool flag2 = 0 != ((int)num4 & 4);
            bool flag3 = 0 != ((int)num4 & 2);
            bool flag4 = 0 != ((int)num4 & 1);

            byte[] numArray3 = numArray1;
            int    index2    = num3;
            int    num6      = 1;
            int    num7      = index2 + num6;
            byte   num8      = numArray3[index2];
            byte   num9      = (byte)((int)num8 >> 6 & 3);
            bool   flag5     = 0 != ((int)num8 & 32);
            bool   flag6     = 0 != ((int)num8 & 16);
            bool   flag7     = 0 != ((int)num8 & 8);
            bool   flag8     = 0 != ((int)num8 & 4);
            bool   flag9     = 0 != ((int)num8 & 2);
            bool   flag10    = 0 != ((int)num8 & 1);

            byte[] numArray4 = numArray1;
            int    index3    = num7;
            int    num10     = 1;
            int    num11     = index3 + num10;
            byte   num12     = numArray4[index3];
            int    index4    = num11 + (int)num12;

            if (1 == (int)num9)
            {
                return;
            }
            ulong num13 = 0;
            ulong?dts   = new ulong?();

            if (0 != (int)num9)
            {
                byte[] numArray5 = numArray1;
                int    index5    = num11;
                int    num14     = 1;
                int    num15     = index5 + num14;
                byte   num16     = numArray5[index5];
                if (2 == ((int)(byte)((uint)num16 >> 4) & -2))
                {
                    ;
                }
                if (0 == ((int)num16 & 1))
                {
                    return;
                }
                long   num17     = (long)((ulong)((int)num16 & 14) << 29);
                byte[] numArray6 = numArray1;
                int    index6    = num15;
                int    num18     = 1;
                int    num19     = index6 + num18;
                long   num20     = (long)((uint)numArray6[index6] << 22);
                ulong  num21     = (ulong)(num17 | num20);
                byte[] numArray7 = numArray1;
                int    index7    = num19;
                int    num22     = 1;
                int    num23     = index7 + num22;
                byte   num24     = numArray7[index7];
                if (0 == ((int)num24 & 1))
                {
                    return;
                }
                long   num25     = (long)(num21 | (ulong)(uint)(((int)num24 & 254) << 14));
                byte[] numArray8 = numArray1;
                int    index8    = num23;
                int    num26     = 1;
                int    num27     = index8 + num26;
                long   num28     = (long)((uint)numArray8[index8] << 7);
                ulong  num29     = (ulong)(num25 | num28);
                byte[] numArray9 = numArray1;
                int    index9    = num27;
                int    num30     = 1;
                num11 = index9 + num30;
                byte num31 = numArray9[index9];
                if (0 == ((int)num31 & 1))
                {
                    return;
                }
                num13 = num29 | (ulong)((uint)num31 >> 1);
                if (3 == (int)num9)
                {
                    byte[] numArray10 = numArray1;
                    int    index10    = num11;
                    int    num32      = 1;
                    int    num33      = index10 + num32;
                    byte   num34      = numArray10[index10];
                    if (1 == (int)(byte)((uint)num34 >> 4))
                    {
                        ;
                    }
                    if (0 == ((int)num34 & 1))
                    {
                        return;
                    }
                    dts = new ulong?((ulong)((int)num34 & 14) << 29);
                    ulong? nullable   = dts;
                    byte[] numArray11 = numArray1;
                    int    index11    = num33;
                    int    num35      = 1;
                    int    num36      = index11 + num35;
                    ulong  num37      = (ulong)((uint)numArray11[index11] << 22);
                    dts = nullable.HasValue ? new ulong?(nullable.GetValueOrDefault() | num37) : new ulong?();
                    byte[] numArray12 = numArray1;
                    int    index12    = num36;
                    int    num38      = 1;
                    int    num39      = index12 + num38;
                    byte   num40      = numArray12[index12];
                    if (0 == ((int)num40 & 1))
                    {
                        return;
                    }
                    nullable = dts;
                    ulong num41 = (ulong)(uint)(((int)num40 & 254) << 14);
                    dts      = nullable.HasValue ? new ulong?(nullable.GetValueOrDefault() | num41) : new ulong?();
                    nullable = dts;
                    byte[] numArray13 = numArray1;
                    int    index13    = num39;
                    int    num42      = 1;
                    int    num43      = index13 + num42;
                    ulong  num44      = (ulong)((uint)numArray13[index13] << 7);
                    dts = nullable.HasValue ? new ulong?(nullable.GetValueOrDefault() | num44) : new ulong?();
                    byte[] numArray14 = numArray1;
                    int    index14    = num43;
                    int    num45      = 1;
                    num11 = index14 + num45;
                    byte num46 = numArray14[index14];
                    if (0 == ((int)num46 & 1))
                    {
                        return;
                    }
                    nullable = dts;
                    ulong num47 = (ulong)((uint)num46 >> 1);
                    dts = nullable.HasValue ? new ulong?(nullable.GetValueOrDefault() | num47) : new ulong?();
                }
            }
            if (flag5)
            {
                num11 += 5;
            }
            if (flag6)
            {
                num11 += 3;
            }
            if (flag7)
            {
                ++num11;
            }
            if (flag8)
            {
                ++num11;
            }
            if (flag9)
            {
                int num48 = num11 + 2;
            }
            if (!flag10)
            {
                ;
            }
            if (null == this._pts)
            {
                this._pts = new RegisterExtender(num13, 33);
            }
            else
            {
                num13 = this._pts.Extend(num13);
            }
            if (dts.HasValue)
            {
                dts = new ulong?(this._pts.Extend(dts.Value));
            }
            TsPesPacket packet = this.CreatePacket(index4, this._index - index4, num13, dts);

            this._startIndex = this._index;
            this._handler(packet);
        }