// 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) return false;
int pl_type;
if (!GetRtcpType(data, len, &pl_type)) return false; // SDES packet parsing is not supported.
if (pl_type == kRtcpTypeSDES) return false;
*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) { return false;
}
// 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.