| /* |
| * 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 |