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}
This commit is contained in:
Niels Möller
2017-10-03 15:28:26 +02:00
committed by Commit Bot
parent 1cfa95b8b8
commit c3fa8e1ce7
6 changed files with 31 additions and 35 deletions

View File

@ -47,9 +47,8 @@ class RtpReceiverImpl : public RtpReceiver {
PayloadUnion payload_specific,
bool in_order) override;
// Returns the last received timestamp.
bool Timestamp(uint32_t* timestamp) const override;
bool LastReceivedTimeMs(int64_t* receive_time_ms) const override;
bool GetLatestTimestamps(uint32_t* timestamp,
int64_t* receive_time_ms) const override;
uint32_t SSRC() const override;
@ -70,9 +69,6 @@ class RtpReceiverImpl : public RtpReceiver {
}
private:
bool HaveReceivedFrame() const
RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtp_receiver_);
void CheckSSRCChanged(const RTPHeader& rtp_header);
void CheckCSRC(const WebRtcRTPHeader& rtp_header);
int32_t CheckPayloadChanged(const RTPHeader& rtp_header,