Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: webrtc/system_wrappers/include/rtp_to_ntp.h

Issue 2385763002: Add stats for frequency offset when converting RTP timestamp to NTP time. (Closed)
Patch Set: rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef SYSTEM_WRAPPERS_INCLUDE_RTP_TO_NTP_H_ 11 #ifndef SYSTEM_WRAPPERS_INCLUDE_RTP_TO_NTP_H_
12 #define SYSTEM_WRAPPERS_INCLUDE_RTP_TO_NTP_H_ 12 #define SYSTEM_WRAPPERS_INCLUDE_RTP_TO_NTP_H_
13 13
14 #include <list> 14 #include <list>
15 15
16 #include "webrtc/typedefs.h" 16 #include "webrtc/typedefs.h"
17 17
18 namespace webrtc { 18 namespace webrtc {
19 19
20 struct RtcpMeasurement { 20 struct RtcpMeasurement {
21 RtcpMeasurement(); 21 RtcpMeasurement();
22 RtcpMeasurement(uint32_t ntp_secs, uint32_t ntp_frac, uint32_t timestamp); 22 RtcpMeasurement(uint32_t ntp_secs, uint32_t ntp_frac, uint32_t timestamp);
23 bool IsEqual(const RtcpMeasurement& other) const;
24
23 uint32_t ntp_secs; 25 uint32_t ntp_secs;
24 uint32_t ntp_frac; 26 uint32_t ntp_frac;
25 uint32_t rtp_timestamp; 27 uint32_t rtp_timestamp;
26 }; 28 };
27 29
28 typedef std::list<RtcpMeasurement> RtcpList; 30 struct RtcpMeasurements {
31 RtcpMeasurements();
32 ~RtcpMeasurements();
33 bool Contains(const RtcpMeasurement& other) const;
34 bool IsValid(const RtcpMeasurement& other) const;
35 void UpdateParameters();
29 36
30 // Updates |rtcp_list| with timestamps from the latest RTCP SR. 37 // Estimated parameters from RTP and NTP timestamp pairs in |list|.
38 struct RtpToNtpParameters {
39 double frequency_khz = 0.0;
40 double offset_ms = 0.0;
41 bool calculated = false;
42 };
43
44 std::list<RtcpMeasurement> list;
45 RtpToNtpParameters params;
46 };
47
48 // Updates |list| in |rtcp_measurements| with timestamps from the RTCP SR.
31 // |new_rtcp_sr| will be set to true if these are the timestamps which have 49 // |new_rtcp_sr| will be set to true if these are the timestamps which have
32 // never be added to |rtcp_list|. 50 // never be added to |list|.
51 // |rtcp_measurements.params| are estimated from the RTP and NTP timestamp pairs
52 // in the |list| when a new RTCP SR is inserted.
33 bool UpdateRtcpList(uint32_t ntp_secs, 53 bool UpdateRtcpList(uint32_t ntp_secs,
34 uint32_t ntp_frac, 54 uint32_t ntp_frac,
35 uint32_t rtp_timestamp, 55 uint32_t rtp_timestamp,
36 RtcpList* rtcp_list, 56 RtcpMeasurements* rtcp_measurements,
37 bool* new_rtcp_sr); 57 bool* new_rtcp_sr);
38 58
39 // Converts an RTP timestamp to the NTP domain in milliseconds using two 59 // Converts an RTP timestamp to the NTP domain in milliseconds using the
40 // (RTP timestamp, NTP timestamp) pairs. 60 // estimated |rtcp_measurements.params|.
41 bool RtpToNtpMs(int64_t rtp_timestamp, const RtcpList& rtcp, 61 bool RtpToNtpMs(int64_t rtp_timestamp,
42 int64_t* timestamp_in_ms); 62 const RtcpMeasurements& rtcp_measurements,
63 int64_t* rtp_timestamp_in_ms);
43 64
44 // Returns 1 there has been a forward wrap around, 0 if there has been no wrap 65 // Returns 1 there has been a forward wrap around, 0 if there has been no wrap
45 // around and -1 if there has been a backwards wrap around (i.e. reordering). 66 // around and -1 if there has been a backwards wrap around (i.e. reordering).
46 int CheckForWrapArounds(uint32_t rtp_timestamp, uint32_t rtcp_rtp_timestamp); 67 int CheckForWrapArounds(uint32_t rtp_timestamp, uint32_t rtcp_rtp_timestamp);
47 68
48 } // namespace webrtc 69 } // namespace webrtc
49 70
50 #endif // SYSTEM_WRAPPERS_INCLUDE_RTP_TO_NTP_H_ 71 #endif // SYSTEM_WRAPPERS_INCLUDE_RTP_TO_NTP_H_
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/include/remote_ntp_time_estimator.h ('k') | webrtc/system_wrappers/source/rtp_to_ntp.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698