一、包发送优先级
Audio = 重传包 》视频包 = Fec包 》数据包二
int GetPriorityForType(RtpPacketMediaType type) {
// 较低的数字优先于较高的数字
switch (type) {
case RtpPacketMediaType::kAudio:
// 音频始终优先于其他数据包类型
return kFirstPriority + 1;
case RtpPacketMediaType::kRetransmission:
// 在新媒体之前发送重传
return kFirstPriority + 2;
case RtpPacketMediaType::kVideo:
case RtpPacketMediaType::kForwardErrorCorrection:
// 视频具有“正常”优先级,用老话说。同时向视频发送冗余。 如果延迟,它可能有一个有用的机会较低
return kFirstPriority + 3;
case RtpPacketMediaType::kPadding:
// 本身可能无用的数据包,仅发送以保持BWE高
return kFirstPriority + 4;
}
RTC_CHECK_NOTREACHED();
}
二、rtp协议
// 0 1 2 3
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 32位 uint8_t* buffer size_t size
// +-+-+-+-+