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..3a5648b76d92845ac6b8df985b62b2f45db04ce0 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,8 @@ 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_picture_loss_indicator()) |
+ OnReceivedPli(); |
Irfan
2016/02/29 16:01:23
For readability, perhaps a few of these OnReceived
xjz
2016/02/29 19:48:58
Done.
|
if (parser_.has_receiver_reference_time_report()) { |
base::TimeTicks t = ConvertNtpToTimeTicks( |
parser_.receiver_reference_time_report().ntp_seconds, |
@@ -267,5 +271,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 |