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 WEBRTC_VOICE_ENGINE_VOE_VIDEO_SYNC_IMPL_H
12#define WEBRTC_VOICE_ENGINE_VOE_VIDEO_SYNC_IMPL_H
13
14#include "webrtc/voice_engine/include/voe_video_sync.h"
15
16#include "webrtc/voice_engine/shared_data.h"
17
18namespace webrtc {
19
20class VoEVideoSyncImpl : public VoEVideoSync
21{
22public:
23    virtual int GetPlayoutBufferSize(int& bufferMs);
24
25    virtual int SetMinimumPlayoutDelay(int channel, int delayMs);
26
27    virtual int SetInitialPlayoutDelay(int channel, int delay_ms);
28
29    virtual int GetDelayEstimate(int channel,
30                                 int* jitter_buffer_delay_ms,
31                                 int* playout_buffer_delay_ms);
32
33    virtual int GetLeastRequiredDelayMs(int channel) const;
34
35    virtual int SetInitTimestamp(int channel, unsigned int timestamp);
36
37    virtual int SetInitSequenceNumber(int channel, short sequenceNumber);
38
39    virtual int GetPlayoutTimestamp(int channel, unsigned int& timestamp);
40
41    virtual int GetRtpRtcp(int channel, RtpRtcp** rtpRtcpModule,
42                           RtpReceiver** rtp_receiver);
43
44protected:
45    VoEVideoSyncImpl(voe::SharedData* shared);
46    virtual ~VoEVideoSyncImpl();
47
48private:
49    voe::SharedData* _shared;
50};
51
52}  // namespace webrtc
53
54#endif    // WEBRTC_VOICE_ENGINE_VOE_VIDEO_SYNC_IMPL_H
55