Remove kProtectionKey* and VCMKeyRequestMode.
Enforces previous kProtectionKeyOnLoss as the permanent method which was the only one used in use. This simplifies SetVideoProtection and transition over to SetReceiverRobustnessMode. BUG=webrtc:1596 R=stefan@webrtc.org Review URL: https://codereview.webrtc.org/1244753002 Cr-Commit-Position: refs/heads/master@{#9641}
This commit is contained in:
@ -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<CriticalSectionWrapper> 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);
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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.
|
||||
|
||||
Reference in New Issue
Block a user