Home | History | Annotate | Download | only in interface
      1 /*
      2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      3  *
      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
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef SYSTEM_WRAPPERS_INTERFACE_RTP_TO_NTP_H_
     12 #define SYSTEM_WRAPPERS_INTERFACE_RTP_TO_NTP_H_
     13 
     14 #include <list>
     15 
     16 #include "webrtc/typedefs.h"
     17 
     18 namespace webrtc {
     19 
     20 struct RtcpMeasurement {
     21   RtcpMeasurement();
     22   RtcpMeasurement(uint32_t ntp_secs, uint32_t ntp_frac, uint32_t timestamp);
     23   uint32_t ntp_secs;
     24   uint32_t ntp_frac;
     25   uint32_t rtp_timestamp;
     26 };
     27 
     28 typedef std::list<RtcpMeasurement> RtcpList;
     29 
     30 // Updates |rtcp_list| with timestamps from the latest RTCP SR.
     31 // |new_rtcp_sr| will be set to true if these are the timestamps which have
     32 // never be added to |rtcp_list|.
     33 bool UpdateRtcpList(uint32_t ntp_secs,
     34                     uint32_t ntp_frac,
     35                     uint32_t rtp_timestamp,
     36                     RtcpList* rtcp_list,
     37                     bool* new_rtcp_sr);
     38 
     39 // Converts an RTP timestamp to the NTP domain in milliseconds using two
     40 // (RTP timestamp, NTP timestamp) pairs.
     41 bool RtpToNtpMs(int64_t rtp_timestamp, const RtcpList& rtcp,
     42                 int64_t* timestamp_in_ms);
     43 
     44 // 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).
     46 int CheckForWrapArounds(uint32_t rtp_timestamp, uint32_t rtcp_rtp_timestamp);
     47 
     48 }  // namespace webrtc
     49 
     50 #endif  // SYSTEM_WRAPPERS_INTERFACE_RTP_TO_NTP_H_
     51