From 269f8a14c67bae34e8b4d369f0353dddeff41eba Mon Sep 17 00:00:00 2001 From: "stefan@webrtc.org" Date: Tue, 6 Sep 2011 09:51:59 +0000 Subject: [PATCH] Undoing change committed in r514 since it broke bandwidth estimation Review URL: http://webrtc-codereview.appspot.com/132011 git-svn-id: http://webrtc.googlecode.com/svn/trunk@531 4adac7df-926f-26a2-2b94-8c16560cd09d --- src/modules/rtp_rtcp/source/rtp_rtcp_impl.cc | 10 ++-- src/modules/rtp_rtcp/source/tmmbr_help.cc | 60 +++++++++----------- src/modules/rtp_rtcp/source/tmmbr_help.h | 8 +-- 3 files changed, 37 insertions(+), 41 deletions(-) diff --git a/src/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/src/modules/rtp_rtcp/source/rtp_rtcp_impl.cc index 92c9e0dbbd..97e699a76c 100644 --- a/src/modules/rtp_rtcp/source/rtp_rtcp_impl.cc +++ b/src/modules/rtp_rtcp/source/rtp_rtcp_impl.cc @@ -2476,8 +2476,8 @@ ModuleRtpRtcpImpl::UpdateTMMBR() { WebRtc_Word32 numBoundingSet = 0; WebRtc_Word32 newBitrates = 0; - int minBitrateKbit = 0; - int maxBitrateKbit = 0; + WebRtc_UWord32 minBitrateKbit = 0; + WebRtc_UWord32 maxBitrateKbit = 0; if(_defaultModule) { @@ -2589,9 +2589,9 @@ ModuleRtpRtcpImpl::UpdateTMMBR() // Get net bitrate from bounding set depending on sent packet rate newBitrates = CalcMinMaxBitRate(_rtpSender.PacketRate(), - numBoundingSet, - &minBitrateKbit, - &maxBitrateKbit); + (WebRtc_UWord32)numBoundingSet, + minBitrateKbit, + maxBitrateKbit); // no critsect when calling out to "unknown" code if(newBitrates == 0) // we have new bitrates diff --git a/src/modules/rtp_rtcp/source/tmmbr_help.cc b/src/modules/rtp_rtcp/source/tmmbr_help.cc index f08eb1b504..43537f8313 100644 --- a/src/modules/rtp_rtcp/source/tmmbr_help.cc +++ b/src/modules/rtp_rtcp/source/tmmbr_help.cc @@ -435,11 +435,11 @@ TMMBRHelp::IsOwner(const WebRtc_UWord32 ssrc, return false; } - -int TMMBRHelp::CalcMinMaxBitRate(int totalPacketRate, - int lengthOfBoundingSet, - int* minBitrateKbit, - int* maxBitrateKbit) const +WebRtc_Word32 +TMMBRHelp::CalcMinMaxBitRate(const WebRtc_UWord32 totalPacketRate, + const WebRtc_UWord32 lengthOfBoundingSet, + WebRtc_UWord32& minBitrateKbit, + WebRtc_UWord32& maxBitrateKbit) const { CriticalSectionScoped lock(_criticalSection); @@ -449,63 +449,59 @@ int TMMBRHelp::CalcMinMaxBitRate(int totalPacketRate, return -1; } - int myMinBitrateKbit = 0xFFFFFFFF; - int myMaxBitrateKbit = 0; + minBitrateKbit = 0xFFFFFFFF; + maxBitrateKbit = 0; for (WebRtc_UWord32 i = 0; i < _candidateSet.sizeOfSet; ++i) { if (_candidateSet.ptrTmmbrSet[i]) { - int curNetBitRate = static_cast((_candidateSet.ptrTmmbrSet[i]*1000.0 + WebRtc_Word32 curNetBitRate = static_cast((_candidateSet.ptrTmmbrSet[i]*1000.0 - (totalPacketRate * (_candidateSet.ptrPacketOHSet[i] << 3)))/1000 + 0.5); - if (curNetBitRate < 0) + if (curNetBitRate < 0) + { + // could be negative for a large packet rate + if(_audio) { - // could be negative for a large packet rate - if(_audio) - { - curNetBitRate = MIN_AUDIO_BW_MANAGEMENT_BITRATE; - }else - { - curNetBitRate = MIN_VIDEO_BW_MANAGEMENT_BITRATE; - } + curNetBitRate = MIN_AUDIO_BW_MANAGEMENT_BITRATE; + }else + { + curNetBitRate = MIN_VIDEO_BW_MANAGEMENT_BITRATE; } - myMinBitrateKbit = curNetBitRate < myMinBitrateKbit ? - curNetBitRate : myMinBitrateKbit; + } + minBitrateKbit = (WebRtc_UWord32(curNetBitRate) < minBitrateKbit) ? curNetBitRate : minBitrateKbit; } } - myMaxBitrateKbit = myMinBitrateKbit; + maxBitrateKbit = minBitrateKbit; - if (myMaxBitrateKbit == 0 || myMaxBitrateKbit < myMinBitrateKbit) + if (maxBitrateKbit == 0 || maxBitrateKbit < minBitrateKbit) { return -1; } if(_audio) { - if (myMinBitrateKbit < MIN_AUDIO_BW_MANAGEMENT_BITRATE) + if (minBitrateKbit < MIN_AUDIO_BW_MANAGEMENT_BITRATE) { - myMinBitrateKbit = MIN_AUDIO_BW_MANAGEMENT_BITRATE; + minBitrateKbit = MIN_AUDIO_BW_MANAGEMENT_BITRATE; } - if (myMaxBitrateKbit < MIN_AUDIO_BW_MANAGEMENT_BITRATE) + if (maxBitrateKbit < MIN_AUDIO_BW_MANAGEMENT_BITRATE) { - myMaxBitrateKbit = MIN_AUDIO_BW_MANAGEMENT_BITRATE; + maxBitrateKbit = MIN_AUDIO_BW_MANAGEMENT_BITRATE; } }else { - if (myMinBitrateKbit < MIN_VIDEO_BW_MANAGEMENT_BITRATE) + if (minBitrateKbit < MIN_VIDEO_BW_MANAGEMENT_BITRATE) { - myMinBitrateKbit = MIN_VIDEO_BW_MANAGEMENT_BITRATE; + minBitrateKbit = MIN_VIDEO_BW_MANAGEMENT_BITRATE; } - if (myMaxBitrateKbit < MIN_VIDEO_BW_MANAGEMENT_BITRATE) + if (maxBitrateKbit < MIN_VIDEO_BW_MANAGEMENT_BITRATE) { - myMaxBitrateKbit = MIN_VIDEO_BW_MANAGEMENT_BITRATE; + maxBitrateKbit = MIN_VIDEO_BW_MANAGEMENT_BITRATE; } } - *maxBitrateKbit = myMaxBitrateKbit; - *minBitrateKbit = myMinBitrateKbit; - return 0; } } // namespace webrtc diff --git a/src/modules/rtp_rtcp/source/tmmbr_help.h b/src/modules/rtp_rtcp/source/tmmbr_help.h index ad3ef31093..0575f1d002 100644 --- a/src/modules/rtp_rtcp/source/tmmbr_help.h +++ b/src/modules/rtp_rtcp/source/tmmbr_help.h @@ -53,10 +53,10 @@ public: bool IsOwner(const WebRtc_UWord32 ssrc, const WebRtc_UWord32 length) const; - int CalcMinMaxBitRate(int totalPacketRate, - int lengthOfBoundingSet, - int* minBitrateKbit, - int* maxBitrateKbit) const; + WebRtc_Word32 CalcMinMaxBitRate(const WebRtc_UWord32 totalPacketRate, + const WebRtc_UWord32 lengthOfBoundingSet, + WebRtc_UWord32& minBitrateKbit, + WebRtc_UWord32& maxBitrateKbit) const; protected: TMMBRSet* VerifyAndAllocateBoundingSet(WebRtc_UWord32 minimumSize);