| Index: webrtc/modules/video_coding/media_opt_util.cc
|
| diff --git a/webrtc/modules/video_coding/media_opt_util.cc b/webrtc/modules/video_coding/media_opt_util.cc
|
| index 42db2facf1cf4252775cb5d7f4c6510635041e50..69cf757f2b45adeb8804e2c9b726ed0f0e61d0c2 100644
|
| --- a/webrtc/modules/video_coding/media_opt_util.cc
|
| +++ b/webrtc/modules/video_coding/media_opt_util.cc
|
| @@ -34,10 +34,19 @@
|
| _protectionFactorD(0),
|
| _scaleProtKey(2.0f),
|
| _maxPayloadSize(1460),
|
| + _qmRobustness(new VCMQmRobustness()),
|
| + _useUepProtectionK(false),
|
| + _useUepProtectionD(true),
|
| _corrFecCost(1.0),
|
| _type(kNone) {}
|
|
|
| -VCMProtectionMethod::~VCMProtectionMethod() {}
|
| +VCMProtectionMethod::~VCMProtectionMethod() {
|
| + delete _qmRobustness;
|
| +}
|
| +void VCMProtectionMethod::UpdateContentMetrics(
|
| + const VideoContentMetrics* contentMetrics) {
|
| + _qmRobustness->UpdateContent(contentMetrics);
|
| +}
|
|
|
| VCMNackFecMethod::VCMNackFecMethod(int64_t lowRttNackThresholdMs,
|
| int64_t highRttNackThresholdMs)
|
| @@ -324,6 +333,17 @@
|
| codeRateDelta = kPacketLossMax - 1;
|
| }
|
|
|
| + float adjustFec = 1.0f;
|
| + // Avoid additional adjustments when layers are active.
|
| + // TODO(mikhal/marco): Update adjusmtent based on layer info.
|
| + if (parameters->numLayers == 1) {
|
| + adjustFec = _qmRobustness->AdjustFecFactor(
|
| + codeRateDelta, parameters->bitRate, parameters->frameRate,
|
| + parameters->rtt, packetLoss);
|
| + }
|
| +
|
| + codeRateDelta = static_cast<uint8_t>(codeRateDelta * adjustFec);
|
| +
|
| // For Key frame:
|
| // Effectively at a higher rate, so we scale/boost the rate
|
| // The boost factor may depend on several factors: ratio of packet
|
| @@ -390,6 +410,13 @@
|
| if (estNumFecGen < 0.9f && _protectionFactorD < minProtLevelFec) {
|
| _corrFecCost = 0.0f;
|
| }
|
| +
|
| + // TODO(marpan): Set the UEP protection on/off for Key and Delta frames
|
| + _useUepProtectionK = _qmRobustness->SetUepProtection(
|
| + codeRateKey, parameters->bitRate, packetLoss, 0);
|
| +
|
| + _useUepProtectionD = _qmRobustness->SetUepProtection(
|
| + codeRateDelta, parameters->bitRate, packetLoss, 1);
|
|
|
| // DONE WITH FEC PROTECTION SETTINGS
|
| return true;
|
|
|