webrtc调试RtpEncodingParameters类中的network_priority和bitrate_priority参数,作用在音频RTP发送包中。

参数分析:

network_priority:此编码的相对区分服务代码点优先级,允许在不影响带宽分配的情况下将数据包标记为相对较高或较低。

在webrtc_voice_engine.cc的WebRtcAudioSendStream类中可以观察到

config_.has_dscp =
        rtp_parameters_.encodings[0].network_priority != webrtc::Priority::kLow;

说明此参数影响到dscp,通过SetRtpSendParameters函数设置dscp优先级,贴出此函数部分源码

switch (parameters.encodings[0].network_priority) {
  case webrtc::Priority::kVeryLow:
    new_dscp = rtc::DSCP_CS1;
    break;
  case webrtc::Priority::kLow:
    new_dscp = rtc::DSCP_DEFAULT;
    break;
  case webrtc::Priority::kMedium:
    new_dscp = rtc::DSCP_EF;
    break;
  case webrtc::Priority::kHigh:
    new_dscp = rtc::DSCP_EF;
    break;
}
SetPreferredDscp(new_dscp);  // 调用UpdateDscp() --> 将首选DSCP设置应用于底层网络接口RTP和RTCP通道。如果禁用了DSCP,则应用默认DSCP值(即DSCP_DEFAULT)

bitrate_priority:此编码的相对比特率优先级。目前,这是通过使用第一个编码参数的值为整个rtp发送方实现的。根据编码参数实现此功能。目前,在VideoBitrateAllocator中,对于每个同播层的比特率分布有逻辑。必须对其进行更新以合并相对比特率优先级。

个人理解为: Priority network_priority的4个等级对应double bitrate_priority的4个数值

enum class Priority {
  kVeryLow,    //   -->   bitrate_priority = 0.5
  kLow,             //   -->   bitrate_priority = 1.0
  kMedium,    //   -->   bitrate_priority = 2.0
  kHigh,           //   -->   bitrate_priority = 4.0
};

调试:

WebRtcAudioSendStream对象的创建在WebRtcVoiceMediaChannel::AddSendStream函数中,为了调试方便,直接在此函数下调用WebRtcVoiceMediaChannel::SetRtpSendParameters

在函数尾部添加
webrtc::RtpParameters test_parameters = send_streams_[ssrc]->rtp_parameters(); //获取已初始化的参数
test_parameters.encodings[0].network_priority = webrtc::Priority::kHigh;
test_parameters.encodings[0].bitrate_priority = 4.0;
WebRtcVoiceMediaChannel::SetRtpSendParameters(ssrc, test_parameters); //修改RtpSend参数
send_streams_[ssrc]->SetRtpParameters(test_parameters);

直接强制修改enable_dscp_为true使得SetPreferredDscp(new_dscp)能够生效

MediaChannel::MediaChannel(const MediaConfig& config)
    : enable_dscp_(true) {}
    //: enable_dscp_(config.enable_dscp) {}   

抓包验证:

image-20211012175518908

image-20211012175550138

音频的RTP包,dscp优先级为EF,视频的RTP包,dscp优先级仍为默认的CS0

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值