Index: webrtc/modules/video_coding/media_opt_util.h |
diff --git a/webrtc/modules/video_coding/media_opt_util.h b/webrtc/modules/video_coding/media_opt_util.h |
index 9be71678690133ec2baa0672cdfbeac7b0b31b1d..a016a03eab303b8766df176945840590fcb9df0e 100644 |
--- a/webrtc/modules/video_coding/media_opt_util.h |
+++ b/webrtc/modules/video_coding/media_opt_util.h |
@@ -25,7 +25,7 @@ namespace webrtc { |
namespace media_optimization { |
// Number of time periods used for (max) window filter for packet loss |
-// TODO (marpan): set reasonable window size for filtered packet loss, |
+// TODO(marpan): set reasonable window size for filtered packet loss, |
// adjustment should be based on logged/real data of loss stats/correlation. |
enum { kLossPrHistorySize = 10 }; |
@@ -34,331 +34,328 @@ enum { kLossPrShortFilterWinMs = 1000 }; |
// The type of filter used on the received packet loss reports. |
enum FilterPacketLossMode { |
- kNoFilter, // No filtering on received loss. |
- kAvgFilter, // Recursive average filter. |
- kMaxFilter // Max-window filter, over the time interval of: |
- // (kLossPrHistorySize * kLossPrShortFilterWinMs) ms. |
+ kNoFilter, // No filtering on received loss. |
+ kAvgFilter, // Recursive average filter. |
+ kMaxFilter // Max-window filter, over the time interval of: |
+ // (kLossPrHistorySize * kLossPrShortFilterWinMs) ms. |
}; |
// Thresholds for hybrid NACK/FEC |
// common to media optimization and the jitter buffer. |
const int64_t kLowRttNackMs = 20; |
-struct VCMProtectionParameters |
-{ |
- VCMProtectionParameters() : rtt(0), lossPr(0.0f), bitRate(0.0f), |
- packetsPerFrame(0.0f), packetsPerFrameKey(0.0f), frameRate(0.0f), |
- keyFrameSize(0.0f), fecRateDelta(0), fecRateKey(0), |
- codecWidth(0), codecHeight(0), |
- numLayers(1) |
- {} |
- |
- int64_t rtt; |
- float lossPr; |
- float bitRate; |
- float packetsPerFrame; |
- float packetsPerFrameKey; |
- float frameRate; |
- float keyFrameSize; |
- uint8_t fecRateDelta; |
- uint8_t fecRateKey; |
- uint16_t codecWidth; |
- uint16_t codecHeight; |
- int numLayers; |
+struct VCMProtectionParameters { |
+ VCMProtectionParameters() |
+ : rtt(0), |
+ lossPr(0.0f), |
+ bitRate(0.0f), |
+ packetsPerFrame(0.0f), |
+ packetsPerFrameKey(0.0f), |
+ frameRate(0.0f), |
+ keyFrameSize(0.0f), |
+ fecRateDelta(0), |
+ fecRateKey(0), |
+ codecWidth(0), |
+ codecHeight(0), |
+ numLayers(1) {} |
+ |
+ int64_t rtt; |
+ float lossPr; |
+ float bitRate; |
+ float packetsPerFrame; |
+ float packetsPerFrameKey; |
+ float frameRate; |
+ float keyFrameSize; |
+ uint8_t fecRateDelta; |
+ uint8_t fecRateKey; |
+ uint16_t codecWidth; |
+ uint16_t codecHeight; |
+ int numLayers; |
}; |
- |
/******************************/ |
/* VCMProtectionMethod class */ |
/******************************/ |
-enum VCMProtectionMethodEnum |
-{ |
- kNack, |
- kFec, |
- kNackFec, |
- kNone |
-}; |
+enum VCMProtectionMethodEnum { kNack, kFec, kNackFec, kNone }; |
-class VCMLossProbabilitySample |
-{ |
-public: |
- VCMLossProbabilitySample() : lossPr255(0), timeMs(-1) {}; |
+class VCMLossProbabilitySample { |
+ public: |
+ VCMLossProbabilitySample() : lossPr255(0), timeMs(-1) {} |
- uint8_t lossPr255; |
- int64_t timeMs; |
+ uint8_t lossPr255; |
+ int64_t timeMs; |
}; |
- |
-class VCMProtectionMethod |
-{ |
-public: |
- VCMProtectionMethod(); |
- virtual ~VCMProtectionMethod(); |
- |
- // Updates the efficiency of the method using the parameters provided |
- // |
- // Input: |
- // - parameters : Parameters used to calculate efficiency |
- // |
- // Return value : True if this method is recommended in |
- // the given conditions. |
- virtual bool UpdateParameters(const VCMProtectionParameters* parameters) = 0; |
- |
- // Returns the protection type |
- // |
- // Return value : The protection type |
- enum VCMProtectionMethodEnum Type() const { return _type; } |
- |
- // Returns the effective packet loss for ER, required by this protection method |
- // |
- // Return value : Required effective packet loss |
- virtual uint8_t RequiredPacketLossER() { return _effectivePacketLoss; } |
- |
- // Extracts the FEC protection factor for Key frame, required by this protection method |
- // |
- // Return value : Required protectionFactor for Key frame |
- virtual uint8_t RequiredProtectionFactorK() { return _protectionFactorK; } |
- |
- // Extracts the FEC protection factor for Delta frame, required by this protection method |
- // |
- // Return value : Required protectionFactor for delta frame |
- virtual uint8_t RequiredProtectionFactorD() { return _protectionFactorD; } |
- |
- // Extracts whether the FEC Unequal protection (UEP) is used for Key frame. |
- // |
- // Return value : Required Unequal protection on/off state. |
- virtual bool RequiredUepProtectionK() { return _useUepProtectionK; } |
- |
- // Extracts whether the the FEC Unequal protection (UEP) is used for Delta frame. |
- // |
- // Return value : Required Unequal protection on/off state. |
- virtual bool RequiredUepProtectionD() { return _useUepProtectionD; } |
- |
- virtual int MaxFramesFec() const { return 1; } |
- |
- // Updates content metrics |
- void UpdateContentMetrics(const VideoContentMetrics* contentMetrics); |
- |
-protected: |
- |
- uint8_t _effectivePacketLoss; |
- uint8_t _protectionFactorK; |
- uint8_t _protectionFactorD; |
- // Estimation of residual loss after the FEC |
- float _scaleProtKey; |
- int32_t _maxPayloadSize; |
- |
- VCMQmRobustness* _qmRobustness; |
- bool _useUepProtectionK; |
- bool _useUepProtectionD; |
- float _corrFecCost; |
- enum VCMProtectionMethodEnum _type; |
+class VCMProtectionMethod { |
+ public: |
+ VCMProtectionMethod(); |
+ virtual ~VCMProtectionMethod(); |
+ |
+ // Updates the efficiency of the method using the parameters provided |
+ // |
+ // Input: |
+ // - parameters : Parameters used to calculate efficiency |
+ // |
+ // Return value : True if this method is recommended in |
+ // the given conditions. |
+ virtual bool UpdateParameters(const VCMProtectionParameters* parameters) = 0; |
+ |
+ // Returns the protection type |
+ // |
+ // Return value : The protection type |
+ enum VCMProtectionMethodEnum Type() const { return _type; } |
+ |
+ // Returns the effective packet loss for ER, required by this protection |
+ // method |
+ // |
+ // Return value : Required effective packet loss |
+ virtual uint8_t RequiredPacketLossER() { return _effectivePacketLoss; } |
+ |
+ // Extracts the FEC protection factor for Key frame, required by this |
+ // protection method |
+ // |
+ // Return value : Required protectionFactor for Key frame |
+ virtual uint8_t RequiredProtectionFactorK() { return _protectionFactorK; } |
+ |
+ // Extracts the FEC protection factor for Delta frame, required by this |
+ // protection method |
+ // |
+ // Return value : Required protectionFactor for delta frame |
+ virtual uint8_t RequiredProtectionFactorD() { return _protectionFactorD; } |
+ |
+ // Extracts whether the FEC Unequal protection (UEP) is used for Key frame. |
+ // |
+ // Return value : Required Unequal protection on/off state. |
+ virtual bool RequiredUepProtectionK() { return _useUepProtectionK; } |
+ |
+ // Extracts whether the the FEC Unequal protection (UEP) is used for Delta |
+ // frame. |
+ // |
+ // Return value : Required Unequal protection on/off state. |
+ virtual bool RequiredUepProtectionD() { return _useUepProtectionD; } |
+ |
+ virtual int MaxFramesFec() const { return 1; } |
+ |
+ // Updates content metrics |
+ void UpdateContentMetrics(const VideoContentMetrics* contentMetrics); |
+ |
+ protected: |
+ uint8_t _effectivePacketLoss; |
+ uint8_t _protectionFactorK; |
+ uint8_t _protectionFactorD; |
+ // Estimation of residual loss after the FEC |
+ float _scaleProtKey; |
+ int32_t _maxPayloadSize; |
+ |
+ VCMQmRobustness* _qmRobustness; |
+ bool _useUepProtectionK; |
+ bool _useUepProtectionD; |
+ float _corrFecCost; |
+ enum VCMProtectionMethodEnum _type; |
}; |
-class VCMNackMethod : public VCMProtectionMethod |
-{ |
-public: |
- VCMNackMethod(); |
- virtual ~VCMNackMethod(); |
- virtual bool UpdateParameters(const VCMProtectionParameters* parameters); |
- // Get the effective packet loss |
- bool EffectivePacketLoss(const VCMProtectionParameters* parameter); |
+class VCMNackMethod : public VCMProtectionMethod { |
+ public: |
+ VCMNackMethod(); |
+ virtual ~VCMNackMethod(); |
+ virtual bool UpdateParameters(const VCMProtectionParameters* parameters); |
+ // Get the effective packet loss |
+ bool EffectivePacketLoss(const VCMProtectionParameters* parameter); |
}; |
-class VCMFecMethod : public VCMProtectionMethod |
-{ |
-public: |
- VCMFecMethod(); |
- virtual ~VCMFecMethod(); |
- virtual bool UpdateParameters(const VCMProtectionParameters* parameters); |
- // Get the effective packet loss for ER |
- bool EffectivePacketLoss(const VCMProtectionParameters* parameters); |
- // Get the FEC protection factors |
- bool ProtectionFactor(const VCMProtectionParameters* parameters); |
- // Get the boost for key frame protection |
- uint8_t BoostCodeRateKey(uint8_t packetFrameDelta, |
- uint8_t packetFrameKey) const; |
- // Convert the rates: defined relative to total# packets or source# packets |
- uint8_t ConvertFECRate(uint8_t codeRate) const; |
- // Get the average effective recovery from FEC: for random loss model |
- float AvgRecoveryFEC(const VCMProtectionParameters* parameters) const; |
- // Update FEC with protectionFactorD |
- void UpdateProtectionFactorD(uint8_t protectionFactorD); |
- // Update FEC with protectionFactorK |
- void UpdateProtectionFactorK(uint8_t protectionFactorK); |
- // Compute the bits per frame. Account for temporal layers when applicable. |
- int BitsPerFrame(const VCMProtectionParameters* parameters); |
- |
-protected: |
- enum { kUpperLimitFramesFec = 6 }; |
- // Thresholds values for the bytes/frame and round trip time, below which we |
- // may turn off FEC, depending on |_numLayers| and |_maxFramesFec|. |
- // Max bytes/frame for VGA, corresponds to ~140k at 25fps. |
- enum { kMaxBytesPerFrameForFec = 700 }; |
- // Max bytes/frame for CIF and lower: corresponds to ~80k at 25fps. |
- enum { kMaxBytesPerFrameForFecLow = 400 }; |
- // Max bytes/frame for frame size larger than VGA, ~200k at 25fps. |
- enum { kMaxBytesPerFrameForFecHigh = 1000 }; |
+class VCMFecMethod : public VCMProtectionMethod { |
+ public: |
+ VCMFecMethod(); |
+ virtual ~VCMFecMethod(); |
+ virtual bool UpdateParameters(const VCMProtectionParameters* parameters); |
+ // Get the effective packet loss for ER |
+ bool EffectivePacketLoss(const VCMProtectionParameters* parameters); |
+ // Get the FEC protection factors |
+ bool ProtectionFactor(const VCMProtectionParameters* parameters); |
+ // Get the boost for key frame protection |
+ uint8_t BoostCodeRateKey(uint8_t packetFrameDelta, |
+ uint8_t packetFrameKey) const; |
+ // Convert the rates: defined relative to total# packets or source# packets |
+ uint8_t ConvertFECRate(uint8_t codeRate) const; |
+ // Get the average effective recovery from FEC: for random loss model |
+ float AvgRecoveryFEC(const VCMProtectionParameters* parameters) const; |
+ // Update FEC with protectionFactorD |
+ void UpdateProtectionFactorD(uint8_t protectionFactorD); |
+ // Update FEC with protectionFactorK |
+ void UpdateProtectionFactorK(uint8_t protectionFactorK); |
+ // Compute the bits per frame. Account for temporal layers when applicable. |
+ int BitsPerFrame(const VCMProtectionParameters* parameters); |
+ |
+ protected: |
+ enum { kUpperLimitFramesFec = 6 }; |
+ // Thresholds values for the bytes/frame and round trip time, below which we |
+ // may turn off FEC, depending on |_numLayers| and |_maxFramesFec|. |
+ // Max bytes/frame for VGA, corresponds to ~140k at 25fps. |
+ enum { kMaxBytesPerFrameForFec = 700 }; |
+ // Max bytes/frame for CIF and lower: corresponds to ~80k at 25fps. |
+ enum { kMaxBytesPerFrameForFecLow = 400 }; |
+ // Max bytes/frame for frame size larger than VGA, ~200k at 25fps. |
+ enum { kMaxBytesPerFrameForFecHigh = 1000 }; |
}; |
- |
-class VCMNackFecMethod : public VCMFecMethod |
-{ |
-public: |
- VCMNackFecMethod(int64_t lowRttNackThresholdMs, |
- int64_t highRttNackThresholdMs); |
- virtual ~VCMNackFecMethod(); |
- virtual bool UpdateParameters(const VCMProtectionParameters* parameters); |
- // Get the effective packet loss for ER |
- bool EffectivePacketLoss(const VCMProtectionParameters* parameters); |
- // Get the protection factors |
- bool ProtectionFactor(const VCMProtectionParameters* parameters); |
- // Get the max number of frames the FEC is allowed to be based on. |
- int MaxFramesFec() const; |
- // Turn off the FEC based on low bitrate and other factors. |
- bool BitRateTooLowForFec(const VCMProtectionParameters* parameters); |
-private: |
- int ComputeMaxFramesFec(const VCMProtectionParameters* parameters); |
- |
- int64_t _lowRttNackMs; |
- int64_t _highRttNackMs; |
- int _maxFramesFec; |
+class VCMNackFecMethod : public VCMFecMethod { |
+ public: |
+ VCMNackFecMethod(int64_t lowRttNackThresholdMs, |
+ int64_t highRttNackThresholdMs); |
+ virtual ~VCMNackFecMethod(); |
+ virtual bool UpdateParameters(const VCMProtectionParameters* parameters); |
+ // Get the effective packet loss for ER |
+ bool EffectivePacketLoss(const VCMProtectionParameters* parameters); |
+ // Get the protection factors |
+ bool ProtectionFactor(const VCMProtectionParameters* parameters); |
+ // Get the max number of frames the FEC is allowed to be based on. |
+ int MaxFramesFec() const; |
+ // Turn off the FEC based on low bitrate and other factors. |
+ bool BitRateTooLowForFec(const VCMProtectionParameters* parameters); |
+ |
+ private: |
+ int ComputeMaxFramesFec(const VCMProtectionParameters* parameters); |
+ |
+ int64_t _lowRttNackMs; |
+ int64_t _highRttNackMs; |
+ int _maxFramesFec; |
}; |
-class VCMLossProtectionLogic |
-{ |
-public: |
- VCMLossProtectionLogic(int64_t nowMs); |
- ~VCMLossProtectionLogic(); |
- |
- // Set the protection method to be used |
- // |
- // Input: |
- // - newMethodType : New requested protection method type. If one |
- // is already set, it will be deleted and replaced |
- void SetMethod(VCMProtectionMethodEnum newMethodType); |
- |
- // Update the round-trip time |
- // |
- // Input: |
- // - rtt : Round-trip time in seconds. |
- void UpdateRtt(int64_t rtt); |
- |
- // Update the filtered packet loss. |
- // |
- // Input: |
- // - packetLossEnc : The reported packet loss filtered |
- // (max window or average) |
- void UpdateFilteredLossPr(uint8_t packetLossEnc); |
- |
- // Update the current target bit rate. |
- // |
- // Input: |
- // - bitRate : The current target bit rate in kbits/s |
- void UpdateBitRate(float bitRate); |
- |
- // Update the number of packets per frame estimate, for delta frames |
- // |
- // Input: |
- // - nPackets : Number of packets in the latest sent frame. |
- void UpdatePacketsPerFrame(float nPackets, int64_t nowMs); |
- |
- // Update the number of packets per frame estimate, for key frames |
- // |
- // Input: |
- // - nPackets : umber of packets in the latest sent frame. |
- void UpdatePacketsPerFrameKey(float nPackets, int64_t nowMs); |
- |
- // Update the keyFrameSize estimate |
- // |
- // Input: |
- // - keyFrameSize : The size of the latest sent key frame. |
- void UpdateKeyFrameSize(float keyFrameSize); |
- |
- // Update the frame rate |
- // |
- // Input: |
- // - frameRate : The current target frame rate. |
- void UpdateFrameRate(float frameRate) { _frameRate = frameRate; } |
- |
- // Update the frame size |
- // |
- // Input: |
- // - width : The codec frame width. |
- // - height : The codec frame height. |
- void UpdateFrameSize(uint16_t width, uint16_t height); |
- |
- // Update the number of active layers |
- // |
- // Input: |
- // - numLayers : Number of layers used. |
- void UpdateNumLayers(int numLayers); |
- |
- // The amount of packet loss to cover for with FEC. |
- // |
- // Input: |
- // - fecRateKey : Packet loss to cover for with FEC when |
- // sending key frames. |
- // - fecRateDelta : Packet loss to cover for with FEC when |
- // sending delta frames. |
- void UpdateFECRates(uint8_t fecRateKey, uint8_t fecRateDelta) |
- { _fecRateKey = fecRateKey; |
- _fecRateDelta = fecRateDelta; } |
- |
- // Update the protection methods with the current VCMProtectionParameters |
- // and set the requested protection settings. |
- // Return value : Returns true on update |
- bool UpdateMethod(); |
- |
- // Returns the method currently selected. |
- // |
- // Return value : The protection method currently selected. |
- VCMProtectionMethod* SelectedMethod() const; |
- |
- // Return the protection type of the currently selected method |
- VCMProtectionMethodEnum SelectedType() const; |
- |
- // Updates the filtered loss for the average and max window packet loss, |
- // and returns the filtered loss probability in the interval [0, 255]. |
- // The returned filtered loss value depends on the parameter |filter_mode|. |
- // The input parameter |lossPr255| is the received packet loss. |
- |
- // Return value : The filtered loss probability |
- uint8_t FilteredLoss(int64_t nowMs, FilterPacketLossMode filter_mode, |
- uint8_t lossPr255); |
- |
- void Reset(int64_t nowMs); |
- |
- void Release(); |
- |
-private: |
- // Sets the available loss protection methods. |
- void UpdateMaxLossHistory(uint8_t lossPr255, int64_t now); |
- uint8_t MaxFilteredLossPr(int64_t nowMs) const; |
- rtc::scoped_ptr<VCMProtectionMethod> _selectedMethod; |
- VCMProtectionParameters _currentParameters; |
- int64_t _rtt; |
- float _lossPr; |
- float _bitRate; |
- float _frameRate; |
- float _keyFrameSize; |
- uint8_t _fecRateKey; |
- uint8_t _fecRateDelta; |
- int64_t _lastPrUpdateT; |
- int64_t _lastPacketPerFrameUpdateT; |
- int64_t _lastPacketPerFrameUpdateTKey; |
- rtc::ExpFilter _lossPr255; |
- VCMLossProbabilitySample _lossPrHistory[kLossPrHistorySize]; |
- uint8_t _shortMaxLossPr255; |
- rtc::ExpFilter _packetsPerFrame; |
- rtc::ExpFilter _packetsPerFrameKey; |
- uint16_t _codecWidth; |
- uint16_t _codecHeight; |
- int _numLayers; |
+class VCMLossProtectionLogic { |
+ public: |
+ explicit VCMLossProtectionLogic(int64_t nowMs); |
+ ~VCMLossProtectionLogic(); |
+ |
+ // Set the protection method to be used |
+ // |
+ // Input: |
+ // - newMethodType : New requested protection method type. If one |
+ // is already set, it will be deleted and replaced |
+ void SetMethod(VCMProtectionMethodEnum newMethodType); |
+ |
+ // Update the round-trip time |
+ // |
+ // Input: |
+ // - rtt : Round-trip time in seconds. |
+ void UpdateRtt(int64_t rtt); |
+ |
+ // Update the filtered packet loss. |
+ // |
+ // Input: |
+ // - packetLossEnc : The reported packet loss filtered |
+ // (max window or average) |
+ void UpdateFilteredLossPr(uint8_t packetLossEnc); |
+ |
+ // Update the current target bit rate. |
+ // |
+ // Input: |
+ // - bitRate : The current target bit rate in kbits/s |
+ void UpdateBitRate(float bitRate); |
+ |
+ // Update the number of packets per frame estimate, for delta frames |
+ // |
+ // Input: |
+ // - nPackets : Number of packets in the latest sent frame. |
+ void UpdatePacketsPerFrame(float nPackets, int64_t nowMs); |
+ |
+ // Update the number of packets per frame estimate, for key frames |
+ // |
+ // Input: |
+ // - nPackets : umber of packets in the latest sent frame. |
+ void UpdatePacketsPerFrameKey(float nPackets, int64_t nowMs); |
+ |
+ // Update the keyFrameSize estimate |
+ // |
+ // Input: |
+ // - keyFrameSize : The size of the latest sent key frame. |
+ void UpdateKeyFrameSize(float keyFrameSize); |
+ |
+ // Update the frame rate |
+ // |
+ // Input: |
+ // - frameRate : The current target frame rate. |
+ void UpdateFrameRate(float frameRate) { _frameRate = frameRate; } |
+ |
+ // Update the frame size |
+ // |
+ // Input: |
+ // - width : The codec frame width. |
+ // - height : The codec frame height. |
+ void UpdateFrameSize(uint16_t width, uint16_t height); |
+ |
+ // Update the number of active layers |
+ // |
+ // Input: |
+ // - numLayers : Number of layers used. |
+ void UpdateNumLayers(int numLayers); |
+ |
+ // The amount of packet loss to cover for with FEC. |
+ // |
+ // Input: |
+ // - fecRateKey : Packet loss to cover for with FEC when |
+ // sending key frames. |
+ // - fecRateDelta : Packet loss to cover for with FEC when |
+ // sending delta frames. |
+ void UpdateFECRates(uint8_t fecRateKey, uint8_t fecRateDelta) { |
+ _fecRateKey = fecRateKey; |
+ _fecRateDelta = fecRateDelta; |
+ } |
+ |
+ // Update the protection methods with the current VCMProtectionParameters |
+ // and set the requested protection settings. |
+ // Return value : Returns true on update |
+ bool UpdateMethod(); |
+ |
+ // Returns the method currently selected. |
+ // |
+ // Return value : The protection method currently selected. |
+ VCMProtectionMethod* SelectedMethod() const; |
+ |
+ // Return the protection type of the currently selected method |
+ VCMProtectionMethodEnum SelectedType() const; |
+ |
+ // Updates the filtered loss for the average and max window packet loss, |
+ // and returns the filtered loss probability in the interval [0, 255]. |
+ // The returned filtered loss value depends on the parameter |filter_mode|. |
+ // The input parameter |lossPr255| is the received packet loss. |
+ |
+ // Return value : The filtered loss probability |
+ uint8_t FilteredLoss(int64_t nowMs, |
+ FilterPacketLossMode filter_mode, |
+ uint8_t lossPr255); |
+ |
+ void Reset(int64_t nowMs); |
+ |
+ void Release(); |
+ |
+ private: |
+ // Sets the available loss protection methods. |
+ void UpdateMaxLossHistory(uint8_t lossPr255, int64_t now); |
+ uint8_t MaxFilteredLossPr(int64_t nowMs) const; |
+ rtc::scoped_ptr<VCMProtectionMethod> _selectedMethod; |
+ VCMProtectionParameters _currentParameters; |
+ int64_t _rtt; |
+ float _lossPr; |
+ float _bitRate; |
+ float _frameRate; |
+ float _keyFrameSize; |
+ uint8_t _fecRateKey; |
+ uint8_t _fecRateDelta; |
+ int64_t _lastPrUpdateT; |
+ int64_t _lastPacketPerFrameUpdateT; |
+ int64_t _lastPacketPerFrameUpdateTKey; |
+ rtc::ExpFilter _lossPr255; |
+ VCMLossProbabilitySample _lossPrHistory[kLossPrHistorySize]; |
+ uint8_t _shortMaxLossPr255; |
+ rtc::ExpFilter _packetsPerFrame; |
+ rtc::ExpFilter _packetsPerFrameKey; |
+ uint16_t _codecWidth; |
+ uint16_t _codecHeight; |
+ int _numLayers; |
}; |
} // namespace media_optimization |
} // namespace webrtc |
-#endif // WEBRTC_MODULES_VIDEO_CODING_MEDIA_OPT_UTIL_H_ |
+#endif // WEBRTC_MODULES_VIDEO_CODING_MEDIA_OPT_UTIL_H_ |