Index: media/cast/net/rtcp/rtcp_builder.cc |
diff --git a/media/cast/net/rtcp/rtcp_builder.cc b/media/cast/net/rtcp/rtcp_builder.cc |
index cd7652307837fa64314ba4607b7c62d34c0954e6..bcedc7d2f3974771a7adc72d0eda040a086aad9f 100644 |
--- a/media/cast/net/rtcp/rtcp_builder.cc |
+++ b/media/cast/net/rtcp/rtcp_builder.cc |
@@ -165,6 +165,7 @@ PacketRef RtcpBuilder::BuildRtcpFromReceiver( |
const RtcpReportBlock* report_block, |
const RtcpReceiverReferenceTimeReport* rrtr, |
const RtcpCastMessage* cast_message, |
+ const RtcpPliMessage* pli_message, |
const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, |
base::TimeDelta target_delay) { |
Start(); |
@@ -175,6 +176,8 @@ PacketRef RtcpBuilder::BuildRtcpFromReceiver( |
AddRrtr(rrtr); |
if (cast_message) |
AddCast(cast_message, target_delay); |
+ if (pli_message) |
+ AddPli(pli_message); |
if (rtcp_events) |
AddReceiverLog(*rtcp_events); |
@@ -227,12 +230,18 @@ void RtcpBuilder::AddRrtr(const RtcpReceiverReferenceTimeReport* rrtr) { |
writer_.WriteU32(rrtr->ntp_fraction); |
} |
+void RtcpBuilder::AddPli(const RtcpPliMessage* pli_message) { |
dcheng
2016/03/01 23:44:12
How about const RtcpPliMessage&? This should never
xjz
2016/03/02 04:24:17
Done.
|
+ AddRtcpHeader(kPacketTypePayloadSpecific, 1); |
+ writer_.WriteU32(ssrc_); |
+ writer_.WriteU32(pli_message->remote_ssrc); |
+} |
+ |
void RtcpBuilder::AddCast(const RtcpCastMessage* cast, |
base::TimeDelta target_delay) { |
// See RTC 4585 Section 6.4 for application specific feedback messages. |
AddRtcpHeader(kPacketTypePayloadSpecific, 15); |
writer_.WriteU32(ssrc_); // Add our own SSRC. |
- writer_.WriteU32(cast->media_ssrc); // Remote SSRC. |
+ writer_.WriteU32(cast->remote_ssrc); // Remote SSRC. |
writer_.WriteU32(kCast); |
writer_.WriteU8(static_cast<uint8_t>(cast->ack_frame_id)); |
uint8_t* cast_loss_field_pos = reinterpret_cast<uint8_t*>(writer_.ptr()); |
@@ -288,8 +297,7 @@ void RtcpBuilder::AddCast(const RtcpCastMessage* cast, |
} |
} |
VLOG_IF(1, !nack_string_builder.Empty()) |
- << "SSRC: " << cast->media_ssrc |
- << ", ACK: " << cast->ack_frame_id |
+ << "SSRC: " << cast->remote_ssrc << ", ACK: " << cast->ack_frame_id |
<< ", NACK: " << nack_string_builder.GetString(); |
DCHECK_LE(number_of_loss_fields, kRtcpMaxCastLossFields); |
*cast_loss_field_pos = static_cast<uint8_t>(number_of_loss_fields); |