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