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 18namespace webrtc { 19 20struct 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 28typedef 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|. 33bool 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. 41bool 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). 46int 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