/// <summary> /// Unpack the data in a packet. /// </summary> /// <param name="buffer">The buffer containing the packet.</param> /// <param name="offset">The offset to the first byte of the packet within the buffer.</param> public override void Parse(byte[] buffer, int offset) { base.Parse(buffer, offset); SynchronizationSource = Utils.Convert4BytesToInt(buffer, offset + 4); NPTTimeStamp = Utils.Convert8BytesToLong(buffer, offset + 8); RTPTimeStamp = Utils.Convert4BytesToInt(buffer, offset + 16); SenderPacketCount = Utils.Convert4BytesToInt(buffer, offset + 20); SenderOctetCount = Utils.Convert4BytesToInt(buffer, offset + 24); ReportBlocks = new Collection <ReportBlock>(); int index = 28; while (ReportBlocks.Count < ReportCount) { ReportBlock reportBlock = new ReportBlock(); reportBlock.Process(buffer, offset + index); ReportBlocks.Add(reportBlock); index += reportBlock.BlockLength; } if (index < Length) { ProfileExtension = new byte[Length - index]; for (int extensionIndex = 0; index < Length; index++) { ProfileExtension[extensionIndex] = buffer[offset + index]; extensionIndex++; } } }
/// <summary> /// /// </summary> /// <param name="buffer"></param> /// <param name="offset"></param> public override void Parse(byte[] buffer, int offset) { base.Parse(buffer, offset); SynchronizationSource = Utils.ConvertBytesToString(buffer, offset + 4, 4); ReportBlocks = new Collection <ReportBlock>(); int index = 8; while (ReportBlocks.Count < ReportCount) { ReportBlock reportBlock = new ReportBlock(); reportBlock.Process(buffer, offset + index); ReportBlocks.Add(reportBlock); index += reportBlock.BlockLength; } if (index < Length) { ProfileExtension = new byte[Length - index]; for (int extensionIndex = 0; index < Length; index++) { ProfileExtension[extensionIndex] = buffer[offset + index]; extensionIndex++; } } }