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_capturer.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_capturer.cc')
-rw-r--r-- | video_engine/vie_capturer.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/video_engine/vie_capturer.cc b/video_engine/vie_capturer.cc index abef8aaa..5364a8fa 100644 --- a/video_engine/vie_capturer.cc +++ b/video_engine/vie_capturer.cc @@ -21,7 +21,9 @@ #include "webrtc/system_wrappers/interface/thread_wrapper.h" #include "webrtc/system_wrappers/interface/trace.h" #include "webrtc/system_wrappers/interface/trace_event.h" +#include "webrtc/video_engine/include/vie_base.h" #include "webrtc/video_engine/include/vie_image_process.h" +#include "webrtc/video_engine/overuse_frame_detector.h" #include "webrtc/video_engine/vie_defines.h" #include "webrtc/video_engine/vie_encoder.h" @@ -55,7 +57,8 @@ ViECapturer::ViECapturer(int capture_id, reported_brightness_level_(Normal), denoising_enabled_(false), observer_cs_(CriticalSectionWrapper::CreateCriticalSection()), - observer_(NULL) { + observer_(NULL), + overuse_detector_(new OveruseFrameDetector(Clock::GetRealTimeClock())) { WEBRTC_TRACE(kTraceMemory, kTraceVideo, ViEId(engine_id, capture_id), "ViECapturer::ViECapturer(capture_id: %d, engine_id: %d)", capture_id, engine_id); @@ -66,12 +69,14 @@ ViECapturer::ViECapturer(int capture_id, } else { assert(false); } + module_process_thread_.RegisterModule(overuse_detector_.get()); } ViECapturer::~ViECapturer() { WEBRTC_TRACE(kTraceMemory, kTraceVideo, ViEId(engine_id_, capture_id_), "ViECapturer::~ViECapturer() - capture_id: %d, engine_id: %d", capture_id_, engine_id_); + module_process_thread_.DeRegisterModule(overuse_detector_.get()); // Stop the thread. deliver_cs_->Enter(); @@ -255,6 +260,10 @@ const char* ViECapturer::CurrentDeviceName() const { return capture_module_->CurrentDeviceName(); } +void ViECapturer::RegisterCpuOveruseObserver(CpuOveruseObserver* observer) { + overuse_detector_->SetObserver(observer); +} + int32_t ViECapturer::SetCaptureDelay(int32_t delay_ms) { return capture_module_->SetCaptureDelay(delay_ms); } @@ -340,6 +349,7 @@ void ViECapturer::OnIncomingCapturedFrame(const int32_t capture_id, captured_frame_.SwapFrame(&video_frame); capture_event_.Set(); + overuse_detector_->CapturedFrame(); return; } @@ -503,6 +513,8 @@ bool ViECapturer::ViECaptureProcess() { if (!captured_frame_.IsZeroSize()) { // New I420 frame. capture_cs_->Enter(); + // The frame sent for encoding, update the overuse detector. + overuse_detector_->EncodedFrame(); deliver_frame_.SwapFrame(&captured_frame_); captured_frame_.ResetSize(); capture_cs_->Leave(); |