| 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;
|
| }
|
|
|
|
|