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); }