public RTCPPacket(byte[] packet)
{
Header = new RTCPHeader(packet);
if (BitConverter.IsLittleEndian)
{
SenderSyncSource = NetConvert.DoReverseEndian(BitConverter.ToUInt32(packet, 4));
NTPTimestamp = NetConvert.DoReverseEndian(BitConverter.ToUInt64(packet, 8));
RTPTimestamp = NetConvert.DoReverseEndian(BitConverter.ToUInt32(packet, 16));
SenderPacketCount = NetConvert.DoReverseEndian(BitConverter.ToUInt32(packet, 20));
SenderOctetCount = NetConvert.DoReverseEndian(BitConverter.ToUInt32(packet, 24));
}
else
{
SenderSyncSource = BitConverter.ToUInt32(packet, 4);
NTPTimestamp = BitConverter.ToUInt64(packet, 8);
RTPTimestamp = BitConverter.ToUInt32(packet, 16);
SenderPacketCount = BitConverter.ToUInt32(packet, 20);
SenderOctetCount = BitConverter.ToUInt32(packet, 24);
}
Reports = new byte[packet.Length - RTCPHeader.HEADER_BYTES_LENGTH - SENDERINFO_BYTES_LENGTH];
Buffer.BlockCopy(packet, RTCPHeader.HEADER_BYTES_LENGTH + SENDERINFO_BYTES_LENGTH, Reports, 0, Reports.Length);
}