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

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

Issue 1335923002: Add RTC_ prefix to (D)CHECKs and related macros. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. Created 5 years, 3 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/video/video_receive_stream.cc ('k') | webrtc/video/video_send_stream_tests.cc » ('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) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 const std::map<uint32_t, RtpState>& suspended_ssrcs) 110 const std::map<uint32_t, RtpState>& suspended_ssrcs)
111 : transport_adapter_(config.send_transport), 111 : transport_adapter_(config.send_transport),
112 encoded_frame_proxy_(config.post_encode_callback), 112 encoded_frame_proxy_(config.post_encode_callback),
113 config_(config), 113 config_(config),
114 suspended_ssrcs_(suspended_ssrcs), 114 suspended_ssrcs_(suspended_ssrcs),
115 module_process_thread_(module_process_thread), 115 module_process_thread_(module_process_thread),
116 channel_group_(channel_group), 116 channel_group_(channel_group),
117 channel_id_(channel_id), 117 channel_id_(channel_id),
118 use_config_bitrate_(true), 118 use_config_bitrate_(true),
119 stats_proxy_(Clock::GetRealTimeClock(), config) { 119 stats_proxy_(Clock::GetRealTimeClock(), config) {
120 DCHECK(!config_.rtp.ssrcs.empty()); 120 RTC_DCHECK(!config_.rtp.ssrcs.empty());
121 CHECK(channel_group->CreateSendChannel(channel_id_, 0, &transport_adapter_, 121 RTC_CHECK(channel_group->CreateSendChannel(
122 num_cpu_cores, config_.rtp.ssrcs)); 122 channel_id_, 0, &transport_adapter_, num_cpu_cores, config_.rtp.ssrcs));
123 vie_channel_ = channel_group_->GetChannel(channel_id_); 123 vie_channel_ = channel_group_->GetChannel(channel_id_);
124 vie_encoder_ = channel_group_->GetEncoder(channel_id_); 124 vie_encoder_ = channel_group_->GetEncoder(channel_id_);
125 125
126 for (size_t i = 0; i < config_.rtp.extensions.size(); ++i) { 126 for (size_t i = 0; i < config_.rtp.extensions.size(); ++i) {
127 const std::string& extension = config_.rtp.extensions[i].name; 127 const std::string& extension = config_.rtp.extensions[i].name;
128 int id = config_.rtp.extensions[i].id; 128 int id = config_.rtp.extensions[i].id;
129 // One-byte-extension local identifiers are in the range 1-14 inclusive. 129 // One-byte-extension local identifiers are in the range 1-14 inclusive.
130 DCHECK_GE(id, 1); 130 RTC_DCHECK_GE(id, 1);
131 DCHECK_LE(id, 14); 131 RTC_DCHECK_LE(id, 14);
132 if (extension == RtpExtension::kTOffset) { 132 if (extension == RtpExtension::kTOffset) {
133 CHECK_EQ(0, vie_channel_->SetSendTimestampOffsetStatus(true, id)); 133 RTC_CHECK_EQ(0, vie_channel_->SetSendTimestampOffsetStatus(true, id));
134 } else if (extension == RtpExtension::kAbsSendTime) { 134 } else if (extension == RtpExtension::kAbsSendTime) {
135 CHECK_EQ(0, vie_channel_->SetSendAbsoluteSendTimeStatus(true, id)); 135 RTC_CHECK_EQ(0, vie_channel_->SetSendAbsoluteSendTimeStatus(true, id));
136 } else if (extension == RtpExtension::kVideoRotation) { 136 } else if (extension == RtpExtension::kVideoRotation) {
137 CHECK_EQ(0, vie_channel_->SetSendVideoRotationStatus(true, id)); 137 RTC_CHECK_EQ(0, vie_channel_->SetSendVideoRotationStatus(true, id));
138 } else if (extension == RtpExtension::kTransportSequenceNumber) { 138 } else if (extension == RtpExtension::kTransportSequenceNumber) {
139 CHECK_EQ(0, vie_channel_->SetSendTransportSequenceNumber(true, id)); 139 RTC_CHECK_EQ(0, vie_channel_->SetSendTransportSequenceNumber(true, id));
140 } else { 140 } else {
141 RTC_NOTREACHED() << "Registering unsupported RTP extension."; 141 RTC_NOTREACHED() << "Registering unsupported RTP extension.";
142 } 142 }
143 } 143 }
144 144
145 // TODO(pbos): Consider configuring REMB in Call. 145 // TODO(pbos): Consider configuring REMB in Call.
146 channel_group_->SetChannelRembStatus(true, false, vie_channel_); 146 channel_group_->SetChannelRembStatus(true, false, vie_channel_);
147 147
148 // Enable NACK, FEC or both. 148 // Enable NACK, FEC or both.
149 const bool enable_protection_nack = config_.rtp.nack.rtp_history_ms > 0; 149 const bool enable_protection_nack = config_.rtp.nack.rtp_history_ms > 0;
150 const bool enable_protection_fec = config_.rtp.fec.red_payload_type != -1; 150 const bool enable_protection_fec = config_.rtp.fec.red_payload_type != -1;
151 // TODO(changbin): Should set RTX for RED mapping in RTP sender in future. 151 // TODO(changbin): Should set RTX for RED mapping in RTP sender in future.
152 vie_channel_->SetProtectionMode(enable_protection_nack, enable_protection_fec, 152 vie_channel_->SetProtectionMode(enable_protection_nack, enable_protection_fec,
153 config_.rtp.fec.red_payload_type, 153 config_.rtp.fec.red_payload_type,
154 config_.rtp.fec.ulpfec_payload_type); 154 config_.rtp.fec.ulpfec_payload_type);
155 vie_encoder_->UpdateProtectionMethod(enable_protection_nack, 155 vie_encoder_->UpdateProtectionMethod(enable_protection_nack,
156 enable_protection_fec); 156 enable_protection_fec);
157 157
158 ConfigureSsrcs(); 158 ConfigureSsrcs();
159 159
160 vie_channel_->SetRTCPCName(config_.rtp.c_name.c_str()); 160 vie_channel_->SetRTCPCName(config_.rtp.c_name.c_str());
161 161
162 input_.reset(new internal::VideoCaptureInput( 162 input_.reset(new internal::VideoCaptureInput(
163 module_process_thread_, vie_encoder_, config_.local_renderer, 163 module_process_thread_, vie_encoder_, config_.local_renderer,
164 &stats_proxy_, this)); 164 &stats_proxy_, this));
165 165
166 // 28 to match packet overhead in ModuleRtpRtcpImpl. 166 // 28 to match packet overhead in ModuleRtpRtcpImpl.
167 DCHECK_LE(config_.rtp.max_packet_size, static_cast<size_t>(0xFFFF - 28)); 167 RTC_DCHECK_LE(config_.rtp.max_packet_size, static_cast<size_t>(0xFFFF - 28));
168 vie_channel_->SetMTU(static_cast<uint16_t>(config_.rtp.max_packet_size + 28)); 168 vie_channel_->SetMTU(static_cast<uint16_t>(config_.rtp.max_packet_size + 28));
169 169
170 DCHECK(config.encoder_settings.encoder != nullptr); 170 RTC_DCHECK(config.encoder_settings.encoder != nullptr);
171 DCHECK_GE(config.encoder_settings.payload_type, 0); 171 RTC_DCHECK_GE(config.encoder_settings.payload_type, 0);
172 DCHECK_LE(config.encoder_settings.payload_type, 127); 172 RTC_DCHECK_LE(config.encoder_settings.payload_type, 127);
173 CHECK_EQ(0, vie_encoder_->RegisterExternalEncoder( 173 RTC_CHECK_EQ(0, vie_encoder_->RegisterExternalEncoder(
174 config.encoder_settings.encoder, 174 config.encoder_settings.encoder,
175 config.encoder_settings.payload_type, 175 config.encoder_settings.payload_type,
176 config.encoder_settings.internal_source)); 176 config.encoder_settings.internal_source));
177 177
178 CHECK(ReconfigureVideoEncoder(encoder_config)); 178 RTC_CHECK(ReconfigureVideoEncoder(encoder_config));
179 179
180 vie_channel_->RegisterSendSideDelayObserver(&stats_proxy_); 180 vie_channel_->RegisterSendSideDelayObserver(&stats_proxy_);
181 vie_encoder_->RegisterSendStatisticsProxy(&stats_proxy_); 181 vie_encoder_->RegisterSendStatisticsProxy(&stats_proxy_);
182 182
183 vie_encoder_->RegisterPreEncodeCallback(config_.pre_encode_callback); 183 vie_encoder_->RegisterPreEncodeCallback(config_.pre_encode_callback);
184 if (config_.post_encode_callback) 184 if (config_.post_encode_callback)
185 vie_encoder_->RegisterPostEncodeImageCallback(&encoded_frame_proxy_); 185 vie_encoder_->RegisterPostEncodeImageCallback(&encoded_frame_proxy_);
186 186
187 if (config_.suspend_below_min_bitrate) { 187 if (config_.suspend_below_min_bitrate) {
188 vie_encoder_->SuspendBelowMinBitrate(); 188 vie_encoder_->SuspendBelowMinBitrate();
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 vie_channel_->StopSend(); 244 vie_channel_->StopSend();
245 vie_channel_->StopReceive(); 245 vie_channel_->StopReceive();
246 transport_adapter_.Disable(); 246 transport_adapter_.Disable();
247 } 247 }
248 248
249 bool VideoSendStream::ReconfigureVideoEncoder( 249 bool VideoSendStream::ReconfigureVideoEncoder(
250 const VideoEncoderConfig& config) { 250 const VideoEncoderConfig& config) {
251 TRACE_EVENT0("webrtc", "VideoSendStream::(Re)configureVideoEncoder"); 251 TRACE_EVENT0("webrtc", "VideoSendStream::(Re)configureVideoEncoder");
252 LOG(LS_INFO) << "(Re)configureVideoEncoder: " << config.ToString(); 252 LOG(LS_INFO) << "(Re)configureVideoEncoder: " << config.ToString();
253 const std::vector<VideoStream>& streams = config.streams; 253 const std::vector<VideoStream>& streams = config.streams;
254 DCHECK(!streams.empty()); 254 RTC_DCHECK(!streams.empty());
255 DCHECK_GE(config_.rtp.ssrcs.size(), streams.size()); 255 RTC_DCHECK_GE(config_.rtp.ssrcs.size(), streams.size());
256 256
257 VideoCodec video_codec; 257 VideoCodec video_codec;
258 memset(&video_codec, 0, sizeof(video_codec)); 258 memset(&video_codec, 0, sizeof(video_codec));
259 if (config_.encoder_settings.payload_name == "VP8") { 259 if (config_.encoder_settings.payload_name == "VP8") {
260 video_codec.codecType = kVideoCodecVP8; 260 video_codec.codecType = kVideoCodecVP8;
261 } else if (config_.encoder_settings.payload_name == "VP9") { 261 } else if (config_.encoder_settings.payload_name == "VP9") {
262 video_codec.codecType = kVideoCodecVP9; 262 video_codec.codecType = kVideoCodecVP9;
263 } else if (config_.encoder_settings.payload_name == "H264") { 263 } else if (config_.encoder_settings.payload_name == "H264") {
264 video_codec.codecType = kVideoCodecH264; 264 video_codec.codecType = kVideoCodecH264;
265 } else { 265 } else {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 video_codec.codecSpecific.VP9.numberOfTemporalLayers = 304 video_codec.codecSpecific.VP9.numberOfTemporalLayers =
305 static_cast<unsigned char>( 305 static_cast<unsigned char>(
306 streams.back().temporal_layer_thresholds_bps.size() + 1); 306 streams.back().temporal_layer_thresholds_bps.size() + 1);
307 } else if (video_codec.codecType == kVideoCodecH264) { 307 } else if (video_codec.codecType == kVideoCodecH264) {
308 if (config.encoder_specific_settings != nullptr) { 308 if (config.encoder_specific_settings != nullptr) {
309 video_codec.codecSpecific.H264 = *reinterpret_cast<const VideoCodecH264*>( 309 video_codec.codecSpecific.H264 = *reinterpret_cast<const VideoCodecH264*>(
310 config.encoder_specific_settings); 310 config.encoder_specific_settings);
311 } 311 }
312 } else { 312 } else {
313 // TODO(pbos): Support encoder_settings codec-agnostically. 313 // TODO(pbos): Support encoder_settings codec-agnostically.
314 DCHECK(config.encoder_specific_settings == nullptr) 314 RTC_DCHECK(config.encoder_specific_settings == nullptr)
315 << "Encoder-specific settings for codec type not wired up."; 315 << "Encoder-specific settings for codec type not wired up.";
316 } 316 }
317 317
318 strncpy(video_codec.plName, 318 strncpy(video_codec.plName,
319 config_.encoder_settings.payload_name.c_str(), 319 config_.encoder_settings.payload_name.c_str(),
320 kPayloadNameSize - 1); 320 kPayloadNameSize - 1);
321 video_codec.plName[kPayloadNameSize - 1] = '\0'; 321 video_codec.plName[kPayloadNameSize - 1] = '\0';
322 video_codec.plType = config_.encoder_settings.payload_type; 322 video_codec.plType = config_.encoder_settings.payload_type;
323 video_codec.numberOfSimulcastStreams = 323 video_codec.numberOfSimulcastStreams =
324 static_cast<unsigned char>(streams.size()); 324 static_cast<unsigned char>(streams.size());
325 video_codec.minBitrate = streams[0].min_bitrate_bps / 1000; 325 video_codec.minBitrate = streams[0].min_bitrate_bps / 1000;
326 DCHECK_LE(streams.size(), static_cast<size_t>(kMaxSimulcastStreams)); 326 RTC_DCHECK_LE(streams.size(), static_cast<size_t>(kMaxSimulcastStreams));
327 for (size_t i = 0; i < streams.size(); ++i) { 327 for (size_t i = 0; i < streams.size(); ++i) {
328 SimulcastStream* sim_stream = &video_codec.simulcastStream[i]; 328 SimulcastStream* sim_stream = &video_codec.simulcastStream[i];
329 DCHECK_GT(streams[i].width, 0u); 329 RTC_DCHECK_GT(streams[i].width, 0u);
330 DCHECK_GT(streams[i].height, 0u); 330 RTC_DCHECK_GT(streams[i].height, 0u);
331 DCHECK_GT(streams[i].max_framerate, 0); 331 RTC_DCHECK_GT(streams[i].max_framerate, 0);
332 // Different framerates not supported per stream at the moment. 332 // Different framerates not supported per stream at the moment.
333 DCHECK_EQ(streams[i].max_framerate, streams[0].max_framerate); 333 RTC_DCHECK_EQ(streams[i].max_framerate, streams[0].max_framerate);
334 DCHECK_GE(streams[i].min_bitrate_bps, 0); 334 RTC_DCHECK_GE(streams[i].min_bitrate_bps, 0);
335 DCHECK_GE(streams[i].target_bitrate_bps, streams[i].min_bitrate_bps); 335 RTC_DCHECK_GE(streams[i].target_bitrate_bps, streams[i].min_bitrate_bps);
336 DCHECK_GE(streams[i].max_bitrate_bps, streams[i].target_bitrate_bps); 336 RTC_DCHECK_GE(streams[i].max_bitrate_bps, streams[i].target_bitrate_bps);
337 DCHECK_GE(streams[i].max_qp, 0); 337 RTC_DCHECK_GE(streams[i].max_qp, 0);
338 338
339 sim_stream->width = static_cast<unsigned short>(streams[i].width); 339 sim_stream->width = static_cast<unsigned short>(streams[i].width);
340 sim_stream->height = static_cast<unsigned short>(streams[i].height); 340 sim_stream->height = static_cast<unsigned short>(streams[i].height);
341 sim_stream->minBitrate = streams[i].min_bitrate_bps / 1000; 341 sim_stream->minBitrate = streams[i].min_bitrate_bps / 1000;
342 sim_stream->targetBitrate = streams[i].target_bitrate_bps / 1000; 342 sim_stream->targetBitrate = streams[i].target_bitrate_bps / 1000;
343 sim_stream->maxBitrate = streams[i].max_bitrate_bps / 1000; 343 sim_stream->maxBitrate = streams[i].max_bitrate_bps / 1000;
344 sim_stream->qpMax = streams[i].max_qp; 344 sim_stream->qpMax = streams[i].max_qp;
345 sim_stream->numberOfTemporalLayers = static_cast<unsigned char>( 345 sim_stream->numberOfTemporalLayers = static_cast<unsigned char>(
346 streams[i].temporal_layer_thresholds_bps.size() + 1); 346 streams[i].temporal_layer_thresholds_bps.size() + 1);
347 347
348 video_codec.width = std::max(video_codec.width, 348 video_codec.width = std::max(video_codec.width,
349 static_cast<unsigned short>(streams[i].width)); 349 static_cast<unsigned short>(streams[i].width));
350 video_codec.height = std::max( 350 video_codec.height = std::max(
351 video_codec.height, static_cast<unsigned short>(streams[i].height)); 351 video_codec.height, static_cast<unsigned short>(streams[i].height));
352 video_codec.minBitrate = 352 video_codec.minBitrate =
353 std::min(video_codec.minBitrate, 353 std::min(video_codec.minBitrate,
354 static_cast<unsigned int>(streams[i].min_bitrate_bps / 1000)); 354 static_cast<unsigned int>(streams[i].min_bitrate_bps / 1000));
355 video_codec.maxBitrate += streams[i].max_bitrate_bps / 1000; 355 video_codec.maxBitrate += streams[i].max_bitrate_bps / 1000;
356 video_codec.qpMax = std::max(video_codec.qpMax, 356 video_codec.qpMax = std::max(video_codec.qpMax,
357 static_cast<unsigned int>(streams[i].max_qp)); 357 static_cast<unsigned int>(streams[i].max_qp));
358 } 358 }
359 359
360 // Set to zero to not update the bitrate controller from ViEEncoder, as 360 // Set to zero to not update the bitrate controller from ViEEncoder, as
361 // the bitrate controller is already set from Call. 361 // the bitrate controller is already set from Call.
362 video_codec.startBitrate = 0; 362 video_codec.startBitrate = 0;
363 363
364 DCHECK_GT(streams[0].max_framerate, 0); 364 RTC_DCHECK_GT(streams[0].max_framerate, 0);
365 video_codec.maxFramerate = streams[0].max_framerate; 365 video_codec.maxFramerate = streams[0].max_framerate;
366 366
367 if (!SetSendCodec(video_codec)) 367 if (!SetSendCodec(video_codec))
368 return false; 368 return false;
369 369
370 // Clear stats for disabled layers. 370 // Clear stats for disabled layers.
371 for (size_t i = video_codec.numberOfSimulcastStreams; 371 for (size_t i = video_codec.numberOfSimulcastStreams;
372 i < config_.rtp.ssrcs.size(); ++i) { 372 i < config_.rtp.ssrcs.size(); ++i) {
373 stats_proxy_.OnInactiveSsrc(config_.rtp.ssrcs[i]); 373 stats_proxy_.OnInactiveSsrc(config_.rtp.ssrcs[i]);
374 } 374 }
375 375
376 DCHECK_GE(config.min_transmit_bitrate_bps, 0); 376 RTC_DCHECK_GE(config.min_transmit_bitrate_bps, 0);
377 vie_encoder_->SetMinTransmitBitrate(config.min_transmit_bitrate_bps / 1000); 377 vie_encoder_->SetMinTransmitBitrate(config.min_transmit_bitrate_bps / 1000);
378 378
379 encoder_config_ = config; 379 encoder_config_ = config;
380 use_config_bitrate_ = false; 380 use_config_bitrate_ = false;
381 return true; 381 return true;
382 } 382 }
383 383
384 bool VideoSendStream::DeliverRtcp(const uint8_t* packet, size_t length) { 384 bool VideoSendStream::DeliverRtcp(const uint8_t* packet, size_t length) {
385 return vie_channel_->ReceivedRTCPPacket(packet, length) == 0; 385 return vie_channel_->ReceivedRTCPPacket(packet, length) == 0;
386 } 386 }
(...skipping 21 matching lines...) Expand all
408 RtpStateMap::iterator it = suspended_ssrcs_.find(ssrc); 408 RtpStateMap::iterator it = suspended_ssrcs_.find(ssrc);
409 if (it != suspended_ssrcs_.end()) 409 if (it != suspended_ssrcs_.end())
410 vie_channel_->SetRtpStateForSsrc(ssrc, it->second); 410 vie_channel_->SetRtpStateForSsrc(ssrc, it->second);
411 } 411 }
412 412
413 if (config_.rtp.rtx.ssrcs.empty()) { 413 if (config_.rtp.rtx.ssrcs.empty()) {
414 return; 414 return;
415 } 415 }
416 416
417 // Set up RTX. 417 // Set up RTX.
418 DCHECK_EQ(config_.rtp.rtx.ssrcs.size(), config_.rtp.ssrcs.size()); 418 RTC_DCHECK_EQ(config_.rtp.rtx.ssrcs.size(), config_.rtp.ssrcs.size());
419 for (size_t i = 0; i < config_.rtp.rtx.ssrcs.size(); ++i) { 419 for (size_t i = 0; i < config_.rtp.rtx.ssrcs.size(); ++i) {
420 uint32_t ssrc = config_.rtp.rtx.ssrcs[i]; 420 uint32_t ssrc = config_.rtp.rtx.ssrcs[i];
421 vie_channel_->SetSSRC(config_.rtp.rtx.ssrcs[i], kViEStreamTypeRtx, 421 vie_channel_->SetSSRC(config_.rtp.rtx.ssrcs[i], kViEStreamTypeRtx,
422 static_cast<unsigned char>(i)); 422 static_cast<unsigned char>(i));
423 RtpStateMap::iterator it = suspended_ssrcs_.find(ssrc); 423 RtpStateMap::iterator it = suspended_ssrcs_.find(ssrc);
424 if (it != suspended_ssrcs_.end()) 424 if (it != suspended_ssrcs_.end())
425 vie_channel_->SetRtpStateForSsrc(ssrc, it->second); 425 vie_channel_->SetRtpStateForSsrc(ssrc, it->second);
426 } 426 }
427 427
428 DCHECK_GE(config_.rtp.rtx.payload_type, 0); 428 RTC_DCHECK_GE(config_.rtp.rtx.payload_type, 0);
429 vie_channel_->SetRtxSendPayloadType(config_.rtp.rtx.payload_type, 429 vie_channel_->SetRtxSendPayloadType(config_.rtp.rtx.payload_type,
430 config_.encoder_settings.payload_type); 430 config_.encoder_settings.payload_type);
431 } 431 }
432 432
433 std::map<uint32_t, RtpState> VideoSendStream::GetRtpStates() const { 433 std::map<uint32_t, RtpState> VideoSendStream::GetRtpStates() const {
434 std::map<uint32_t, RtpState> rtp_states; 434 std::map<uint32_t, RtpState> rtp_states;
435 for (size_t i = 0; i < config_.rtp.ssrcs.size(); ++i) { 435 for (size_t i = 0; i < config_.rtp.ssrcs.size(); ++i) {
436 uint32_t ssrc = config_.rtp.ssrcs[i]; 436 uint32_t ssrc = config_.rtp.ssrcs[i];
437 rtp_states[ssrc] = vie_channel_->GetRtpStateForSsrc( ssrc); 437 rtp_states[ssrc] = vie_channel_->GetRtpStateForSsrc( ssrc);
438 } 438 }
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 vie_channel_->IsSendingFecEnabled()); 510 vie_channel_->IsSendingFecEnabled());
511 511
512 // Restart the media flow 512 // Restart the media flow
513 vie_encoder_->Restart(); 513 vie_encoder_->Restart();
514 514
515 return true; 515 return true;
516 } 516 }
517 517
518 } // namespace internal 518 } // namespace internal
519 } // namespace webrtc 519 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/video_receive_stream.cc ('k') | webrtc/video/video_send_stream_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698