2016-06-22 08:36:53 -07:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2016 The WebRTC Project Authors. All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* Use of this source code is governed by a BSD-style license
|
|
|
|
|
* that can be found in the LICENSE file in the root of the source
|
|
|
|
|
* tree. An additional intellectual property rights grant can be found
|
|
|
|
|
* in the file PATENTS. All contributing project authors may
|
|
|
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef WEBRTC_BASE_TIMESTAMPALIGNER_H_
|
|
|
|
|
#define WEBRTC_BASE_TIMESTAMPALIGNER_H_
|
|
|
|
|
|
|
|
|
|
#include "webrtc/base/basictypes.h"
|
|
|
|
|
#include "webrtc/base/constructormagic.h"
|
|
|
|
|
#include "webrtc/base/optional.h"
|
|
|
|
|
|
|
|
|
|
namespace rtc {
|
|
|
|
|
|
2016-09-01 15:15:00 +02:00
|
|
|
// This class is not thread safe, so all calls to it must be synchronized
|
|
|
|
|
// externally.
|
2016-06-22 08:36:53 -07:00
|
|
|
class TimestampAligner {
|
|
|
|
|
public:
|
|
|
|
|
TimestampAligner();
|
|
|
|
|
~TimestampAligner();
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
// Update the estimated offset between camera time and system monotonic time.
|
|
|
|
|
int64_t UpdateOffset(int64_t camera_time_us, int64_t system_time_us);
|
|
|
|
|
|
|
|
|
|
int64_t ClipTimestamp(int64_t filtered_time_us, int64_t system_time_us);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
// State for the timestamp translation.
|
|
|
|
|
int frames_seen_;
|
|
|
|
|
// Estimated offset between camera time and system monotonic time.
|
|
|
|
|
int64_t offset_us_;
|
|
|
|
|
|
|
|
|
|
// State for timestamp clipping, applied after the filter, to ensure
|
|
|
|
|
// that translated timestamps are monotonic and not in the future.
|
|
|
|
|
// Subtracted from the translated timestamps.
|
|
|
|
|
int64_t clip_bias_us_;
|
|
|
|
|
rtc::Optional<int64_t> prev_translated_time_us_;
|
|
|
|
|
RTC_DISALLOW_COPY_AND_ASSIGN(TimestampAligner);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace rtc
|
|
|
|
|
|
|
|
|
|
#endif // WEBRTC_BASE_TIMESTAMPALIGNER_H_
|