summaryrefslogtreecommitdiff
path: root/video_engine/vie_base_impl.cc
diff options
context:
space:
mode:
authormflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-07-23 11:35:00 +0000
committermflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-07-23 11:35:00 +0000
commitbf76ae2bdfc0b4e8e875f6cce1c85d4d66357beb (patch)
treed8e354ad48de8ace561eafc3e6316d6098e60e59 /video_engine/vie_base_impl.cc
parent3df426b94aa0a96fdd37afb0d4642c0fbf6a2358 (diff)
downloadwebrtc-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.cc31
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__);