/*
 *  Copyright (c) 2011 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 SYSTEM_WRAPPERS_INTERFACE_TIMESTAMP_EXTRAPOLATOR_H_
#define SYSTEM_WRAPPERS_INTERFACE_TIMESTAMP_EXTRAPOLATOR_H_

#include "webrtc/system_wrappers/include/rw_lock_wrapper.h"
#include "webrtc/typedefs.h"

namespace webrtc
{

class TimestampExtrapolator
{
public:
    explicit TimestampExtrapolator(int64_t start_ms);
    ~TimestampExtrapolator();
    void Update(int64_t tMs, uint32_t ts90khz);
    int64_t ExtrapolateLocalTime(uint32_t timestamp90khz);
    void Reset(int64_t start_ms);

private:
    void CheckForWrapArounds(uint32_t ts90khz);
    bool DelayChangeDetection(double error);
    RWLockWrapper*        _rwLock;
    double                _w[2];
    double                _pP[2][2];
    int64_t         _startMs;
    int64_t         _prevMs;
    uint32_t        _firstTimestamp;
    int32_t         _wrapArounds;
    int64_t         _prevUnwrappedTimestamp;
    int64_t         _prevWrapTimestamp;
    const double          _lambda;
    bool                  _firstAfterReset;
    uint32_t        _packetCount;
    const uint32_t  _startUpFilterDelayInPackets;

    double              _detectorAccumulatorPos;
    double              _detectorAccumulatorNeg;
    const double        _alarmThreshold;
    const double        _accDrift;
    const double        _accMaxError;
    const double        _pP11;
};

}  // namespace webrtc

#endif // SYSTEM_WRAPPERS_INTERFACE_TIMESTAMP_EXTRAPOLATOR_H_
