Index: webrtc/modules/rtp_rtcp/source/rtcp_packet.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc |
index 7c0650c488cf87183842f6f7cafcf7c834607ef0..525071f19c46ab2ad9fbb65acdb6da748c04a150 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc |
@@ -50,7 +50,6 @@ using webrtc::RTCPUtility::RTCPPacketSR; |
using webrtc::RTCPUtility::RTCPPacketXRDLRRReportBlockItem; |
using webrtc::RTCPUtility::RTCPPacketXRReceiverReferenceTimeItem; |
using webrtc::RTCPUtility::RTCPPacketXR; |
-using webrtc::RTCPUtility::RTCPPacketXRVOIPMetricItem; |
namespace webrtc { |
namespace rtcp { |
@@ -569,62 +568,6 @@ void CreateDlrr(const std::vector<Xr::DlrrBlock>& dlrrs, |
} |
} |
} |
- |
-// VoIP Metrics Report Block (RFC 3611). |
-// |
-// 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 |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | BT=7 | reserved | block length = 8 | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | SSRC of source | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | loss rate | discard rate | burst density | gap density | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | burst duration | gap duration | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | round trip delay | end system delay | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | signal level | noise level | RERL | Gmin | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | R factor | ext. R factor | MOS-LQ | MOS-CQ | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | RX config | reserved | JB nominal | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
-// | JB maximum | JB abs max | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
- |
-void CreateVoipMetric(const std::vector<RTCPPacketXRVOIPMetricItem>& metrics, |
- uint8_t* buffer, |
- size_t* pos) { |
- const uint16_t kBlockLength = 8; |
- for (std::vector<RTCPPacketXRVOIPMetricItem>::const_iterator it = |
- metrics.begin(); it != metrics.end(); ++it) { |
- CreateXrBlockHeader(kBtVoipMetric, kBlockLength, buffer, pos); |
- AssignUWord32(buffer, pos, (*it).SSRC); |
- AssignUWord8(buffer, pos, (*it).lossRate); |
- AssignUWord8(buffer, pos, (*it).discardRate); |
- AssignUWord8(buffer, pos, (*it).burstDensity); |
- AssignUWord8(buffer, pos, (*it).gapDensity); |
- AssignUWord16(buffer, pos, (*it).burstDuration); |
- AssignUWord16(buffer, pos, (*it).gapDuration); |
- AssignUWord16(buffer, pos, (*it).roundTripDelay); |
- AssignUWord16(buffer, pos, (*it).endSystemDelay); |
- AssignUWord8(buffer, pos, (*it).signalLevel); |
- AssignUWord8(buffer, pos, (*it).noiseLevel); |
- AssignUWord8(buffer, pos, (*it).RERL); |
- AssignUWord8(buffer, pos, (*it).Gmin); |
- AssignUWord8(buffer, pos, (*it).Rfactor); |
- AssignUWord8(buffer, pos, (*it).extRfactor); |
- AssignUWord8(buffer, pos, (*it).MOSLQ); |
- AssignUWord8(buffer, pos, (*it).MOSCQ); |
- AssignUWord8(buffer, pos, (*it).RXconfig); |
- AssignUWord8(buffer, pos, 0); |
- AssignUWord16(buffer, pos, (*it).JBnominal); |
- AssignUWord16(buffer, pos, (*it).JBmax); |
- AssignUWord16(buffer, pos, (*it).JBabsMax); |
- } |
-} |
} // namespace |
void RtcpPacket::Append(RtcpPacket* packet) { |
@@ -1080,7 +1023,10 @@ bool Xr::Create(uint8_t* packet, |
CreateXrHeader(xr_header_, packet, index); |
CreateRrtr(rrtr_blocks_, packet, index); |
CreateDlrr(dlrr_blocks_, packet, index); |
- CreateVoipMetric(voip_metric_blocks_, packet, index); |
+ for (const VoipMetric& block : voip_metric_blocks_) { |
+ block.Create(packet + *index); |
+ *index += VoipMetric::kLength; |
+ } |
return true; |
} |
@@ -1110,7 +1056,7 @@ bool Xr::WithVoipMetric(VoipMetric* voip_metric) { |
LOG(LS_WARNING) << "Max Voip Metric blocks reached."; |
return false; |
} |
- voip_metric_blocks_.push_back(voip_metric->metric_); |
+ voip_metric_blocks_.push_back(*voip_metric); |
return true; |
} |