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

Side by Side Diff: webrtc/modules/video_coding/video_receiver.cc

Issue 2755803004: Delete video_coding_robustness_unittest.cc (Closed)
Patch Set: Bring back morar impl Created 3 years, 9 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/modules/video_coding/video_coding_robustness_unittest.cc ('k') | no next file » | 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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 } 122 }
123 123
124 int32_t VideoReceiver::SetReceiveChannelParameters(int64_t rtt) { 124 int32_t VideoReceiver::SetReceiveChannelParameters(int64_t rtt) {
125 rtc::CritScope cs(&receive_crit_); 125 rtc::CritScope cs(&receive_crit_);
126 _receiver.UpdateRtt(rtt); 126 _receiver.UpdateRtt(rtt);
127 return 0; 127 return 0;
128 } 128 }
129 129
130 // Enable or disable a video protection method. 130 // Enable or disable a video protection method.
131 // Note: This API should be deprecated, as it does not offer a distinction 131 // Note: This API should be deprecated, as it does not offer a distinction
132 // between the protection method and decoding with or without errors. If such a 132 // between the protection method and decoding with or without errors.
133 // behavior is desired, use the following API: SetReceiverRobustnessMode.
134 int32_t VideoReceiver::SetVideoProtection(VCMVideoProtection videoProtection, 133 int32_t VideoReceiver::SetVideoProtection(VCMVideoProtection videoProtection,
135 bool enable) { 134 bool enable) {
136 // By default, do not decode with errors. 135 // By default, do not decode with errors.
137 _receiver.SetDecodeErrorMode(kNoErrors); 136 _receiver.SetDecodeErrorMode(kNoErrors);
138 switch (videoProtection) { 137 switch (videoProtection) {
139 case kProtectionNack: { 138 case kProtectionNack: {
140 RTC_DCHECK(enable); 139 RTC_DCHECK(enable);
141 _receiver.SetNackMode(kNack, -1, -1); 140 _receiver.SetNackMode(kNack, -1, -1);
142 break; 141 break;
143 } 142 }
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 _timing->set_render_delay(timeMS); 404 _timing->set_render_delay(timeMS);
406 return VCM_OK; 405 return VCM_OK;
407 } 406 }
408 407
409 // Current video delay 408 // Current video delay
410 int32_t VideoReceiver::Delay() const { 409 int32_t VideoReceiver::Delay() const {
411 return _timing->TargetVideoDelay(); 410 return _timing->TargetVideoDelay();
412 } 411 }
413 412
414 int VideoReceiver::SetReceiverRobustnessMode( 413 int VideoReceiver::SetReceiverRobustnessMode(
415 ReceiverRobustness robustnessMode, 414 VideoCodingModule::ReceiverRobustness robustnessMode,
416 VCMDecodeErrorMode decode_error_mode) { 415 VCMDecodeErrorMode decode_error_mode) {
416 RTC_DCHECK(construction_thread_.CalledOnValidThread());
417 // TODO(tommi): This method must only be called when the decoder thread
418 // is not running and we don't need to hold this lock.
417 rtc::CritScope cs(&receive_crit_); 419 rtc::CritScope cs(&receive_crit_);
418 switch (robustnessMode) { 420 switch (robustnessMode) {
419 case VideoCodingModule::kNone: 421 case VideoCodingModule::kNone:
420 _receiver.SetNackMode(kNoNack, -1, -1); 422 _receiver.SetNackMode(kNoNack, -1, -1);
421 break; 423 break;
422 case VideoCodingModule::kHardNack: 424 case VideoCodingModule::kHardNack:
423 // Always wait for retransmissions (except when decoding with errors). 425 // Always wait for retransmissions (except when decoding with errors).
424 _receiver.SetNackMode(kNack, -1, -1); 426 _receiver.SetNackMode(kNack, -1, -1);
425 break; 427 break;
426 case VideoCodingModule::kSoftNack: 428 default:
427 #if 1 429 RTC_NOTREACHED();
428 assert(false); // TODO(hlundin): Not completed. 430 return VCM_PARAMETER_ERROR;
429 return VCM_NOT_IMPLEMENTED;
430 #else
431 // Enable hybrid NACK/FEC. Always wait for retransmissions and don't add
432 // extra delay when RTT is above kLowRttNackMs.
433 _receiver.SetNackMode(kNack, media_optimization::kLowRttNackMs, -1);
434 break;
435 #endif
436 case VideoCodingModule::kReferenceSelection:
437 #if 1
438 assert(false); // TODO(hlundin): Not completed.
439 return VCM_NOT_IMPLEMENTED;
440 #else
441 if (decode_error_mode == kNoErrors) {
442 return VCM_PARAMETER_ERROR;
443 }
444 _receiver.SetNackMode(kNoNack, -1, -1);
445 break;
446 #endif
447 } 431 }
448 _receiver.SetDecodeErrorMode(decode_error_mode); 432 _receiver.SetDecodeErrorMode(decode_error_mode);
449 return VCM_OK; 433 return VCM_OK;
450 } 434 }
451 435
452 void VideoReceiver::SetDecodeErrorMode(VCMDecodeErrorMode decode_error_mode) { 436 void VideoReceiver::SetDecodeErrorMode(VCMDecodeErrorMode decode_error_mode) {
453 rtc::CritScope cs(&receive_crit_); 437 rtc::CritScope cs(&receive_crit_);
454 _receiver.SetDecodeErrorMode(decode_error_mode); 438 _receiver.SetDecodeErrorMode(decode_error_mode);
455 } 439 }
456 440
457 void VideoReceiver::SetNackSettings(size_t max_nack_list_size, 441 void VideoReceiver::SetNackSettings(size_t max_nack_list_size,
458 int max_packet_age_to_nack, 442 int max_packet_age_to_nack,
459 int max_incomplete_time_ms) { 443 int max_incomplete_time_ms) {
460 if (max_nack_list_size != 0) { 444 if (max_nack_list_size != 0) {
461 rtc::CritScope cs(&process_crit_); 445 rtc::CritScope cs(&process_crit_);
462 max_nack_list_size_ = max_nack_list_size; 446 max_nack_list_size_ = max_nack_list_size;
463 } 447 }
464 _receiver.SetNackSettings(max_nack_list_size, max_packet_age_to_nack, 448 _receiver.SetNackSettings(max_nack_list_size, max_packet_age_to_nack,
465 max_incomplete_time_ms); 449 max_incomplete_time_ms);
466 } 450 }
467 451
468 int VideoReceiver::SetMinReceiverDelay(int desired_delay_ms) { 452 int VideoReceiver::SetMinReceiverDelay(int desired_delay_ms) {
469 return _receiver.SetMinReceiverDelay(desired_delay_ms); 453 return _receiver.SetMinReceiverDelay(desired_delay_ms);
470 } 454 }
471 455
472 } // namespace vcm 456 } // namespace vcm
473 } // namespace webrtc 457 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/video_coding_robustness_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698