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

Unified Diff: webrtc/call/call.cc

Issue 2060403002: Add task queue to Call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@move_getpadding
Patch Set: Revert changes to gypi. Created 4 years, 6 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
Index: webrtc/call/call.cc
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc
index 93b638a44864da8e129ac590c19aa78278ed2445..36bc5ade982f995d809e481e46faa83182d67d2c 100644
--- a/webrtc/call/call.cc
+++ b/webrtc/call/call.cc
@@ -9,7 +9,6 @@
*/
#include <string.h>
-
#include <algorithm>
#include <map>
#include <memory>
@@ -22,6 +21,7 @@
#include "webrtc/base/checks.h"
#include "webrtc/base/constructormagic.h"
#include "webrtc/base/logging.h"
+#include "webrtc/base/task_queue.h"
#include "webrtc/base/thread_annotations.h"
#include "webrtc/base/thread_checker.h"
#include "webrtc/base/trace_event.h"
@@ -133,6 +133,9 @@ class Call : public webrtc::Call,
Clock* const clock_;
const int num_cpu_cores_;
+ // TODO(perkj): |worker_queu_| is supposed to replace |module_process_thread_|
+ // in the long run.
+ rtc::TaskQueue worker_queu_;
tommi 2016/06/17 07:59:01 worker_queue_
perkj_webrtc 2016/06/27 14:34:34 Done.
const std::unique_ptr<ProcessThread> module_process_thread_;
const std::unique_ptr<ProcessThread> pacer_thread_;
const std::unique_ptr<CallStats> call_stats_;
@@ -201,6 +204,7 @@ namespace internal {
Call::Call(const Call::Config& config)
: clock_(Clock::GetRealTimeClock()),
num_cpu_cores_(CpuInfo::DetectNumberOfCores()),
+ worker_queu_("worker_queue"),
module_process_thread_(ProcessThread::Create("ModuleProcessThread")),
pacer_thread_(ProcessThread::Create("PacerThread")),
call_stats_(new CallStats(clock_)),
@@ -419,8 +423,8 @@ webrtc::VideoSendStream* Call::CreateVideoSendStream(
// TODO(mflodman): Base the start bitrate on a current bandwidth estimate, if
// the call has already started.
VideoSendStream* send_stream = new VideoSendStream(
- num_cpu_cores_, module_process_thread_.get(), call_stats_.get(),
- congestion_controller_.get(), bitrate_allocator_.get(),
+ num_cpu_cores_, module_process_thread_.get(), &worker_queu_,
+ call_stats_.get(), congestion_controller_.get(), bitrate_allocator_.get(),
video_send_delay_stats_.get(), &remb_, event_log_, config, encoder_config,
suspended_video_send_ssrcs_);
{
@@ -461,11 +465,11 @@ void Call::DestroyVideoSendStream(webrtc::VideoSendStream* send_stream) {
}
RTC_CHECK(send_stream_impl != nullptr);
- VideoSendStream::RtpStateMap rtp_state = send_stream_impl->GetRtpStates();
+ VideoSendStream::RtpStateMap rtp_state =
+ send_stream_impl->StopPermanentlyAndGetRtpStates();
for (VideoSendStream::RtpStateMap::iterator it = rtp_state.begin();
- it != rtp_state.end();
- ++it) {
+ it != rtp_state.end(); ++it) {
suspended_video_send_ssrcs_[it->first] = it->second;
}
@@ -684,6 +688,15 @@ void Call::OnSentPacket(const rtc::SentPacket& sent_packet) {
void Call::OnNetworkChanged(uint32_t target_bitrate_bps, uint8_t fraction_loss,
int64_t rtt_ms) {
+ // TODO(perkj): Consider making sure CongestionController operates on
+ // |worker_queu_|.
+ if (!worker_queu_.IsCurrent()) {
+ worker_queu_.PostTask([this, target_bitrate_bps, fraction_loss, rtt_ms] {
+ OnNetworkChanged(target_bitrate_bps, fraction_loss, rtt_ms);
+ });
+ return;
+ }
+ RTC_DCHECK_RUN_ON(&worker_queu_);
bitrate_allocator_->OnNetworkChanged(target_bitrate_bps, fraction_loss,
rtt_ms);

Powered by Google App Engine
This is Rietveld 408576698