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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_sender.cc

Issue 1262153003: Use RtcpPacket to send PLI in RtcpSender (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Formatting Created 5 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtcp_sender.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc
index 55ca9a72f98a6b538d2955ce6b143329db551d8d..6967754fe62f737e73f450314da31bf1ebd9dcdd 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc
@@ -120,6 +120,11 @@ class RTCPSender::PacketBuiltCallback
void OnPacketReady(uint8_t* data, size_t length) override {
context_->position += length;
}
+ bool BuildPacket(const rtcp::RtcpPacket& packet) {
+ return packet.BuildExternalBuffer(
+ &context_->buffer[context_->position],
+ context_->buffer_size - context_->position, this);
+ }
private:
RtcpContext* const context_;
@@ -501,11 +506,8 @@ RTCPSender::BuildResult RTCPSender::BuildSR(RtcpContext* ctx) {
report.WithReportBlock(it.second);
PacketBuiltCallback callback(ctx);
- if (!report.BuildExternalBuffer(&ctx->buffer[ctx->position],
- ctx->buffer_size - ctx->position,
- &callback)) {
+ if (!callback.BuildPacket(report))
return BuildResult::kTruncated;
- }
report_blocks_.clear();
return BuildResult::kSuccess;
@@ -522,10 +524,8 @@ RTCPSender::BuildResult RTCPSender::BuildSDES(RtcpContext* ctx) {
sdes.WithCName(it.first, it.second);
PacketBuiltCallback callback(ctx);
- if (!sdes.BuildExternalBuffer(&ctx->buffer[ctx->position],
- ctx->buffer_size - ctx->position, &callback)) {
+ if (!callback.BuildPacket(sdes))
return BuildResult::kTruncated;
- }
return BuildResult::kSuccess;
}
@@ -537,11 +537,8 @@ RTCPSender::BuildResult RTCPSender::BuildRR(RtcpContext* ctx) {
report.WithReportBlock(it.second);
PacketBuiltCallback callback(ctx);
- if (!report.BuildExternalBuffer(&ctx->buffer[ctx->position],
- ctx->buffer_size - ctx->position,
- &callback)) {
+ if (!callback.BuildPacket(report))
return BuildResult::kTruncated;
- }
report_blocks_.clear();
@@ -549,24 +546,13 @@ RTCPSender::BuildResult RTCPSender::BuildRR(RtcpContext* ctx) {
}
RTCPSender::BuildResult RTCPSender::BuildPLI(RtcpContext* ctx) {
- // sanity
- if (ctx->position + 12 >= IP_PACKET_SIZE)
- return BuildResult::kTruncated;
-
- // add picture loss indicator
- uint8_t FMT = 1;
- *ctx->AllocateData(1) = 0x80 + FMT;
- *ctx->AllocateData(1) = 206;
+ rtcp::Pli pli;
+ pli.From(ssrc_);
+ pli.To(remote_ssrc_);
- // Used fixed length of 2
- *ctx->AllocateData(1) = 0;
- *ctx->AllocateData(1) = 2;
-
- // Add our own SSRC
- ByteWriter<uint32_t>::WriteBigEndian(ctx->AllocateData(4), ssrc_);
-
- // Add the remote SSRC
- ByteWriter<uint32_t>::WriteBigEndian(ctx->AllocateData(4), remote_ssrc_);
+ PacketBuiltCallback callback(ctx);
+ if (!callback.BuildPacket(pli))
+ return BuildResult::kTruncated;
TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
"RTCPSender::PLI");
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698