| Index: webrtc/modules/rtp_rtcp/source/rtp_sender.cc | 
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc | 
| index 759bc9c980a8e85204e20f860df583ededf194f3..06c2ea905ab411ae5954510674fe8a46af41d65e 100644 | 
| --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc | 
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc | 
| @@ -1289,4 +1289,24 @@ void RTPSender::UpdateRtpOverhead(const RtpPacketToSend& packet) { | 
| overhead_observer_->OnOverheadChanged(overhead_bytes_per_packet); | 
| } | 
|  | 
| +int64_t RTPSender::LastTimestampTimeMs() const { | 
| +  rtc::CritScope lock(&send_critsect_); | 
| +  return last_timestamp_time_ms_; | 
| +} | 
| + | 
| +void RTPSender::SendKeepAlive(uint8_t payload_type) { | 
| +  std::unique_ptr<RtpPacketToSend> packet = AllocatePacket(); | 
| +  packet->SetPayloadType(payload_type); | 
| +  // Set marker bit and timestamps in the same manner as plain padding packets. | 
| +  packet->SetMarker(false); | 
| +  { | 
| +    rtc::CritScope lock(&send_critsect_); | 
| +    packet->SetTimestamp(last_rtp_timestamp_); | 
| +    packet->set_capture_time_ms(capture_time_ms_); | 
| +  } | 
| +  AssignSequenceNumber(packet.get()); | 
| +  SendToNetwork(std::move(packet), StorageType::kDontRetransmit, | 
| +                RtpPacketSender::Priority::kLowPriority); | 
| +} | 
| + | 
| }  // namespace webrtc | 
|  |