| 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 24acfe9f669b18187cd8283fafd47cf67ce663b7..ed926e953b23c91941ea54e15fe8c173a9f5dcca 100644
|
| --- a/webrtc/modules/video_coding/media_opt_util.cc
|
| +++ b/webrtc/modules/video_coding/media_opt_util.cc
|
| @@ -15,6 +15,7 @@
|
| #include <math.h>
|
|
|
| #include <algorithm>
|
| +#include <limits>
|
|
|
| #include "webrtc/modules/include/module_common_types.h"
|
| #include "webrtc/modules/video_coding/codecs/vp8/include/vp8_common_types.h"
|
| @@ -244,7 +245,7 @@ bool VCMFecMethod::ProtectionFactor(const VCMProtectionParameters* parameters) {
|
| // FEC PROTECTION SETTINGS: varies with packet loss and bitrate
|
|
|
| // No protection if (filtered) packetLoss is 0
|
| - uint8_t packetLoss = (uint8_t)(255 * parameters->lossPr);
|
| + uint8_t packetLoss = static_cast<uint8_t>(255 * parameters->lossPr);
|
| if (packetLoss == 0) {
|
| _protectionFactorK = 0;
|
| _protectionFactorD = 0;
|
| @@ -255,7 +256,7 @@ bool VCMFecMethod::ProtectionFactor(const VCMProtectionParameters* parameters) {
|
| // first partition size, thresholds, table pars, spatial resoln fac.
|
|
|
| // First partition protection: ~ 20%
|
| - uint8_t firstPartitionProt = (uint8_t)(255 * 0.20);
|
| + uint8_t firstPartitionProt = static_cast<uint8_t>(255 * 0.20);
|
|
|
| // Minimum protection level needed to generate one FEC packet for one
|
| // source packet/frame (in RTP sender)
|
| @@ -282,10 +283,11 @@ bool VCMFecMethod::ProtectionFactor(const VCMProtectionParameters* parameters) {
|
| const int bitRatePerFrame = BitsPerFrame(parameters);
|
|
|
| // Average number of packets per frame (source and fec):
|
| - const uint8_t avgTotPackets =
|
| - 1 + (uint8_t)(static_cast<float>(bitRatePerFrame) * 1000.0 /
|
| - static_cast<float>(8.0 * _maxPayloadSize) +
|
| - 0.5);
|
| + const uint8_t avgTotPackets = static_cast<uint8_t>(
|
| + std::min(static_cast<float>(std::numeric_limits<uint8_t>::max()),
|
| + 1.5f +
|
| + static_cast<float>(bitRatePerFrame) * 1000.0f /
|
| + static_cast<float>(8.0 * _maxPayloadSize)));
|
|
|
| // FEC rate parameters: for P and I frame
|
| uint8_t codeRateDelta = 0;
|
| @@ -296,8 +298,8 @@ bool VCMFecMethod::ProtectionFactor(const VCMProtectionParameters* parameters) {
|
| // from ~200k to ~8000k, for 30fps
|
| const uint16_t effRateFecTable =
|
| static_cast<uint16_t>(resolnFac * bitRatePerFrame);
|
| - uint8_t rateIndexTable = (uint8_t)VCM_MAX(
|
| - VCM_MIN((effRateFecTable - ratePar1) / ratePar1, ratePar2), 0);
|
| + uint8_t rateIndexTable = static_cast<uint8_t>(
|
| + VCM_MAX(VCM_MIN((effRateFecTable - ratePar1) / ratePar1, ratePar2), 0));
|
|
|
| // Restrict packet loss range to 50:
|
| // current tables defined only up to 50%
|
| @@ -328,14 +330,15 @@ bool VCMFecMethod::ProtectionFactor(const VCMProtectionParameters* parameters) {
|
| // Effectively at a higher rate, so we scale/boost the rate
|
| // The boost factor may depend on several factors: ratio of packet
|
| // number of I to P frames, how much protection placed on P frames, etc.
|
| - const uint8_t packetFrameDelta = (uint8_t)(0.5 + parameters->packetsPerFrame);
|
| + const uint8_t packetFrameDelta =
|
| + static_cast<uint8_t>(0.5 + parameters->packetsPerFrame);
|
| const uint8_t packetFrameKey =
|
| - (uint8_t)(0.5 + parameters->packetsPerFrameKey);
|
| + static_cast<uint8_t>(0.5 + parameters->packetsPerFrameKey);
|
| const uint8_t boostKey = BoostCodeRateKey(packetFrameDelta, packetFrameKey);
|
|
|
| - rateIndexTable = (uint8_t)VCM_MAX(
|
| + rateIndexTable = static_cast<uint8_t>(VCM_MAX(
|
| VCM_MIN(1 + (boostKey * effRateFecTable - ratePar1) / ratePar1, ratePar2),
|
| - 0);
|
| + 0));
|
| uint16_t indexTableKey = rateIndexTable * kPacketLossMax + packetLoss;
|
|
|
| indexTableKey = VCM_MIN(indexTableKey, kSizeCodeRateXORTable);
|
|
|