diff options
author | mflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-07-23 11:35:00 +0000 |
---|---|---|
committer | mflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-07-23 11:35:00 +0000 |
commit | bf76ae2bdfc0b4e8e875f6cce1c85d4d66357beb (patch) | |
tree | d8e354ad48de8ace561eafc3e6316d6098e60e59 /video_engine/vie_base_impl.cc | |
parent | 3df426b94aa0a96fdd37afb0d4642c0fbf6a2358 (diff) | |
download | webrtc-bf76ae2bdfc0b4e8e875f6cce1c85d4d66357beb.tar.gz |
Hooking up first simple CPU adaptation version.
BUG=
R=pbos@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1767004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@4384 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'video_engine/vie_base_impl.cc')
-rw-r--r-- | video_engine/vie_base_impl.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/video_engine/vie_base_impl.cc b/video_engine/vie_base_impl.cc index d7923164..17e9a744 100644 --- a/video_engine/vie_base_impl.cc +++ b/video_engine/vie_base_impl.cc @@ -21,6 +21,7 @@ #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" #include "webrtc/system_wrappers/interface/trace.h" #include "webrtc/video_engine/include/vie_errors.h" +#include "webrtc/video_engine/vie_capturer.h" #include "webrtc/video_engine/vie_channel.h" #include "webrtc/video_engine/vie_channel_manager.h" #include "webrtc/video_engine/vie_defines.h" @@ -86,6 +87,36 @@ int ViEBaseImpl::SetVoiceEngine(VoiceEngine* voice_engine) { return 0; } +int ViEBaseImpl::RegisterCpuOveruseObserver(int video_channel, + CpuOveruseObserver* observer) { + ViEChannelManagerScoped cs(*(shared_data_.channel_manager())); + ViEChannel* vie_channel = cs.Channel(video_channel); + if (!vie_channel) { + WEBRTC_TRACE(kTraceError, + kTraceVideo, + ViEId(shared_data_.instance_id()), + "%s: channel %d doesn't exist", + __FUNCTION__, + video_channel); + shared_data_.SetLastError(kViEBaseInvalidChannelId); + return -1; + } + ViEEncoder* vie_encoder = cs.Encoder(video_channel); + assert(vie_encoder); + + ViEInputManagerScoped is(*(shared_data_.input_manager())); + ViEFrameProviderBase* provider = is.FrameProvider(vie_encoder); + if (provider) { + ViECapturer* capturer = is.Capture(provider->Id()); + assert(capturer); + capturer->RegisterCpuOveruseObserver(observer); + } + + shared_data_.overuse_observers()->insert( + std::pair<int, CpuOveruseObserver*>(video_channel, observer)); + return 0; +} + int ViEBaseImpl::CreateChannel(int& video_channel) { // NOLINT WEBRTC_TRACE(kTraceApiCall, kTraceVideo, ViEId(shared_data_.instance_id()), "%s", __FUNCTION__); |