1 /* 2 * Copyright (c) 2017 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 // Syncable is used by RtpStreamsSynchronizer in VideoReceiveStream, and 12 // implemented by AudioReceiveStream. 13 14 #ifndef CALL_SYNCABLE_H_ 15 #define CALL_SYNCABLE_H_ 16 17 #include <stdint.h> 18 19 #include "absl/types/optional.h" 20 21 namespace webrtc { 22 23 class Syncable { 24 public: 25 struct Info { 26 int64_t latest_receive_time_ms = 0; 27 uint32_t latest_received_capture_timestamp = 0; 28 uint32_t capture_time_ntp_secs = 0; 29 uint32_t capture_time_ntp_frac = 0; 30 uint32_t capture_time_source_clock = 0; 31 int current_delay_ms = 0; 32 }; 33 34 virtual ~Syncable(); 35 36 virtual uint32_t id() const = 0; 37 virtual absl::optional<Info> GetInfo() const = 0; 38 virtual bool GetPlayoutRtpTimestamp(uint32_t* rtp_timestamp, 39 int64_t* time_ms) const = 0; 40 virtual void SetMinimumPlayoutDelay(int delay_ms) = 0; 41 virtual void SetEstimatedPlayoutNtpTimestampMs(int64_t ntp_timestamp_ms, 42 int64_t time_ms) = 0; 43 }; 44 } // namespace webrtc 45 46 #endif // CALL_SYNCABLE_H_ 47