New method RtpReceiver::GetLatestTimestamps.
The two timestamps, rtp time and corresponding system time, are always
used together, for audio/video sync. The new method reads both
timestamps, without releasing a lock in between. Ensures that the
caller gets values corresponding to the same packet.
Bug: webrtc:7135
Change-Id: I25bdcbe9ad620016bfad39841b339c266efade14
Reviewed-on: https://webrtc-review.googlesource.com/4062
Commit-Queue: Niels Moller <nisse@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20120}
diff --git a/modules/rtp_rtcp/source/rtp_receiver_impl.cc b/modules/rtp_rtcp/source/rtp_receiver_impl.cc
index 8a8669e..45faee2 100644
--- a/modules/rtp_rtcp/source/rtp_receiver_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_receiver_impl.cc
@@ -225,24 +225,16 @@
return sources;
}
-bool RtpReceiverImpl::Timestamp(uint32_t* timestamp) const {
+bool RtpReceiverImpl::GetLatestTimestamps(uint32_t* timestamp,
+ int64_t* receive_time_ms) const {
rtc::CritScope lock(&critical_section_rtp_receiver_);
- if (!HaveReceivedFrame())
+ if (last_received_frame_time_ms_ < 0)
return false;
+
*timestamp = last_received_timestamp_;
- return true;
-}
-
-bool RtpReceiverImpl::LastReceivedTimeMs(int64_t* receive_time_ms) const {
- rtc::CritScope lock(&critical_section_rtp_receiver_);
- if (!HaveReceivedFrame())
- return false;
*receive_time_ms = last_received_frame_time_ms_;
- return true;
-}
-bool RtpReceiverImpl::HaveReceivedFrame() const {
- return last_received_frame_time_ms_ >= 0;
+ return true;
}
// Implementation note: must not hold critsect when called.