diff --git a/webrtc/modules/video_coding/main/interface/video_coding_defines.h b/webrtc/modules/video_coding/main/interface/video_coding_defines.h index 138a3ec721..ff844c663d 100644 --- a/webrtc/modules/video_coding/main/interface/video_coding_defines.h +++ b/webrtc/modules/video_coding/main/interface/video_coding_defines.h @@ -40,11 +40,9 @@ enum { kDefaultStartBitrateKbps = 300 }; enum VCMVideoProtection { kProtectionNone, - kProtectionNack, // Both send-side and receive-side + kProtectionNack, kProtectionFEC, kProtectionNackFEC, - kProtectionKeyOnLoss, - kProtectionKeyOnKeyLoss, }; enum VCMTemporalDecimation { diff --git a/webrtc/modules/video_coding/main/source/video_coding_impl.h b/webrtc/modules/video_coding/main/source/video_coding_impl.h index 575d6551ab..fd3599f52b 100644 --- a/webrtc/modules/video_coding/main/source/video_coding_impl.h +++ b/webrtc/modules/video_coding/main/source/video_coding_impl.h @@ -206,14 +206,6 @@ class VideoReceiver { int32_t RequestSliceLossIndication(const uint64_t pictureID) const; private: - enum VCMKeyRequestMode { - kKeyOnError, // Normal mode, request key frames on decoder error - kKeyOnKeyLoss, // Request key frames on decoder error and on packet loss - // in key frames. - kKeyOnLoss, // Request key frames on decoder error and on packet loss - // in any frame - }; - Clock* const clock_; rtc::scoped_ptr process_crit_sect_; CriticalSectionWrapper* _receiveCritSect; @@ -234,7 +226,6 @@ class VideoReceiver { FILE* _bitStreamBeforeDecoder; #endif VCMFrameBuffer _frameFromFile; - VCMKeyRequestMode _keyRequestMode; bool _scheduleKeyRequest GUARDED_BY(process_crit_sect_); size_t max_nack_list_size_ GUARDED_BY(process_crit_sect_); EncodedImageCallback* pre_decode_image_callback_ GUARDED_BY(_receiveCritSect); diff --git a/webrtc/modules/video_coding/main/source/video_receiver.cc b/webrtc/modules/video_coding/main/source/video_receiver.cc index b728e9b380..8b0509eb1e 100644 --- a/webrtc/modules/video_coding/main/source/video_receiver.cc +++ b/webrtc/modules/video_coding/main/source/video_receiver.cc @@ -42,7 +42,6 @@ VideoReceiver::VideoReceiver(Clock* clock, EventFactory* event_factory) _bitStreamBeforeDecoder(NULL), #endif _frameFromFile(), - _keyRequestMode(kKeyOnError), _scheduleKeyRequest(false), max_nack_list_size_(0), pre_decode_image_callback_(NULL), @@ -194,31 +193,6 @@ int32_t VideoReceiver::SetVideoProtection(VCMVideoProtection videoProtection, break; } - case kProtectionKeyOnLoss: { - CriticalSectionScoped cs(_receiveCritSect); - if (enable) { - _keyRequestMode = kKeyOnLoss; - _receiver.SetDecodeErrorMode(kWithErrors); - } else if (_keyRequestMode == kKeyOnLoss) { - _keyRequestMode = kKeyOnError; // default mode - } else { - return VCM_PARAMETER_ERROR; - } - break; - } - - case kProtectionKeyOnKeyLoss: { - CriticalSectionScoped cs(_receiveCritSect); - if (enable) { - _keyRequestMode = kKeyOnKeyLoss; - } else if (_keyRequestMode == kKeyOnKeyLoss) { - _keyRequestMode = kKeyOnError; // default mode - } else { - return VCM_PARAMETER_ERROR; - } - break; - } - case kProtectionNackFEC: { CriticalSectionScoped cs(_receiveCritSect); DCHECK(enable); @@ -419,22 +393,8 @@ int32_t VideoReceiver::Decode(const VCMEncodedFrame& frame) { _decodedFrameCallback.LastReceivedPictureID() + 1); } if (!frame.Complete() || frame.MissingFrame()) { - switch (_keyRequestMode) { - case kKeyOnKeyLoss: { - if (frame.FrameType() == kVideoFrameKey) { - request_key_frame = true; - ret = VCM_OK; - } - break; - } - case kKeyOnLoss: { - request_key_frame = true; - ret = VCM_OK; - break; - } - default: - break; - } + request_key_frame = true; + ret = VCM_OK; } if (request_key_frame) { CriticalSectionScoped cs(process_crit_sect_.get()); @@ -552,16 +512,10 @@ int VideoReceiver::SetReceiverRobustnessMode( switch (robustnessMode) { case VideoCodingModule::kNone: _receiver.SetNackMode(kNoNack, -1, -1); - if (decode_error_mode == kNoErrors) { - _keyRequestMode = kKeyOnLoss; - } else { - _keyRequestMode = kKeyOnError; - } break; case VideoCodingModule::kHardNack: // Always wait for retransmissions (except when decoding with errors). _receiver.SetNackMode(kNack, -1, -1); - _keyRequestMode = kKeyOnError; // TODO(hlundin): On long NACK list? break; case VideoCodingModule::kSoftNack: #if 1 @@ -571,7 +525,6 @@ int VideoReceiver::SetReceiverRobustnessMode( // Enable hybrid NACK/FEC. Always wait for retransmissions and don't add // extra delay when RTT is above kLowRttNackMs. _receiver.SetNackMode(kNack, media_optimization::kLowRttNackMs, -1); - _keyRequestMode = kKeyOnError; break; #endif case VideoCodingModule::kReferenceSelection: diff --git a/webrtc/modules/video_coding/main/source/video_sender.cc b/webrtc/modules/video_coding/main/source/video_sender.cc index 1be2f06803..8694f5c84e 100644 --- a/webrtc/modules/video_coding/main/source/video_sender.cc +++ b/webrtc/modules/video_coding/main/source/video_sender.cc @@ -311,10 +311,6 @@ void VideoSender::SetVideoProtection(VCMVideoProtection videoProtection) { case kProtectionFEC: _mediaOpt.SetProtectionMethod(media_optimization::kFec); break; - case kProtectionKeyOnLoss: - case kProtectionKeyOnKeyLoss: - // Ignore receiver modes. - return; } } // Add one raw video frame to the encoder, blocking. diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc index 8f4d2c6d59..05671e46fa 100644 --- a/webrtc/video_engine/vie_channel.cc +++ b/webrtc/video_engine/vie_channel.cc @@ -156,9 +156,6 @@ int32_t ViEChannel::Init() { send_payload_router_->SetSendingRtpModules(send_rtp_modules); DCHECK(!send_payload_router_->active()); } - if (vcm_->SetVideoProtection(kProtectionKeyOnLoss, true)) { - return -1; - } if (vcm_->RegisterReceiveCallback(this) != 0) { return -1; }