From b7a41937ba05134ef589d06a7f66dc8debc6bf65 Mon Sep 17 00:00:00 2001 From: "holmer@google.com" Date: Mon, 20 Jun 2011 14:43:51 +0000 Subject: [PATCH] Fixes missing initializations in video_coding. Review URL: http://webrtc-codereview.appspot.com/43004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@104 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../main/source/media_opt_util.cc | 26 ++++++++----------- .../video_coding/main/source/media_opt_util.h | 8 +++--- .../main/source/media_optimization.cc | 8 ++++-- modules/video_coding/main/test/normal_test.cc | 1 + 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/modules/video_coding/main/source/media_opt_util.cc b/modules/video_coding/main/source/media_opt_util.cc index 3b7e8df89..53ce0daff 100644 --- a/modules/video_coding/main/source/media_opt_util.cc +++ b/modules/video_coding/main/source/media_opt_util.cc @@ -699,8 +699,7 @@ VCMLossProtectionLogic::UpdateFecType(VCMFecTypes fecType) void VCMLossProtectionLogic::UpdateLossPr(WebRtc_UWord8 lossPr255) { - WebRtc_UWord32 now = static_cast - (VCMTickTime::MillisecondTimestamp()); + const WebRtc_Word64 now = VCMTickTime::MillisecondTimestamp(); UpdateMaxLossHistory(lossPr255, now); _lossPr255.Apply(static_cast (now - _lastPrUpdateT), static_cast (lossPr255)); @@ -787,8 +786,7 @@ VCMLossProtectionLogic::FilteredLoss() const //take the windowed max of the received loss if (_selectedMethod != NULL && _selectedMethod->Type() == kFEC) { - return MaxFilteredLossPr(static_cast - (VCMTickTime::MillisecondTimestamp())); + return MaxFilteredLossPr(VCMTickTime::MillisecondTimestamp()); } else { @@ -811,19 +809,17 @@ VCMLossProtectionLogic::UpdateBitRate(float bitRate) void VCMLossProtectionLogic::UpdatePacketsPerFrame(float nPackets) { - WebRtc_UWord32 now = static_cast - (VCMTickTime::MillisecondTimestamp()); - _packetsPerFrame.Apply(static_cast (now - - _lastPacketPerFrameUpdateT), nPackets); + const WebRtc_Word64 now = VCMTickTime::MillisecondTimestamp(); + _packetsPerFrame.Apply(static_cast(now - _lastPacketPerFrameUpdateT), + nPackets); _lastPacketPerFrameUpdateT = now; } void VCMLossProtectionLogic::UpdatePacketsPerFrameKey(float nPackets) { - WebRtc_UWord32 now = static_cast - (VCMTickTime::MillisecondTimestamp()); - _packetsPerFrameKey.Apply(static_cast (now - + const WebRtc_Word64 now = VCMTickTime::MillisecondTimestamp(); + _packetsPerFrameKey.Apply(static_cast(now - _lastPacketPerFrameUpdateTKey), nPackets); _lastPacketPerFrameUpdateTKey = now; } @@ -896,10 +892,10 @@ VCMLossProtectionLogic::SelectedMethod() const void VCMLossProtectionLogic::Reset() { - _lastPrUpdateT = static_cast - (VCMTickTime::MillisecondTimestamp()); - _lastPacketPerFrameUpdateT = static_cast - (VCMTickTime::MillisecondTimestamp()); + const WebRtc_Word64 now = VCMTickTime::MillisecondTimestamp(); + _lastPrUpdateT = now; + _lastPacketPerFrameUpdateT = now; + _lastPacketPerFrameUpdateTKey = now; _lossPr255.Reset(0.9999f); _packetsPerFrame.Reset(0.9999f); _fecRateDelta = _fecRateKey = 0; diff --git a/modules/video_coding/main/source/media_opt_util.h b/modules/video_coding/main/source/media_opt_util.h index 00f00c17a..8a834f0ea 100644 --- a/modules/video_coding/main/source/media_opt_util.h +++ b/modules/video_coding/main/source/media_opt_util.h @@ -350,7 +350,7 @@ private: // Sets the available loss protection methods. void UpdateMaxLossHistory(WebRtc_UWord8 lossPr255, WebRtc_Word64 now); WebRtc_UWord8 MaxFilteredLossPr(WebRtc_Word64 nowMs) const; - ListWrapper _availableMethods; + ListWrapper _availableMethods; VCMProtectionMethod* _selectedMethod; VCMProtectionMethod* _bestNotOkMethod; VCMProtectionParameters _currentParameters; @@ -361,9 +361,9 @@ private: float _keyFrameSize; WebRtc_UWord8 _fecRateKey; WebRtc_UWord8 _fecRateDelta; - WebRtc_UWord32 _lastPrUpdateT; - WebRtc_UWord32 _lastPacketPerFrameUpdateT; - WebRtc_UWord32 _lastPacketPerFrameUpdateTKey; + WebRtc_Word64 _lastPrUpdateT; + WebRtc_Word64 _lastPacketPerFrameUpdateT; + WebRtc_Word64 _lastPacketPerFrameUpdateTKey; VCMExpFilter _lossPr255; VCMLossProbabilitySample _lossPrHistory[kLossPrHistorySize]; WebRtc_UWord8 _shortMaxLossPr255; diff --git a/modules/video_coding/main/source/media_optimization.cc b/modules/video_coding/main/source/media_optimization.cc index b4ea203c7..0b388bf1b 100644 --- a/modules/video_coding/main/source/media_optimization.cc +++ b/modules/video_coding/main/source/media_optimization.cc @@ -29,6 +29,7 @@ _sendStatisticsZeroEncode(0), _maxPayloadSize(1460), _lastBitRate(0), _targetBitRate(0), +_incomingFrameRate(0), _enableQm(false), _videoProtectionCallback(NULL), _videoQMSettingsCallback(NULL), @@ -40,6 +41,7 @@ _lastQMUpdateTime(0), _lastChangeTime(0) { memset(_sendStatistics, 0, sizeof(_sendStatistics)); + memset(_incomingFrameTimes, -1, sizeof(_incomingFrameTimes)); _frameDropper = new VCMFrameDropper(_id); _lossProtLogic = new VCMLossProtectionLogic(); @@ -59,12 +61,14 @@ VCMMediaOptimization::~VCMMediaOptimization(void) WebRtc_Word32 VCMMediaOptimization::Reset() { + memset(_incomingFrameTimes, -1, sizeof(_incomingFrameTimes)); + InputFrameRate(); // Resets _incomingFrameRate _frameDropper->Reset(); _lossProtLogic->Reset(); _frameDropper->SetRates(0, 0); _content->Reset(); _qms->Reset(); - _lossProtLogic->UpdateFrameRate(static_cast(InputFrameRate())); + _lossProtLogic->UpdateFrameRate(_incomingFrameRate); _lossProtLogic->Reset(); _sendStatisticsZeroEncode = 0; _lastBitRate = 0; @@ -659,7 +663,7 @@ VCMMediaOptimization::ProcessIncomingFrameRate(WebRtc_Word64 now) { WebRtc_Word32 num = 0; WebRtc_Word32 nrOfFrames = 0; - for(num = 1; num < (kFrameCountHistorySize - 1); num++) + for (num = 1; num < (kFrameCountHistorySize - 1); num++) { if (_incomingFrameTimes[num] <= 0 || // don't use data older than 2 s diff --git a/modules/video_coding/main/test/normal_test.cc b/modules/video_coding/main/test/normal_test.cc index d6e962dae..4d77a5cff 100644 --- a/modules/video_coding/main/test/normal_test.cc +++ b/modules/video_coding/main/test/normal_test.cc @@ -102,6 +102,7 @@ VCMNTEncodeCompleteCallback::SendData(const FrameType frameType, rtpInfo.header.ssrc = 0; rtpInfo.header.timestamp = timeStamp; rtpInfo.frameType = frameType; + rtpInfo.type.Video.isFirstPacket = true; // Size should also be received from that table, since the payload type // defines the size.