Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: webrtc/video/video_capture_input.cc

Issue 1763693002: Move encoder thread to VideoSendStream. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: feedback Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video/video_capture_input.h ('k') | webrtc/video/video_capture_input_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/video_capture_input.cc
diff --git a/webrtc/video/video_capture_input.cc b/webrtc/video/video_capture_input.cc
index 5f8015b21b1eb57d3029f4ffe223156498e69813..18decb2a887b2afdd9c76b8392ad655b6c2ad678 100644
--- a/webrtc/video/video_capture_input.cc
+++ b/webrtc/video/video_capture_input.cc
@@ -24,16 +24,13 @@
namespace webrtc {
namespace internal {
-VideoCaptureInput::VideoCaptureInput(VideoCaptureCallback* frame_callback,
+VideoCaptureInput::VideoCaptureInput(rtc::Event* capture_event,
VideoRenderer* local_renderer,
SendStatisticsProxy* stats_proxy,
OveruseFrameDetector* overuse_detector)
- : frame_callback_(frame_callback),
- local_renderer_(local_renderer),
+ : local_renderer_(local_renderer),
stats_proxy_(stats_proxy),
- encoder_thread_(EncoderThreadFunction, this, "EncoderThread"),
- capture_event_(false, false),
- stop_(0),
+ capture_event_(capture_event),
// TODO(danilchap): Pass clock from outside to ensure it is same clock
// rtcp module use to calculate offset since last frame captured
// to estimate rtp timestamp for SenderReport.
@@ -41,16 +38,9 @@ VideoCaptureInput::VideoCaptureInput(VideoCaptureCallback* frame_callback,
last_captured_timestamp_(0),
delta_ntp_internal_ms_(clock_->CurrentNtpInMilliseconds() -
clock_->TimeInMilliseconds()),
- overuse_detector_(overuse_detector) {
- encoder_thread_.Start();
- encoder_thread_.SetPriority(rtc::kHighPriority);
-}
+ overuse_detector_(overuse_detector) {}
VideoCaptureInput::~VideoCaptureInput() {
- // Stop the thread.
- rtc::AtomicOps::ReleaseStore(&stop_, 1);
- capture_event_.Set();
- encoder_thread_.Stop();
}
void VideoCaptureInput::IncomingCapturedFrame(const VideoFrame& video_frame) {
@@ -101,31 +91,16 @@ void VideoCaptureInput::IncomingCapturedFrame(const VideoFrame& video_frame) {
TRACE_EVENT_ASYNC_BEGIN1("webrtc", "Video", video_frame.render_time_ms(),
"render_time", video_frame.render_time_ms());
- capture_event_.Set();
+ capture_event_->Set();
}
-bool VideoCaptureInput::EncoderThreadFunction(void* obj) {
- return static_cast<VideoCaptureInput*>(obj)->EncoderProcess();
-}
+bool VideoCaptureInput::GetVideoFrame(VideoFrame* video_frame) {
+ rtc::CritScope lock(&crit_);
+ if (captured_frame_.IsZeroSize())
+ return false;
-bool VideoCaptureInput::EncoderProcess() {
- static const int kThreadWaitTimeMs = 100;
- if (capture_event_.Wait(kThreadWaitTimeMs)) {
- if (rtc::AtomicOps::AcquireLoad(&stop_))
- return false;
-
- VideoFrame deliver_frame;
- {
- rtc::CritScope lock(&crit_);
- if (!captured_frame_.IsZeroSize()) {
- deliver_frame = captured_frame_;
- captured_frame_.Reset();
- }
- }
- if (!deliver_frame.IsZeroSize()) {
- frame_callback_->DeliverFrame(deliver_frame);
- }
- }
+ *video_frame = captured_frame_;
+ captured_frame_.Reset();
return true;
}
« no previous file with comments | « webrtc/video/video_capture_input.h ('k') | webrtc/video/video_capture_input_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698