Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h

Issue 1557593002: [rtp_rtcp] rtcp::ExtenededReports packet got Parse function (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
index 6afac360e5f415f5fa8373669923c3682a69082b..92673935ea55003ce5683c4b5b1a4ad2b88be659 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
@@ -25,21 +25,28 @@ namespace rtcp {
// From RFC 3611: RTP Control Protocol Extended Reports (RTCP XR).
class ExtendedReports : public RtcpPacket {
public:
- typedef std::vector<RTCPUtility::RTCPPacketXRDLRRReportBlockItem> DlrrBlock;
- ExtendedReports() : RtcpPacket() {
- memset(&xr_header_, 0, sizeof(xr_header_));
- }
+ static const uint8_t kPacketType = 207;
- virtual ~ExtendedReports() {}
+ ExtendedReports();
+ ~ExtendedReports() override;
- void From(uint32_t ssrc) {
- xr_header_.OriginatorSSRC = ssrc;
- }
+ // Parse assumes header is already parsed and validated.
+ bool Parse(const RTCPUtility::RtcpCommonHeader& header,
+ const uint8_t* payload); // Size of the payload is in the header.
+
+ void From(uint32_t ssrc) { sender_ssrc_ = ssrc; }
// Max 50 items of each of {Rrtr, Dlrr, VoipMetric} allowed per Xr.
- bool WithRrtr(Rrtr* rrtr);
- bool WithDlrr(Dlrr* dlrr);
- bool WithVoipMetric(VoipMetric* voip_metric);
+ bool WithRrtr(const Rrtr& rrtr);
+ bool WithDlrr(const Dlrr& dlrr);
+ bool WithVoipMetric(const VoipMetric& voip_metric);
+
+ uint32_t sender_ssrc() const { return sender_ssrc_; }
+ const std::vector<Rrtr>& rrtrs() const { return rrtr_blocks_; }
+ const std::vector<Dlrr>& dlrrs() const { return dlrr_blocks_; }
+ const std::vector<VoipMetric>& voip_metrics() const {
+ return voip_metric_blocks_;
+ }
protected:
bool Create(uint8_t* packet,
@@ -48,31 +55,33 @@ class ExtendedReports : public RtcpPacket {
RtcpPacket::PacketReadyCallback* callback) const override;
private:
- static const int kMaxNumberOfRrtrBlocks = 50;
- static const int kMaxNumberOfDlrrBlocks = 50;
- static const int kMaxNumberOfVoipMetricBlocks = 50;
-
- size_t BlockLength() const {
- const size_t kXrHeaderLength = 8;
- return kXrHeaderLength + RrtrLength() + DlrrLength() + VoipMetricLength();
+ static const size_t kMaxNumberOfRrtrBlocks = 50;
+ static const size_t kMaxNumberOfDlrrBlocks = 50;
+ static const size_t kMaxNumberOfVoipMetricBlocks = 50;
+ static const size_t kXrHeaderLength = 4;
åsapersson 2016/01/29 12:46:09 maybe kXrBaseLength (since xr header is 8 bytes).
danilchap 2016/01/29 13:49:30 Done. My understanding where XR header starts didn
+
+ size_t BlockLength() const override {
+ return kHeaderLength + kXrHeaderLength + RrtrLength() + DlrrLength() +
+ VoipMetricLength();
}
size_t RrtrLength() const { return Rrtr::kLength * rrtr_blocks_.size(); }
-
size_t DlrrLength() const;
-
size_t VoipMetricLength() const {
return VoipMetric::kLength * voip_metric_blocks_.size();
}
- RTCPUtility::RTCPPacketXR xr_header_;
+ void ParseRrtrBlock(const uint8_t* block, uint16_t block_size);
+ void ParseDlrrBlock(const uint8_t* block, uint16_t block_size);
+ void ParseVoipMetricBlock(const uint8_t* block, uint16_t block_size);
+
+ uint32_t sender_ssrc_;
std::vector<Rrtr> rrtr_blocks_;
std::vector<Dlrr> dlrr_blocks_;
std::vector<VoipMetric> voip_metric_blocks_;
RTC_DISALLOW_COPY_AND_ASSIGN(ExtendedReports);
};
-
} // namespace rtcp
} // namespace webrtc
#endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_EXTENDED_REPORTS_H_

Powered by Google App Engine
This is Rietveld 408576698