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

@ -77,12 +77,11 @@ class RtpReceiver {
PayloadUnion payload_specific,
bool in_order) = 0;
// Gets the last received timestamp. Returns true if a packet has been
// received, false otherwise.
virtual bool Timestamp(uint32_t* timestamp) const = 0;
// Gets the time in milliseconds when the last timestamp was received.
// Returns true if a packet has been received, false otherwise.
virtual bool LastReceivedTimeMs(int64_t* receive_time_ms) const = 0;
// Gets the RTP timestamp and the corresponding monotonic system
// time for the most recent in-order packet. Returns true on
// success, false if no packet has been received.
virtual bool GetLatestTimestamps(uint32_t* timestamp,
int64_t* receive_time_ms) const = 0;
// Returns the remote SSRC of the currently received RTP stream.
virtual uint32_t SSRC() const = 0;