| /* |
| * 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. |
| */ |
| |
| /* |
| * vie_sync_module.h |
| * Responsible for doing Audio/Video sync |
| */ |
| |
| #ifndef WEBRTC_VIDEO_ENGINE_MAIN_SOURCE_VIE_SYNC_MODULE_H_ |
| #define WEBRTC_VIDEO_ENGINE_MAIN_SOURCE_VIE_SYNC_MODULE_H_ |
| |
| #include "module.h" |
| #include "tick_util.h" |
| |
| namespace webrtc |
| { |
| class CriticalSectionWrapper; |
| class RtpRtcp; |
| class VideoCodingModule; |
| class VoEVideoSync; |
| |
| |
| class ViESyncModule : public Module |
| { |
| public: |
| enum { kSyncInterval = 1000}; |
| enum { kMaxVideoDiffMS = 80 }; // Video sync |
| enum { kMaxAudioDiffMS = 80 }; // Video sync |
| enum { kMaxDelay = 1500 }; // Video sync |
| |
| ViESyncModule(int id, VideoCodingModule& vcm, |
| RtpRtcp& rtcpModule); |
| ~ViESyncModule(); |
| int SetVoiceChannel(int voiceChannelId, VoEVideoSync* voiceSyncInterface); |
| int VoiceChannel(); |
| void SetNetworkDelay(int networkDelay); |
| |
| // Implements Module |
| virtual WebRtc_Word32 Version(WebRtc_Word8* version, |
| WebRtc_UWord32& remainingBufferInBytes, |
| WebRtc_UWord32& position) const; |
| |
| virtual WebRtc_Word32 ChangeUniqueId(const WebRtc_Word32 id); |
| virtual WebRtc_Word32 TimeUntilNextProcess(); |
| virtual WebRtc_Word32 Process(); |
| |
| private: |
| // Critical sections |
| CriticalSectionWrapper& _dataCritsect; |
| int _id; |
| VideoCodingModule& _vcm; |
| RtpRtcp& _rtcpModule; |
| int _voiceChannelId; |
| VoEVideoSync* _voiceSyncInterface; |
| TickTime _lastSyncTime; |
| |
| struct ViESyncDelay |
| { |
| ViESyncDelay() |
| { |
| extraVideoDelayMS = 0; |
| lastVideoDelayMS = 0; |
| extraAudioDelayMS = 0; |
| lastSyncDelay = 0; |
| networkDelay = 120; |
| } |
| int extraVideoDelayMS; |
| int lastVideoDelayMS; |
| int extraAudioDelayMS; //audioDelayMS; |
| int lastSyncDelay; |
| int networkDelay; |
| }; |
| ViESyncDelay _channelDelay; |
| |
| }; |
| } // namespace webrtc |
| #endif // WEBRTC_VIDEO_ENGINE_MAIN_SOURCE_VIE_SYNC_MODULE_H_ |