summaryrefslogtreecommitdiff
path: root/video_engine/vie_capturer.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_capturer.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_capturer.cc')
-rw-r--r--video_engine/vie_capturer.cc14
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();