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

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

Issue 1244753002: Remove kProtectionKey* and VCMKeyRequestMode. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 5 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
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 24 matching lines...) Expand all
35 _frameTypeCallback(NULL), 35 _frameTypeCallback(NULL),
36 _receiveStatsCallback(NULL), 36 _receiveStatsCallback(NULL),
37 _decoderTimingCallback(NULL), 37 _decoderTimingCallback(NULL),
38 _packetRequestCallback(NULL), 38 _packetRequestCallback(NULL),
39 render_buffer_callback_(NULL), 39 render_buffer_callback_(NULL),
40 _decoder(NULL), 40 _decoder(NULL),
41 #ifdef DEBUG_DECODER_BIT_STREAM 41 #ifdef DEBUG_DECODER_BIT_STREAM
42 _bitStreamBeforeDecoder(NULL), 42 _bitStreamBeforeDecoder(NULL),
43 #endif 43 #endif
44 _frameFromFile(), 44 _frameFromFile(),
45 _keyRequestMode(kKeyOnError),
46 _scheduleKeyRequest(false), 45 _scheduleKeyRequest(false),
47 max_nack_list_size_(0), 46 max_nack_list_size_(0),
48 pre_decode_image_callback_(NULL), 47 pre_decode_image_callback_(NULL),
49 _codecDataBase(NULL), 48 _codecDataBase(NULL),
50 _receiveStatsTimer(1000, clock_), 49 _receiveStatsTimer(1000, clock_),
51 _retransmissionTimer(10, clock_), 50 _retransmissionTimer(10, clock_),
52 _keyRequestTimer(500, clock_) { 51 _keyRequestTimer(500, clock_) {
53 assert(clock_); 52 assert(clock_);
54 #ifdef DEBUG_DECODER_BIT_STREAM 53 #ifdef DEBUG_DECODER_BIT_STREAM
55 _bitStreamBeforeDecoder = fopen("decoderBitStream.bit", "wb"); 54 _bitStreamBeforeDecoder = fopen("decoderBitStream.bit", "wb");
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 bool enable) { 186 bool enable) {
188 // By default, do not decode with errors. 187 // By default, do not decode with errors.
189 _receiver.SetDecodeErrorMode(kNoErrors); 188 _receiver.SetDecodeErrorMode(kNoErrors);
190 switch (videoProtection) { 189 switch (videoProtection) {
191 case kProtectionNack: { 190 case kProtectionNack: {
192 DCHECK(enable); 191 DCHECK(enable);
193 _receiver.SetNackMode(kNack, -1, -1); 192 _receiver.SetNackMode(kNack, -1, -1);
194 break; 193 break;
195 } 194 }
196 195
197 case kProtectionKeyOnLoss: {
198 CriticalSectionScoped cs(_receiveCritSect);
199 if (enable) {
200 _keyRequestMode = kKeyOnLoss;
201 _receiver.SetDecodeErrorMode(kWithErrors);
202 } else if (_keyRequestMode == kKeyOnLoss) {
203 _keyRequestMode = kKeyOnError; // default mode
204 } else {
205 return VCM_PARAMETER_ERROR;
206 }
207 break;
208 }
209
210 case kProtectionKeyOnKeyLoss: {
211 CriticalSectionScoped cs(_receiveCritSect);
212 if (enable) {
213 _keyRequestMode = kKeyOnKeyLoss;
214 } else if (_keyRequestMode == kKeyOnKeyLoss) {
215 _keyRequestMode = kKeyOnError; // default mode
216 } else {
217 return VCM_PARAMETER_ERROR;
218 }
219 break;
220 }
221
222 case kProtectionNackFEC: { 196 case kProtectionNackFEC: {
223 CriticalSectionScoped cs(_receiveCritSect); 197 CriticalSectionScoped cs(_receiveCritSect);
224 DCHECK(enable); 198 DCHECK(enable);
225 _receiver.SetNackMode(kNack, media_optimization::kLowRttNackMs, -1); 199 _receiver.SetNackMode(kNack, media_optimization::kLowRttNackMs, -1);
226 _receiver.SetDecodeErrorMode(kNoErrors); 200 _receiver.SetDecodeErrorMode(kNoErrors);
227 break; 201 break;
228 } 202 }
229 case kProtectionFEC: 203 case kProtectionFEC:
230 case kProtectionNone: 204 case kProtectionNone:
231 // No receiver-side protection. 205 // No receiver-side protection.
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 return RequestSliceLossIndication( 386 return RequestSliceLossIndication(
413 _decodedFrameCallback.LastReceivedPictureID() + 1); 387 _decodedFrameCallback.LastReceivedPictureID() + 1);
414 } else { 388 } else {
415 request_key_frame = true; 389 request_key_frame = true;
416 } 390 }
417 } else if (ret == VCM_REQUEST_SLI) { 391 } else if (ret == VCM_REQUEST_SLI) {
418 ret = RequestSliceLossIndication( 392 ret = RequestSliceLossIndication(
419 _decodedFrameCallback.LastReceivedPictureID() + 1); 393 _decodedFrameCallback.LastReceivedPictureID() + 1);
420 } 394 }
421 if (!frame.Complete() || frame.MissingFrame()) { 395 if (!frame.Complete() || frame.MissingFrame()) {
422 switch (_keyRequestMode) { 396 request_key_frame = true;
stefan-webrtc 2015/07/27 13:01:08 Not sure about this change. I think I'd prefer for
pbos-webrtc 2015/07/27 13:05:11 Right now it's a no-op since this mode was always
423 case kKeyOnKeyLoss: { 397 ret = VCM_OK;
424 if (frame.FrameType() == kVideoFrameKey) {
425 request_key_frame = true;
426 ret = VCM_OK;
427 }
428 break;
429 }
430 case kKeyOnLoss: {
431 request_key_frame = true;
432 ret = VCM_OK;
433 break;
434 }
435 default:
436 break;
437 }
438 } 398 }
439 if (request_key_frame) { 399 if (request_key_frame) {
440 CriticalSectionScoped cs(process_crit_sect_.get()); 400 CriticalSectionScoped cs(process_crit_sect_.get());
441 _scheduleKeyRequest = true; 401 _scheduleKeyRequest = true;
442 } 402 }
443 TRACE_EVENT_ASYNC_END0("webrtc", "Video", frame.TimeStamp()); 403 TRACE_EVENT_ASYNC_END0("webrtc", "Video", frame.TimeStamp());
444 return ret; 404 return ret;
445 } 405 }
446 406
447 // Reset the decoder state 407 // Reset the decoder state
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 return _receiver.DiscardedPackets(); 505 return _receiver.DiscardedPackets();
546 } 506 }
547 507
548 int VideoReceiver::SetReceiverRobustnessMode( 508 int VideoReceiver::SetReceiverRobustnessMode(
549 ReceiverRobustness robustnessMode, 509 ReceiverRobustness robustnessMode,
550 VCMDecodeErrorMode decode_error_mode) { 510 VCMDecodeErrorMode decode_error_mode) {
551 CriticalSectionScoped cs(_receiveCritSect); 511 CriticalSectionScoped cs(_receiveCritSect);
552 switch (robustnessMode) { 512 switch (robustnessMode) {
553 case VideoCodingModule::kNone: 513 case VideoCodingModule::kNone:
554 _receiver.SetNackMode(kNoNack, -1, -1); 514 _receiver.SetNackMode(kNoNack, -1, -1);
555 if (decode_error_mode == kNoErrors) {
556 _keyRequestMode = kKeyOnLoss;
557 } else {
558 _keyRequestMode = kKeyOnError;
559 }
560 break; 515 break;
561 case VideoCodingModule::kHardNack: 516 case VideoCodingModule::kHardNack:
562 // Always wait for retransmissions (except when decoding with errors). 517 // Always wait for retransmissions (except when decoding with errors).
563 _receiver.SetNackMode(kNack, -1, -1); 518 _receiver.SetNackMode(kNack, -1, -1);
564 _keyRequestMode = kKeyOnError; // TODO(hlundin): On long NACK list?
565 break; 519 break;
566 case VideoCodingModule::kSoftNack: 520 case VideoCodingModule::kSoftNack:
567 #if 1 521 #if 1
568 assert(false); // TODO(hlundin): Not completed. 522 assert(false); // TODO(hlundin): Not completed.
569 return VCM_NOT_IMPLEMENTED; 523 return VCM_NOT_IMPLEMENTED;
570 #else 524 #else
571 // Enable hybrid NACK/FEC. Always wait for retransmissions and don't add 525 // Enable hybrid NACK/FEC. Always wait for retransmissions and don't add
572 // extra delay when RTT is above kLowRttNackMs. 526 // extra delay when RTT is above kLowRttNackMs.
573 _receiver.SetNackMode(kNack, media_optimization::kLowRttNackMs, -1); 527 _receiver.SetNackMode(kNack, media_optimization::kLowRttNackMs, -1);
574 _keyRequestMode = kKeyOnError;
575 break; 528 break;
576 #endif 529 #endif
577 case VideoCodingModule::kReferenceSelection: 530 case VideoCodingModule::kReferenceSelection:
578 #if 1 531 #if 1
579 assert(false); // TODO(hlundin): Not completed. 532 assert(false); // TODO(hlundin): Not completed.
580 return VCM_NOT_IMPLEMENTED; 533 return VCM_NOT_IMPLEMENTED;
581 #else 534 #else
582 if (decode_error_mode == kNoErrors) { 535 if (decode_error_mode == kNoErrors) {
583 return VCM_PARAMETER_ERROR; 536 return VCM_PARAMETER_ERROR;
584 } 537 }
(...skipping 26 matching lines...) Expand all
611 } 564 }
612 565
613 void VideoReceiver::RegisterPreDecodeImageCallback( 566 void VideoReceiver::RegisterPreDecodeImageCallback(
614 EncodedImageCallback* observer) { 567 EncodedImageCallback* observer) {
615 CriticalSectionScoped cs(_receiveCritSect); 568 CriticalSectionScoped cs(_receiveCritSect);
616 pre_decode_image_callback_ = observer; 569 pre_decode_image_callback_ = observer;
617 } 570 }
618 571
619 } // namespace vcm 572 } // namespace vcm
620 } // namespace webrtc 573 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/main/source/video_coding_impl.h ('k') | webrtc/modules/video_coding/main/source/video_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698