summaryrefslogtreecommitdiff
path: root/video_engine/vie_capture_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'video_engine/vie_capture_impl.cc')
-rw-r--r--video_engine/vie_capture_impl.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/video_engine/vie_capture_impl.cc b/video_engine/vie_capture_impl.cc
index 28b4d19e..85353c30 100644
--- a/video_engine/vie_capture_impl.cc
+++ b/video_engine/vie_capture_impl.cc
@@ -10,6 +10,8 @@
#include "webrtc/video_engine/vie_capture_impl.h"
+#include <map>
+
#include "webrtc/system_wrappers/interface/trace.h"
#include "webrtc/video_engine/include/vie_errors.h"
#include "webrtc/video_engine/vie_capturer.h"
@@ -23,6 +25,8 @@
namespace webrtc {
+class CpuOveruseObserver;
+
ViECapture* ViECapture::GetInterface(VideoEngine* video_engine) {
#ifdef WEBRTC_VIDEO_ENGINE_CAPTURE_API
if (!video_engine) {
@@ -201,6 +205,11 @@ int ViECaptureImpl::ConnectCaptureDevice(const int capture_id,
shared_data_->SetLastError(kViECaptureDeviceUnknownError);
return -1;
}
+ std::map<int, CpuOveruseObserver*>::iterator it =
+ shared_data_->overuse_observers()->find(video_channel);
+ if (it != shared_data_->overuse_observers()->end()) {
+ vie_capture->RegisterCpuOveruseObserver(it->second);
+ }
return 0;
}
@@ -241,6 +250,9 @@ int ViECaptureImpl::DisconnectCaptureDevice(const int video_channel) {
return -1;
}
+ ViECapturer* vie_capture = is.Capture(frame_provider->Id());
+ assert(vie_capture);
+ vie_capture->RegisterCpuOveruseObserver(NULL);
if (frame_provider->DeregisterFrameCallback(vie_encoder) != 0) {
shared_data_->SetLastError(kViECaptureDeviceUnknownError);
return -1;