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 |