| 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) {
|
| + 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);
|
|
|