• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 // ViESyncModule is responsible for synchronization audio and video for a given
12 // VoE and ViE channel couple.
13 
14 #ifndef WEBRTC_VIDEO_VIE_SYNC_MODULE_H_
15 #define WEBRTC_VIDEO_VIE_SYNC_MODULE_H_
16 
17 #include "webrtc/base/scoped_ptr.h"
18 #include "webrtc/modules/include/module.h"
19 #include "webrtc/system_wrappers/include/tick_util.h"
20 #include "webrtc/video/stream_synchronization.h"
21 #include "webrtc/voice_engine/include/voe_video_sync.h"
22 
23 namespace webrtc {
24 
25 class CriticalSectionWrapper;
26 class RtpRtcp;
27 class VideoCodingModule;
28 class ViEChannel;
29 class VoEVideoSync;
30 
31 class ViESyncModule : public Module {
32  public:
33   explicit ViESyncModule(VideoCodingModule* vcm);
34   ~ViESyncModule();
35 
36   int ConfigureSync(int voe_channel_id,
37                     VoEVideoSync* voe_sync_interface,
38                     RtpRtcp* video_rtcp_module,
39                     RtpReceiver* video_receiver);
40 
41   int VoiceChannel();
42 
43   // Implements Module.
44   int64_t TimeUntilNextProcess() override;
45   int32_t Process() override;
46 
47  private:
48   rtc::scoped_ptr<CriticalSectionWrapper> data_cs_;
49   VideoCodingModule* const vcm_;
50   RtpReceiver* video_receiver_;
51   RtpRtcp* video_rtp_rtcp_;
52   int voe_channel_id_;
53   VoEVideoSync* voe_sync_interface_;
54   TickTime last_sync_time_;
55   rtc::scoped_ptr<StreamSynchronization> sync_;
56   StreamSynchronization::Measurements audio_measurement_;
57   StreamSynchronization::Measurements video_measurement_;
58 };
59 
60 }  // namespace webrtc
61 
62 #endif  // WEBRTC_VIDEO_VIE_SYNC_MODULE_H_
63