Chromium Code Reviews| Index: media/cast/net/rtcp/sender_rtcp_session.cc |
| diff --git a/media/cast/net/rtcp/sender_rtcp_session.cc b/media/cast/net/rtcp/sender_rtcp_session.cc |
| index e8d764f8d2aebbf83e226af60029e5b18dfc18d6..c7ac780cfd13b29030b578892f3cff35a4aebf30 100644 |
| --- a/media/cast/net/rtcp/sender_rtcp_session.cc |
| +++ b/media/cast/net/rtcp/sender_rtcp_session.cc |
| @@ -79,6 +79,7 @@ SenderRtcpSession::SenderRtcpSession( |
| const RtcpCastMessageCallback& cast_callback, |
| const RtcpRttCallback& rtt_callback, |
| const RtcpLogMessageCallback& log_callback, |
| + const RtcpPliCallback pli_callback, |
| base::TickClock* clock, |
| PacedPacketSender* packet_sender, |
| uint32_t local_ssrc, |
| @@ -90,6 +91,7 @@ SenderRtcpSession::SenderRtcpSession( |
| cast_callback_(cast_callback), |
| rtt_callback_(rtt_callback), |
| log_callback_(log_callback), |
| + pli_callback_(pli_callback), |
| largest_seen_timestamp_(base::TimeTicks::FromInternalValue( |
| std::numeric_limits<int64_t>::min())), |
| parser_(local_ssrc, remote_ssrc), |
| @@ -114,6 +116,11 @@ bool SenderRtcpSession::IncomingRtcpPacket(const uint8_t* data, size_t length) { |
| // Parse this packet. |
| base::BigEndianReader reader(reinterpret_cast<const char*>(data), length); |
| if (parser_.Parse(&reader)) { |
| + if (parser_.has_received_pli()) { |
| + OnReceivedPli(); |
| + return true; |
|
miu
2016/02/26 23:36:07
Don't return early. The parser may have other thi
xjz
2016/02/27 05:53:32
Done.
|
| + } |
| + |
| if (parser_.has_receiver_reference_time_report()) { |
| base::TimeTicks t = ConvertNtpToTimeTicks( |
| parser_.receiver_reference_time_report().ntp_seconds, |
| @@ -267,5 +274,11 @@ void SenderRtcpSession::OnReceivedReceiverLog( |
| log_callback_.Run(receiver_log); |
| } |
| +void SenderRtcpSession::OnReceivedPli() { |
| + if (pli_callback_.is_null()) |
| + return; |
| + pli_callback_.Run(); |
| +} |
| + |
| } // namespace cast |
| } // namespace media |