85 lines
2.3 KiB
C
85 lines
2.3 KiB
C
|
/*
|
||
|
* 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_
|