1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ViESharedData contains data and instances common to all interface 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// implementations. 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_VIDEO_ENGINE_VIE_SHARED_DATA_H_ 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_VIDEO_ENGINE_VIE_SHARED_DATA_H_ 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 17bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.org#include <map> 18bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.org 197645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org#include "webrtc/system_wrappers/interface/scoped_ptr.h" 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc { 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 23ac6d919eec548c708588f29923f617a17283c7e2andresp@webrtc.orgclass Config; 24bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.orgclass CpuOveruseObserver; 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ProcessThread; 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ViEChannelManager; 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ViEInputManager; 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ViERenderManager; 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ViESharedData { 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public: 327645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org explicit ViESharedData(const Config& config); 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ~ViESharedData(); 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetLastError(const int error) const; 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int LastErrorInternal() const; 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int NumberOfCores() const; 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 397645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org // TODO(mflodman) Remove all calls to 'instance_id()'. 407645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org int instance_id() { return 0;} 417645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org ViEChannelManager* channel_manager() { return channel_manager_.get(); } 427645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org ViEInputManager* input_manager() { return input_manager_.get(); } 437645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org ViERenderManager* render_manager() { return render_manager_.get(); } 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 45bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.org std::map<int, CpuOveruseObserver*>* overuse_observers() { 46bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.org return &overuse_observers_; } 47bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.org 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private: 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const int number_cores_; 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 517645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org scoped_ptr<ViEChannelManager> channel_manager_; 527645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org scoped_ptr<ViEInputManager> input_manager_; 537645e4dedc3700d785a8e6b377db8c1659ff2583mflodman@webrtc.org scoped_ptr<ViERenderManager> render_manager_; 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ProcessThread* module_process_thread_; 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org mutable int last_error_; 56bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.org 57bf76ae2bdfc0b4e8e875f6cce1c85d4d66357bebmflodman@webrtc.org std::map<int, CpuOveruseObserver*> overuse_observers_; 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} // namespace webrtc 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // WEBRTC_VIDEO_ENGINE_VIE_SHARED_DATA_H_ 63