diff --git a/src/modules/video_coding/main/source/media_opt_util.cc b/src/modules/video_coding/main/source/media_opt_util.cc index 8a3c42ee2c..2fbe9c4387 100644 --- a/src/modules/video_coding/main/source/media_opt_util.cc +++ b/src/modules/video_coding/main/source/media_opt_util.cc @@ -76,10 +76,17 @@ VCMNackFecMethod::ProtectionFactor(const // Compute the protection factors VCMFecMethod::ProtectionFactor(parameters); + if (parameters->rtt < kLowRttNackMs) + { + _protectionFactorD = 0; + _protectionFactorK = 0; + VCMFecMethod::UpdateProtectionFactorD(_protectionFactorD); + VCMFecMethod::UpdateProtectionFactorK(_protectionFactorK); + } // When in Hybrid mode (RTT range), adjust FEC rates based on the // RTT (NACK effectiveness) - adjustment factor is in the range [0,1]. - if (parameters->rtt < kHighRttNackMs) + else if (parameters->rtt < kHighRttNackMs) { // TODO(mikhal): Disabling adjustment temporarily. // WebRtc_UWord16 rttIndex = (WebRtc_UWord16) parameters->rtt; @@ -90,7 +97,7 @@ VCMNackFecMethod::ProtectionFactor(const _protectionFactorD = static_cast (adjustRtt * static_cast(_protectionFactorD)); - // update FEC rates after applyingadjustment softness parameter + // update FEC rates after applying adjustment VCMFecMethod::UpdateProtectionFactorD(_protectionFactorD); } @@ -210,6 +217,13 @@ VCMFecMethod::UpdateProtectionFactorD(WebRtc_UWord8 protectionFactorD) _protectionFactorD = protectionFactorD; } +// Update FEC with protectionFactorK +void +VCMFecMethod::UpdateProtectionFactorK(WebRtc_UWord8 protectionFactorK) +{ + _protectionFactorK = protectionFactorK; +} + // AvgRecoveryFEC: computes the residual packet loss (RPL) function. // This is the average recovery from the FEC, assuming random packet loss model. // Computed off-line for a range of FEC code parameters and loss rates. diff --git a/src/modules/video_coding/main/source/media_opt_util.h b/src/modules/video_coding/main/source/media_opt_util.h index 361194464e..b235fc7276 100644 --- a/src/modules/video_coding/main/source/media_opt_util.h +++ b/src/modules/video_coding/main/source/media_opt_util.h @@ -187,6 +187,8 @@ public: float AvgRecoveryFEC(const VCMProtectionParameters* parameters) const; // Update FEC with protectionFactorD void UpdateProtectionFactorD(WebRtc_UWord8 protectionFactorD); + // Update FEC with protectionFactorK + void UpdateProtectionFactorK(WebRtc_UWord8 protectionFactorK); };