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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc

Issue 1806073002: rtcp::SenderReport updated to use rtcp::CommonHeader for parsing (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 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/sender_report.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc
index ab1863ed46bc973fa0037a75fdb142bd1e5139ac..2e7fc83456809cd058ccb192b476ddd2abfa47b6 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc
@@ -14,8 +14,6 @@
#include "webrtc/base/logging.h"
#include "webrtc/modules/rtp_rtcp/source/byte_io.h"
-using webrtc::RTCPUtility::RtcpCommonHeader;
-
namespace webrtc {
namespace rtcp {
// Sender report (SR) (RFC 3550).
@@ -43,17 +41,17 @@ SenderReport::SenderReport()
sender_packet_count_(0),
sender_octet_count_(0) {}
-bool SenderReport::Parse(const RtcpCommonHeader& header,
- const uint8_t* payload) {
- RTC_DCHECK(header.packet_type == kPacketType);
+bool SenderReport::Parse(const CommonHeader& packet) {
+ RTC_DCHECK(packet.type() == kPacketType);
- const uint8_t report_block_count = header.count_or_format;
- if (header.payload_size_bytes <
+ const uint8_t report_block_count = packet.count();
+ if (packet.payload_size_bytes() <
kSenderBaseLength + report_block_count * ReportBlock::kLength) {
LOG(LS_WARNING) << "Packet is too small to contain all the data.";
return false;
}
// Read SenderReport header.
+ const uint8_t* const payload = packet.payload();
sender_ssrc_ = ByteReader<uint32_t>::ReadBigEndian(&payload[0]);
uint32_t secs = ByteReader<uint32_t>::ReadBigEndian(&payload[4]);
uint32_t frac = ByteReader<uint32_t>::ReadBigEndian(&payload[8]);
@@ -69,14 +67,15 @@ bool SenderReport::Parse(const RtcpCommonHeader& header,
next_block += ReportBlock::kLength;
}
// Double check we didn't read beyond provided buffer.
- RTC_DCHECK_LE(next_block, payload + header.payload_size_bytes);
+ RTC_DCHECK_EQ(next_block - payload,
+ static_cast<ptrdiff_t>(packet.payload_size_bytes()));
return true;
}
bool SenderReport::Create(uint8_t* packet,
size_t* index,
size_t max_length,
- RtcpPacket::PacketReadyCallback* callback) const {
+ PacketReadyCallback* callback) const {
while (*index + BlockLength() > max_length) {
if (!OnBufferFull(packet, index, callback))
return false;

Powered by Google App Engine
This is Rietveld 408576698