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

Side by Side Diff: webrtc/video/vie_channel.cc

Issue 1628683002: Use separate rtp module lists for send and receive in PacketRouter. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Comments addressed. 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 unified diff | Download patch
« no previous file with comments | « webrtc/test/mock_voe_channel_proxy.h ('k') | webrtc/voice_engine/channel.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 module_process_thread_->RegisterModule(vie_receiver_.GetReceiveStatistics()); 143 module_process_thread_->RegisterModule(vie_receiver_.GetReceiveStatistics());
144 144
145 // RTP/RTCP initialization. 145 // RTP/RTCP initialization.
146 module_process_thread_->RegisterModule(rtp_rtcp_modules_[0]); 146 module_process_thread_->RegisterModule(rtp_rtcp_modules_[0]);
147 147
148 rtp_rtcp_modules_[0]->SetKeyFrameRequestMethod(kKeyFrameReqPliRtcp); 148 rtp_rtcp_modules_[0]->SetKeyFrameRequestMethod(kKeyFrameReqPliRtcp);
149 if (paced_sender_) { 149 if (paced_sender_) {
150 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) 150 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
151 rtp_rtcp->SetStorePacketsStatus(true, nack_history_size_sender_); 151 rtp_rtcp->SetStorePacketsStatus(true, nack_history_size_sender_);
152 } 152 }
153 packet_router_->AddRtpModule(rtp_rtcp_modules_[0]); 153 packet_router_->AddRtpModule(rtp_rtcp_modules_[0], sender_);
154 if (sender_) { 154 if (sender_) {
155 std::list<RtpRtcp*> send_rtp_modules(1, rtp_rtcp_modules_[0]); 155 std::list<RtpRtcp*> send_rtp_modules(1, rtp_rtcp_modules_[0]);
156 send_payload_router_->SetSendingRtpModules(send_rtp_modules); 156 send_payload_router_->SetSendingRtpModules(send_rtp_modules);
157 RTC_DCHECK(!send_payload_router_->active()); 157 RTC_DCHECK(!send_payload_router_->active());
158 } 158 }
159 if (vcm_->RegisterReceiveCallback(this) != 0) { 159 if (vcm_->RegisterReceiveCallback(this) != 0) {
160 return -1; 160 return -1;
161 } 161 }
162 vcm_->RegisterFrameTypeCallback(this); 162 vcm_->RegisterFrameTypeCallback(this);
163 vcm_->RegisterReceiveStatisticsCallback(this); 163 vcm_->RegisterReceiveStatisticsCallback(this);
164 vcm_->RegisterDecoderTimingCallback(this); 164 vcm_->RegisterDecoderTimingCallback(this);
165 vcm_->SetRenderDelay(kDefaultRenderDelayMs); 165 vcm_->SetRenderDelay(kDefaultRenderDelayMs);
166 166
167 module_process_thread_->RegisterModule(vcm_); 167 module_process_thread_->RegisterModule(vcm_);
168 module_process_thread_->RegisterModule(&vie_sync_); 168 module_process_thread_->RegisterModule(&vie_sync_);
169 169
170 return 0; 170 return 0;
171 } 171 }
172 172
173 ViEChannel::~ViEChannel() { 173 ViEChannel::~ViEChannel() {
174 UpdateHistograms(); 174 UpdateHistograms();
175 // Make sure we don't get more callbacks from the RTP module. 175 // Make sure we don't get more callbacks from the RTP module.
176 module_process_thread_->DeRegisterModule( 176 module_process_thread_->DeRegisterModule(
177 vie_receiver_.GetReceiveStatistics()); 177 vie_receiver_.GetReceiveStatistics());
178 module_process_thread_->DeRegisterModule(vcm_); 178 module_process_thread_->DeRegisterModule(vcm_);
179 module_process_thread_->DeRegisterModule(&vie_sync_); 179 module_process_thread_->DeRegisterModule(&vie_sync_);
180 send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>()); 180 send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>());
181 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) 181 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i)
182 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i]); 182 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i], sender_);
183 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { 183 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
184 module_process_thread_->DeRegisterModule(rtp_rtcp); 184 module_process_thread_->DeRegisterModule(rtp_rtcp);
185 delete rtp_rtcp; 185 delete rtp_rtcp;
186 } 186 }
187 if (!sender_) 187 if (!sender_)
188 StopDecodeThread(); 188 StopDecodeThread();
189 // Release modules. 189 // Release modules.
190 VideoCodingModule::Destroy(vcm_); 190 VideoCodingModule::Destroy(vcm_);
191 } 191 }
192 192
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 active_send_modules.push_back(rtp_rtcp); 393 active_send_modules.push_back(rtp_rtcp);
394 send_payload_router_->SetSendingRtpModules(active_send_modules); 394 send_payload_router_->SetSendingRtpModules(active_send_modules);
395 } 395 }
396 396
397 if (router_was_active) 397 if (router_was_active)
398 send_payload_router_->set_active(true); 398 send_payload_router_->set_active(true);
399 399
400 // Deregister previously registered modules. 400 // Deregister previously registered modules.
401 for (size_t i = num_active_modules; i < num_prev_active_modules; ++i) { 401 for (size_t i = num_active_modules; i < num_prev_active_modules; ++i) {
402 module_process_thread_->DeRegisterModule(rtp_rtcp_modules_[i]); 402 module_process_thread_->DeRegisterModule(rtp_rtcp_modules_[i]);
403 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i]); 403 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i], sender_);
404 } 404 }
405 // Register new active modules. 405 // Register new active modules.
406 for (size_t i = num_prev_active_modules; i < num_active_modules; ++i) { 406 for (size_t i = num_prev_active_modules; i < num_active_modules; ++i) {
407 module_process_thread_->RegisterModule(rtp_rtcp_modules_[i]); 407 module_process_thread_->RegisterModule(rtp_rtcp_modules_[i]);
408 packet_router_->AddRtpModule(rtp_rtcp_modules_[i]); 408 packet_router_->AddRtpModule(rtp_rtcp_modules_[i], sender_);
409 } 409 }
410 return 0; 410 return 0;
411 } 411 }
412 412
413 int32_t ViEChannel::SetReceiveCodec(const VideoCodec& video_codec) { 413 int32_t ViEChannel::SetReceiveCodec(const VideoCodec& video_codec) {
414 RTC_DCHECK(!sender_); 414 RTC_DCHECK(!sender_);
415 if (!vie_receiver_.SetReceiveCodec(video_codec)) { 415 if (!vie_receiver_.SetReceiveCodec(video_codec)) {
416 return -1; 416 return -1;
417 } 417 }
418 418
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 rtc::CritScope lock(&crit_); 1197 rtc::CritScope lock(&crit_);
1198 receive_stats_callback_ = receive_statistics_proxy; 1198 receive_stats_callback_ = receive_statistics_proxy;
1199 } 1199 }
1200 1200
1201 void ViEChannel::SetIncomingVideoStream( 1201 void ViEChannel::SetIncomingVideoStream(
1202 IncomingVideoStream* incoming_video_stream) { 1202 IncomingVideoStream* incoming_video_stream) {
1203 rtc::CritScope lock(&crit_); 1203 rtc::CritScope lock(&crit_);
1204 incoming_video_stream_ = incoming_video_stream; 1204 incoming_video_stream_ = incoming_video_stream;
1205 } 1205 }
1206 } // namespace webrtc 1206 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/test/mock_voe_channel_proxy.h ('k') | webrtc/voice_engine/channel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698