public static bool Validate(byte[] buffer, int offset, int length) { return(0 == ~(int)Crc32Msb.Compute(buffer, offset, length)); }
internal void Add(TsPacket packet) { if (null == packet) { return; } int bufferOffset = packet.BufferOffset; int num1 = bufferOffset; byte[] buffer = packet.Buffer; int bufferLength = packet.BufferLength; if (bufferLength < 4) { return; } byte[] numArray1 = buffer; int index1 = num1; int num2 = 1; int num3 = index1 + num2 + (int)numArray1[index1]; if (num3 + 4 >= bufferOffset + bufferLength) { return; } int offset1 = num3; byte[] numArray2 = buffer; int index2 = num3; int num4 = 1; int index3 = index2 + num4; if ((int)this._tableId != (int)numArray2[index2]) { return; } int num5 = (int)buffer[index3] << 8 | (int)buffer[index3 + 1]; int num6 = index3 + 2; bool flag = 0 != (num5 & 32768); if (0 != (num5 & 16384)) { return; } int num7 = num5 & 4095; if (num7 > 1021 || num7 + num6 - bufferOffset > bufferLength) { return; } int length1 = num7 + num6 - offset1; if (!Crc32Msb.Validate(buffer, offset1, length1)) { return; } int offset2 = num6; int length2 = num7 - 4; this.ParseSection(packet, offset2, length2); }