webrtc/video_engine/main/source/vie_shared_data.cc

92 lines
2.4 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.
*/
// ViESharedData.cpp
#include "vie_shared_data.h"
#include "vie_defines.h"
#include "cpu_wrapper.h"
#include "critical_section_wrapper.h"
#include "process_thread.h"
#include "trace.h"
#include "vie_channel_manager.h"
#include "vie_input_manager.h"
#include "vie_render_manager.h"
namespace webrtc {
// Active instance counter
int ViESharedData::_instanceCounter = 0;
ViESharedData::ViESharedData()
: _instanceId(++_instanceCounter),
_apiCritsect(*CriticalSectionWrapper::CreateCriticalSection()),
_isInitialized(false), _numberOfCores(CpuWrapper::DetectNumberOfCores()),
_moduleProcessThreadPtr(ProcessThread::CreateProcessThread()),
_viePerformanceMonitor(ViEPerformanceMonitor(_instanceId)),
_channelManager(*new ViEChannelManager(_instanceId, _numberOfCores,
_viePerformanceMonitor)),
_inputManager(*new ViEInputManager(_instanceId)),
_renderManager(*new ViERenderManager(_instanceId)), _lastError(0)
{
Trace::CreateTrace();
_channelManager.SetModuleProcessThread(*_moduleProcessThreadPtr);
_inputManager.SetModuleProcessThread(*_moduleProcessThreadPtr);
_moduleProcessThreadPtr->Start();
}
ViESharedData::~ViESharedData()
{
delete &_inputManager;
delete &_channelManager;
delete &_renderManager;
_moduleProcessThreadPtr->Stop();
ProcessThread::DestroyProcessThread(_moduleProcessThreadPtr);
delete &_apiCritsect;
Trace::ReturnTrace();
}
bool ViESharedData::IsInitialized() const
{
return _isInitialized;
}
int ViESharedData::SetInitialized()
{
_isInitialized = true;
return 0;
}
int ViESharedData::SetUnInitialized()
{
_isInitialized = false;
return 0;
}
void ViESharedData::SetLastError(const int error) const
{
_lastError = error;
}
int ViESharedData::LastErrorInternal() const
{
int error = _lastError;
_lastError = 0;
return error;
}
int ViESharedData::NumberOfCores() const
{
return _numberOfCores;
}
} // namespace webrtc