Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(661)

Unified Diff: webrtc/modules/rtp_rtcp/source/tmmbr_help.cc

Issue 2234783002: Cleaned out candidateSet member from TMMBRHelp class (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: remove now unused include Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/tmmbr_help.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/tmmbr_help.cc
diff --git a/webrtc/modules/rtp_rtcp/source/tmmbr_help.cc b/webrtc/modules/rtp_rtcp/source/tmmbr_help.cc
index 5aa8f945aaf4853756dde63194c7682044793b12..7c29ed8776a786751f7aeca6daa40f5687f122c3 100644
--- a/webrtc/modules/rtp_rtcp/source/tmmbr_help.cc
+++ b/webrtc/modules/rtp_rtcp/source/tmmbr_help.cc
@@ -12,10 +12,8 @@
#include <algorithm>
#include <limits>
-#include <utility>
#include "webrtc/base/checks.h"
-#include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_config.h"
namespace webrtc {
void TMMBRSet::VerifyAndAllocateSet(uint32_t minimumSize) {
@@ -52,57 +50,21 @@ void TMMBRSet::RemoveEntry(uint32_t sourceIdx) {
erase(begin() + sourceIdx);
}
-TMMBRSet* TMMBRHelp::VerifyAndAllocateCandidateSet(uint32_t minimumSize) {
- _candidateSet.VerifyAndAllocateSet(minimumSize);
- return &_candidateSet;
-}
-
-TMMBRSet* TMMBRHelp::CandidateSet() {
- return &_candidateSet;
-}
-
-std::vector<rtcp::TmmbItem> TMMBRHelp::FindTMMBRBoundingSet() {
- // Work on local variable, will be modified
- TMMBRSet candidateSet;
- candidateSet.VerifyAndAllocateSet(_candidateSet.capacity());
-
- for (size_t i = 0; i < _candidateSet.size(); i++) {
- if (_candidateSet.Tmmbr(i)) {
- candidateSet.AddEntry(_candidateSet.Tmmbr(i), _candidateSet.PacketOH(i),
- _candidateSet.Ssrc(i));
- } else {
- // make sure this is zero if tmmbr = 0
- RTC_DCHECK_EQ(_candidateSet.PacketOH(i), 0u);
- // Old code:
- // _candidateSet.ptrPacketOHSet[i] = 0;
- }
+std::vector<rtcp::TmmbItem> TMMBRHelp::FindBoundingSet(
+ std::vector<rtcp::TmmbItem> candidates) {
+ // Filter out candidates with 0 bitrate.
+ for (auto it = candidates.begin(); it != candidates.end();) {
+ if (!it->bitrate_bps())
+ it = candidates.erase(it);
+ else
+ ++it;
}
- // Number of set candidates
- int32_t numSetCandidates = candidateSet.lengthOfSet();
- // Find bounding set
- std::vector<rtcp::TmmbItem> bounding;
- if (numSetCandidates > 0) {
- FindBoundingSet(std::move(candidateSet), &bounding);
- size_t numBoundingSet = bounding.size();
- RTC_DCHECK_GE(numBoundingSet, 1u);
- RTC_DCHECK_LE(numBoundingSet, _candidateSet.size());
- }
- return bounding;
-}
+ if (candidates.size() <= 1)
+ return candidates;
-void TMMBRHelp::FindBoundingSet(std::vector<rtcp::TmmbItem> candidates,
- std::vector<rtcp::TmmbItem>* bounding_set) {
- RTC_DCHECK(bounding_set);
- RTC_DCHECK(!candidates.empty());
size_t num_candidates = candidates.size();
- if (num_candidates == 1) {
- RTC_DCHECK(candidates[0].bitrate_bps());
- *bounding_set = std::move(candidates);
- return;
- }
-
// 1. Sort by increasing packet overhead.
std::sort(candidates.begin(), candidates.end(),
[](const rtcp::TmmbItem& lhs, const rtcp::TmmbItem& rhs) {
@@ -130,7 +92,7 @@ void TMMBRHelp::FindBoundingSet(std::vector<rtcp::TmmbItem> candidates,
it = next_it;
}
- // 3. Select and remove tuple with lowest tmmbr.
+ // 3. Select and remove tuple with lowest bitrate.
// (If more than 1, choose the one with highest overhead).
auto min_bitrate_it = candidates.end();
for (auto it = candidates.begin(); it != candidates.end(); ++it) {
@@ -148,22 +110,22 @@ void TMMBRHelp::FindBoundingSet(std::vector<rtcp::TmmbItem> candidates,
}
}
- bounding_set->clear();
- bounding_set->reserve(num_candidates);
+ std::vector<rtcp::TmmbItem> bounding_set;
+ bounding_set.reserve(num_candidates);
std::vector<float> intersection(num_candidates);
std::vector<float> max_packet_rate(num_candidates);
// First member of selected list.
- bounding_set->push_back(*min_bitrate_it);
+ bounding_set.push_back(*min_bitrate_it);
intersection[0] = 0;
// Calculate its maximum packet rate (where its line crosses x-axis).
- uint16_t packet_overhead = bounding_set->back().packet_overhead();
+ uint16_t packet_overhead = bounding_set.back().packet_overhead();
if (packet_overhead == 0) {
// Avoid division by zero.
max_packet_rate[0] = std::numeric_limits<float>::max();
} else {
- max_packet_rate[0] = bounding_set->back().bitrate_bps() /
- static_cast<float>(packet_overhead);
+ max_packet_rate[0] =
+ bounding_set.back().bitrate_bps() / static_cast<float>(packet_overhead);
}
// Remove from candidate list.
min_bitrate_it->set_bitrate_bps(0);
@@ -173,7 +135,7 @@ void TMMBRHelp::FindBoundingSet(std::vector<rtcp::TmmbItem> candidates,
// (next tuple must be steeper).
for (auto it = candidates.begin(); it != candidates.end(); ++it) {
if (it->bitrate_bps() &&
- it->packet_overhead() < bounding_set->front().packet_overhead()) {
+ it->packet_overhead() < bounding_set.front().packet_overhead()) {
it->set_bitrate_bps(0);
--num_candidates;
}
@@ -196,30 +158,30 @@ void TMMBRHelp::FindBoundingSet(std::vector<rtcp::TmmbItem> candidates,
// 6. Calculate packet rate and intersection of the current
// line with line of last tuple in selected list.
RTC_DCHECK_NE(cur_candidate.packet_overhead(),
- bounding_set->back().packet_overhead());
+ bounding_set.back().packet_overhead());
float packet_rate = static_cast<float>(cur_candidate.bitrate_bps() -
- bounding_set->back().bitrate_bps()) /
+ bounding_set.back().bitrate_bps()) /
(cur_candidate.packet_overhead() -
- bounding_set->back().packet_overhead());
+ bounding_set.back().packet_overhead());
// 7. If the packet rate is equal or lower than intersection of
// last tuple in selected list,
// remove last tuple in selected list & go back to step 6.
- if (packet_rate <= intersection[bounding_set->size() - 1]) {
+ if (packet_rate <= intersection[bounding_set.size() - 1]) {
// Remove last tuple and goto step 6.
- bounding_set->pop_back();
+ bounding_set.pop_back();
get_new_candidate = false;
} else {
// 8. If packet rate is lower than maximum packet rate of
// last tuple in selected list, add current tuple to selected
// list.
- if (packet_rate < max_packet_rate[bounding_set->size() - 1]) {
- bounding_set->push_back(cur_candidate);
- intersection[bounding_set->size() - 1] = packet_rate;
- uint16_t packet_overhead = bounding_set->back().packet_overhead();
+ if (packet_rate < max_packet_rate[bounding_set.size() - 1]) {
+ bounding_set.push_back(cur_candidate);
+ intersection[bounding_set.size() - 1] = packet_rate;
+ uint16_t packet_overhead = bounding_set.back().packet_overhead();
RTC_DCHECK_NE(packet_overhead, 0);
- max_packet_rate[bounding_set->size() - 1] =
- bounding_set->back().bitrate_bps() /
+ max_packet_rate[bounding_set.size() - 1] =
+ bounding_set.back().bitrate_bps() /
static_cast<float>(packet_overhead);
}
--num_candidates;
@@ -228,6 +190,8 @@ void TMMBRHelp::FindBoundingSet(std::vector<rtcp::TmmbItem> candidates,
// 9. Go back to step 5 if any tuple remains in candidate list.
}
+ RTC_DCHECK(!bounding_set.empty());
+ return bounding_set;
}
bool TMMBRHelp::IsOwner(const std::vector<rtcp::TmmbItem>& bounding,
@@ -240,21 +204,13 @@ bool TMMBRHelp::IsOwner(const std::vector<rtcp::TmmbItem>& bounding,
return false;
}
-bool TMMBRHelp::CalcMinBitRate(uint32_t* minBitrateKbit) const {
- if (_candidateSet.size() == 0) {
- // Empty bounding set.
- return false;
- }
- *minBitrateKbit = std::numeric_limits<uint32_t>::max();
-
- for (size_t i = 0; i < _candidateSet.lengthOfSet(); ++i) {
- uint32_t curNetBitRateKbit = _candidateSet.Tmmbr(i);
- if (curNetBitRateKbit < MIN_VIDEO_BW_MANAGEMENT_BITRATE) {
- curNetBitRateKbit = MIN_VIDEO_BW_MANAGEMENT_BITRATE;
- }
- *minBitrateKbit = curNetBitRateKbit < *minBitrateKbit ? curNetBitRateKbit
- : *minBitrateKbit;
- }
- return true;
+uint64_t TMMBRHelp::CalcMinBitrateBps(
+ const std::vector<rtcp::TmmbItem>& candidates) {
+ RTC_DCHECK(!candidates.empty());
+ uint64_t min_bitrate_bps = std::numeric_limits<uint64_t>::max();
+ for (const rtcp::TmmbItem& item : candidates)
+ if (item.bitrate_bps() < min_bitrate_bps)
+ min_bitrate_bps = item.bitrate_bps();
+ return min_bitrate_bps;
}
} // namespace webrtc
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/tmmbr_help.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698