// This method returns SSRC first of RTCP packet, except if packet is SDES. // TODO(mallinath) - Fully implement RFC 5506. This standard doesn't restrict // to send non-compound packets only to feedback messages. bool GetRtcpSsrc(constvoid* data, size_t len, uint32_t* value) { // Packet should be at least of 8 bytes, to get SSRC from a RTCP packet. if (!data || len < kMinRtcpPacketLen + 4 || !value) returnfalse; int pl_type; if (!GetRtcpType(data, len, &pl_type)) returnfalse; // SDES packet parsing is not supported. if (pl_type == kRtcpTypeSDES) returnfalse;
*value = GetBE32(
std::span<const uint8_t>(static_cast<const uint8_t*>(data) + 4, 4)); returntrue;
}
// If extension bit is not set, we are done with header processing, as input // length is verified above. if (!(rtp[0] & 0x10)) { if (header_length)
*header_length = header_length_without_extension;
returntrue;
}
if (header_length_without_extension + kRtpExtensionHeaderLen > length) { returnfalse;
}
// Getting extension profile length. // Length is in 32 bit words.
uint16_t extension_length_in_32bits =
GetBE16(rtp.subspan(header_length_without_extension + 2, 2));
size_t extension_length = extension_length_in_32bits * 4;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.