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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/tmmbr_help.cc

Issue 1877253002: Replaced CriticalSectionWrapper with rtc::CriticalSection in rtp_rtcp module (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: git cl format dtmf_queue.cc Created 4 years, 8 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 unified diff | Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/tmmbr_help.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 void TMMBRSet::SwapEntries(uint32_t i, uint32_t j) { 60 void TMMBRSet::SwapEntries(uint32_t i, uint32_t j) {
61 using std::swap; 61 using std::swap;
62 swap((*this)[i], (*this)[j]); 62 swap((*this)[i], (*this)[j]);
63 } 63 }
64 64
65 void TMMBRSet::ClearEntry(uint32_t idx) { 65 void TMMBRSet::ClearEntry(uint32_t idx) {
66 SetEntry(idx, 0, 0, 0); 66 SetEntry(idx, 0, 0, 0);
67 } 67 }
68 68
69 TMMBRHelp::TMMBRHelp() 69 TMMBRHelp::TMMBRHelp()
70 : _criticalSection(CriticalSectionWrapper::CreateCriticalSection()), 70 : _candidateSet(),
71 _candidateSet(),
72 _boundingSet(), 71 _boundingSet(),
73 _boundingSetToSend(), 72 _boundingSetToSend(),
74 _ptrIntersectionBoundingSet(NULL), 73 _ptrIntersectionBoundingSet(NULL),
75 _ptrMaxPRBoundingSet(NULL) { 74 _ptrMaxPRBoundingSet(NULL) {
76 } 75 }
77 76
78 TMMBRHelp::~TMMBRHelp() { 77 TMMBRHelp::~TMMBRHelp() {
79 delete [] _ptrIntersectionBoundingSet; 78 delete [] _ptrIntersectionBoundingSet;
80 delete [] _ptrMaxPRBoundingSet; 79 delete [] _ptrMaxPRBoundingSet;
81 _ptrIntersectionBoundingSet = 0; 80 _ptrIntersectionBoundingSet = 0;
82 _ptrMaxPRBoundingSet = 0; 81 _ptrMaxPRBoundingSet = 0;
83 delete _criticalSection;
84 } 82 }
85 83
86 TMMBRSet* 84 TMMBRSet*
87 TMMBRHelp::VerifyAndAllocateBoundingSet(uint32_t minimumSize) 85 TMMBRHelp::VerifyAndAllocateBoundingSet(uint32_t minimumSize)
88 { 86 {
89 CriticalSectionScoped lock(_criticalSection); 87 rtc::CritScope lock(&_criticalSection);
90 88
91 if(minimumSize > _boundingSet.capacity()) 89 if(minimumSize > _boundingSet.capacity())
92 { 90 {
93 // make sure that our buffers are big enough 91 // make sure that our buffers are big enough
94 if(_ptrIntersectionBoundingSet) 92 if(_ptrIntersectionBoundingSet)
95 { 93 {
96 delete [] _ptrIntersectionBoundingSet; 94 delete [] _ptrIntersectionBoundingSet;
97 delete [] _ptrMaxPRBoundingSet; 95 delete [] _ptrMaxPRBoundingSet;
98 } 96 }
99 _ptrIntersectionBoundingSet = new float[minimumSize]; 97 _ptrIntersectionBoundingSet = new float[minimumSize];
100 _ptrMaxPRBoundingSet = new float[minimumSize]; 98 _ptrMaxPRBoundingSet = new float[minimumSize];
101 } 99 }
102 _boundingSet.VerifyAndAllocateSet(minimumSize); 100 _boundingSet.VerifyAndAllocateSet(minimumSize);
103 return &_boundingSet; 101 return &_boundingSet;
104 } 102 }
105 103
106 TMMBRSet* TMMBRHelp::BoundingSet() { 104 TMMBRSet* TMMBRHelp::BoundingSet() {
107 return &_boundingSet; 105 return &_boundingSet;
108 } 106 }
109 107
110 int32_t 108 int32_t
111 TMMBRHelp::SetTMMBRBoundingSetToSend(const TMMBRSet* boundingSetToSend) 109 TMMBRHelp::SetTMMBRBoundingSetToSend(const TMMBRSet* boundingSetToSend)
112 { 110 {
113 CriticalSectionScoped lock(_criticalSection); 111 rtc::CritScope lock(&_criticalSection);
114 112
115 if (boundingSetToSend == NULL) 113 if (boundingSetToSend == NULL)
116 { 114 {
117 _boundingSetToSend.clearSet(); 115 _boundingSetToSend.clearSet();
118 return 0; 116 return 0;
119 } 117 }
120 118
121 VerifyAndAllocateBoundingSetToSend(boundingSetToSend->lengthOfSet()); 119 VerifyAndAllocateBoundingSetToSend(boundingSetToSend->lengthOfSet());
122 _boundingSetToSend.clearSet(); 120 _boundingSetToSend.clearSet();
123 for (uint32_t i = 0; i < boundingSetToSend->lengthOfSet(); i++) 121 for (uint32_t i = 0; i < boundingSetToSend->lengthOfSet(); i++)
124 { 122 {
125 // cap at our configured max bitrate 123 // cap at our configured max bitrate
126 uint32_t bitrate = boundingSetToSend->Tmmbr(i); 124 uint32_t bitrate = boundingSetToSend->Tmmbr(i);
127 _boundingSetToSend.SetEntry(i, bitrate, 125 _boundingSetToSend.SetEntry(i, bitrate,
128 boundingSetToSend->PacketOH(i), 126 boundingSetToSend->PacketOH(i),
129 boundingSetToSend->Ssrc(i)); 127 boundingSetToSend->Ssrc(i));
130 } 128 }
131 return 0; 129 return 0;
132 } 130 }
133 131
134 int32_t 132 int32_t
135 TMMBRHelp::VerifyAndAllocateBoundingSetToSend(uint32_t minimumSize) 133 TMMBRHelp::VerifyAndAllocateBoundingSetToSend(uint32_t minimumSize)
136 { 134 {
137 CriticalSectionScoped lock(_criticalSection); 135 rtc::CritScope lock(&_criticalSection);
138 136
139 _boundingSetToSend.VerifyAndAllocateSet(minimumSize); 137 _boundingSetToSend.VerifyAndAllocateSet(minimumSize);
140 return 0; 138 return 0;
141 } 139 }
142 140
143 TMMBRSet* 141 TMMBRSet*
144 TMMBRHelp::VerifyAndAllocateCandidateSet(uint32_t minimumSize) 142 TMMBRHelp::VerifyAndAllocateCandidateSet(uint32_t minimumSize)
145 { 143 {
146 CriticalSectionScoped lock(_criticalSection); 144 rtc::CritScope lock(&_criticalSection);
147 145
148 _candidateSet.VerifyAndAllocateSet(minimumSize); 146 _candidateSet.VerifyAndAllocateSet(minimumSize);
149 return &_candidateSet; 147 return &_candidateSet;
150 } 148 }
151 149
152 TMMBRSet* 150 TMMBRSet*
153 TMMBRHelp::CandidateSet() 151 TMMBRHelp::CandidateSet()
154 { 152 {
155 return &_candidateSet; 153 return &_candidateSet;
156 } 154 }
157 155
158 TMMBRSet* 156 TMMBRSet*
159 TMMBRHelp::BoundingSetToSend() 157 TMMBRHelp::BoundingSetToSend()
160 { 158 {
161 return &_boundingSetToSend; 159 return &_boundingSetToSend;
162 } 160 }
163 161
164 int32_t 162 int32_t
165 TMMBRHelp::FindTMMBRBoundingSet(TMMBRSet*& boundingSet) 163 TMMBRHelp::FindTMMBRBoundingSet(TMMBRSet*& boundingSet)
166 { 164 {
167 CriticalSectionScoped lock(_criticalSection); 165 rtc::CritScope lock(&_criticalSection);
168 166
169 // Work on local variable, will be modified 167 // Work on local variable, will be modified
170 TMMBRSet candidateSet; 168 TMMBRSet candidateSet;
171 candidateSet.VerifyAndAllocateSet(_candidateSet.capacity()); 169 candidateSet.VerifyAndAllocateSet(_candidateSet.capacity());
172 170
173 for (uint32_t i = 0; i < _candidateSet.size(); i++) 171 for (uint32_t i = 0; i < _candidateSet.size(); i++)
174 { 172 {
175 if(_candidateSet.Tmmbr(i)) 173 if(_candidateSet.Tmmbr(i))
176 { 174 {
177 candidateSet.AddEntry(_candidateSet.Tmmbr(i), 175 candidateSet.AddEntry(_candidateSet.Tmmbr(i),
(...skipping 22 matching lines...) Expand all
200 } 198 }
201 boundingSet = &_boundingSet; 199 boundingSet = &_boundingSet;
202 } 200 }
203 return numBoundingSet; 201 return numBoundingSet;
204 } 202 }
205 203
206 204
207 int32_t 205 int32_t
208 TMMBRHelp::FindTMMBRBoundingSet(int32_t numCandidates, TMMBRSet& candidateSet) 206 TMMBRHelp::FindTMMBRBoundingSet(int32_t numCandidates, TMMBRSet& candidateSet)
209 { 207 {
210 CriticalSectionScoped lock(_criticalSection); 208 rtc::CritScope lock(&_criticalSection);
211 209
212 uint32_t numBoundingSet = 0; 210 uint32_t numBoundingSet = 0;
213 VerifyAndAllocateBoundingSet(candidateSet.capacity()); 211 VerifyAndAllocateBoundingSet(candidateSet.capacity());
214 212
215 if (numCandidates == 1) 213 if (numCandidates == 1)
216 { 214 {
217 for (uint32_t i = 0; i < candidateSet.size(); i++) 215 for (uint32_t i = 0; i < candidateSet.size(); i++)
218 { 216 {
219 if (candidateSet.Tmmbr(i) > 0) 217 if (candidateSet.Tmmbr(i) > 0)
220 { 218 {
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 } 403 }
406 404
407 // 9. Go back to step 5 if any tuple remains in candidate list 405 // 9. Go back to step 5 if any tuple remains in candidate list
408 } while (numCandidates > 0); 406 } while (numCandidates > 0);
409 407
410 return numBoundingSet; 408 return numBoundingSet;
411 } 409 }
412 410
413 bool TMMBRHelp::IsOwner(const uint32_t ssrc, 411 bool TMMBRHelp::IsOwner(const uint32_t ssrc,
414 const uint32_t length) const { 412 const uint32_t length) const {
415 CriticalSectionScoped lock(_criticalSection); 413 rtc::CritScope lock(&_criticalSection);
416 414
417 if (length == 0) { 415 if (length == 0) {
418 // Empty bounding set. 416 // Empty bounding set.
419 return false; 417 return false;
420 } 418 }
421 for(uint32_t i = 0; 419 for(uint32_t i = 0;
422 (i < length) && (i < _boundingSet.size()); ++i) { 420 (i < length) && (i < _boundingSet.size()); ++i) {
423 if(_boundingSet.Ssrc(i) == ssrc) { 421 if(_boundingSet.Ssrc(i) == ssrc) {
424 return true; 422 return true;
425 } 423 }
426 } 424 }
427 return false; 425 return false;
428 } 426 }
429 427
430 bool TMMBRHelp::CalcMinBitRate( uint32_t* minBitrateKbit) const { 428 bool TMMBRHelp::CalcMinBitRate( uint32_t* minBitrateKbit) const {
431 CriticalSectionScoped lock(_criticalSection); 429 rtc::CritScope lock(&_criticalSection);
432 430
433 if (_candidateSet.size() == 0) { 431 if (_candidateSet.size() == 0) {
434 // Empty bounding set. 432 // Empty bounding set.
435 return false; 433 return false;
436 } 434 }
437 *minBitrateKbit = std::numeric_limits<uint32_t>::max(); 435 *minBitrateKbit = std::numeric_limits<uint32_t>::max();
438 436
439 for (uint32_t i = 0; i < _candidateSet.lengthOfSet(); ++i) { 437 for (uint32_t i = 0; i < _candidateSet.lengthOfSet(); ++i) {
440 uint32_t curNetBitRateKbit = _candidateSet.Tmmbr(i); 438 uint32_t curNetBitRateKbit = _candidateSet.Tmmbr(i);
441 if (curNetBitRateKbit < MIN_VIDEO_BW_MANAGEMENT_BITRATE) { 439 if (curNetBitRateKbit < MIN_VIDEO_BW_MANAGEMENT_BITRATE) {
442 curNetBitRateKbit = MIN_VIDEO_BW_MANAGEMENT_BITRATE; 440 curNetBitRateKbit = MIN_VIDEO_BW_MANAGEMENT_BITRATE;
443 } 441 }
444 *minBitrateKbit = curNetBitRateKbit < *minBitrateKbit ? 442 *minBitrateKbit = curNetBitRateKbit < *minBitrateKbit ?
445 curNetBitRateKbit : *minBitrateKbit; 443 curNetBitRateKbit : *minBitrateKbit;
446 } 444 }
447 return true; 445 return true;
448 } 446 }
449 } // namespace webrtc 447 } // namespace webrtc
OLDNEW
« 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