diff options
Diffstat (limited to 'video_engine/vie_capture_impl.cc')
-rw-r--r-- | video_engine/vie_capture_impl.cc | 12 |
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; |