Chromium Code Reviews| 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); |