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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver.h

Issue 1401463003: Avoid data race in RtcpReceiver. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 2 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 | « no previous file | webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc » ('j') | 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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 117
118 RTCPHelp::RTCPReceiveInformation* CreateReceiveInformation( 118 RTCPHelp::RTCPReceiveInformation* CreateReceiveInformation(
119 uint32_t remoteSSRC); 119 uint32_t remoteSSRC);
120 RTCPHelp::RTCPReceiveInformation* GetReceiveInformation(uint32_t remoteSSRC); 120 RTCPHelp::RTCPReceiveInformation* GetReceiveInformation(uint32_t remoteSSRC);
121 121
122 void UpdateReceiveInformation( 122 void UpdateReceiveInformation(
123 RTCPHelp::RTCPReceiveInformation& receiveInformation); 123 RTCPHelp::RTCPReceiveInformation& receiveInformation);
124 124
125 void HandleSenderReceiverReport( 125 void HandleSenderReceiverReport(
126 RTCPUtility::RTCPParserV2& rtcpParser, 126 RTCPUtility::RTCPParserV2& rtcpParser,
127 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 127 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
128 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
128 129
129 void HandleReportBlock( 130 void HandleReportBlock(
130 const RTCPUtility::RTCPPacket& rtcpPacket, 131 const RTCPUtility::RTCPPacket& rtcpPacket,
131 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation, 132 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation,
132 uint32_t remoteSSRC); 133 uint32_t remoteSSRC)
134 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
133 135
134 void HandleSDES(RTCPUtility::RTCPParserV2& rtcpParser, 136 void HandleSDES(RTCPUtility::RTCPParserV2& rtcpParser,
135 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 137 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
136 138
pbos-webrtc 2015/10/09 09:50:52 git cl format
sprang_webrtc 2015/10/09 11:18:44 Fixed. For some reason this was not caught by git
137 void HandleSDESChunk(RTCPUtility::RTCPParserV2& rtcpParser); 139 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
140
141 void HandleSDESChunk(RTCPUtility::RTCPParserV2& rtcpParser)
142
143 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
138 144
139 void HandleXrHeader(RTCPUtility::RTCPParserV2& parser, 145 void HandleXrHeader(RTCPUtility::RTCPParserV2& parser,
140 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 146 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
147 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
141 148
142 void HandleXrReceiveReferenceTime( 149 void HandleXrReceiveReferenceTime(
143 RTCPUtility::RTCPParserV2& parser, 150 RTCPUtility::RTCPParserV2& parser,
144 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 151 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
152 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
145 153
146 void HandleXrDlrrReportBlock( 154 void HandleXrDlrrReportBlock(
147 RTCPUtility::RTCPParserV2& parser, 155 RTCPUtility::RTCPParserV2& parser,
148 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 156 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
157 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
149 158
150 void HandleXrDlrrReportBlockItem( 159 void HandleXrDlrrReportBlockItem(
151 const RTCPUtility::RTCPPacket& packet, 160 const RTCPUtility::RTCPPacket& packet,
152 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 161 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
162 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
153 163
154 void HandleXRVOIPMetric( 164 void HandleXRVOIPMetric(
155 RTCPUtility::RTCPParserV2& rtcpParser, 165 RTCPUtility::RTCPParserV2& rtcpParser,
156 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 166 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
167 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
157 168
158 void HandleNACK(RTCPUtility::RTCPParserV2& rtcpParser, 169 void HandleNACK(RTCPUtility::RTCPParserV2& rtcpParser,
159 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 170 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
171 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
160 172
161 void HandleNACKItem(const RTCPUtility::RTCPPacket& rtcpPacket, 173 void HandleNACKItem(const RTCPUtility::RTCPPacket& rtcpPacket,
162 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 174 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
175 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
163 176
164 void HandleBYE(RTCPUtility::RTCPParserV2& rtcpParser); 177 void HandleBYE(RTCPUtility::RTCPParserV2& rtcpParser)
178 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
165 179
166 void HandlePLI(RTCPUtility::RTCPParserV2& rtcpParser, 180 void HandlePLI(RTCPUtility::RTCPParserV2& rtcpParser,
167 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 181 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
182 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
168 183
169 void HandleSLI(RTCPUtility::RTCPParserV2& rtcpParser, 184 void HandleSLI(RTCPUtility::RTCPParserV2& rtcpParser,
170 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 185 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
186 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
171 187
172 void HandleSLIItem(const RTCPUtility::RTCPPacket& rtcpPacket, 188 void HandleSLIItem(const RTCPUtility::RTCPPacket& rtcpPacket,
173 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 189 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
190 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
174 191
175 void HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser, 192 void HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser,
176 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 193 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
194 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
177 195
178 void HandlePsfbApp(RTCPUtility::RTCPParserV2& rtcpParser, 196 void HandlePsfbApp(RTCPUtility::RTCPParserV2& rtcpParser,
179 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 197 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
198 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
180 199
181 void HandleREMBItem(RTCPUtility::RTCPParserV2& rtcpParser, 200 void HandleREMBItem(RTCPUtility::RTCPParserV2& rtcpParser,
182 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 201 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
202 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
183 203
184 void HandleIJ(RTCPUtility::RTCPParserV2& rtcpParser, 204 void HandleIJ(RTCPUtility::RTCPParserV2& rtcpParser,
185 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 205 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
206 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
186 207
187 void HandleIJItem(const RTCPUtility::RTCPPacket& rtcpPacket, 208 void HandleIJItem(const RTCPUtility::RTCPPacket& rtcpPacket,
188 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 209 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
210 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
189 211
190 void HandleTMMBR(RTCPUtility::RTCPParserV2& rtcpParser, 212 void HandleTMMBR(RTCPUtility::RTCPParserV2& rtcpParser,
191 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 213 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
214 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
192 215
193 void HandleTMMBRItem(RTCPHelp::RTCPReceiveInformation& receiveInfo, 216 void HandleTMMBRItem(RTCPHelp::RTCPReceiveInformation& receiveInfo,
194 const RTCPUtility::RTCPPacket& rtcpPacket, 217 const RTCPUtility::RTCPPacket& rtcpPacket,
195 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation, 218 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation,
196 uint32_t senderSSRC); 219 uint32_t senderSSRC)
220 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
197 221
198 void HandleTMMBN(RTCPUtility::RTCPParserV2& rtcpParser, 222 void HandleTMMBN(RTCPUtility::RTCPParserV2& rtcpParser,
199 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 223 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
224 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
200 225
201 void HandleSR_REQ(RTCPUtility::RTCPParserV2& rtcpParser, 226 void HandleSR_REQ(RTCPUtility::RTCPParserV2& rtcpParser,
202 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 227 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
228 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
203 229
204 void HandleTMMBNItem(RTCPHelp::RTCPReceiveInformation& receiveInfo, 230 void HandleTMMBNItem(RTCPHelp::RTCPReceiveInformation& receiveInfo,
205 const RTCPUtility::RTCPPacket& rtcpPacket); 231 const RTCPUtility::RTCPPacket& rtcpPacket)
232 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
206 233
207 void HandleFIR(RTCPUtility::RTCPParserV2& rtcpParser, 234 void HandleFIR(RTCPUtility::RTCPParserV2& rtcpParser,
208 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 235 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
236 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
209 237
210 void HandleFIRItem(RTCPHelp::RTCPReceiveInformation* receiveInfo, 238 void HandleFIRItem(RTCPHelp::RTCPReceiveInformation* receiveInfo,
211 const RTCPUtility::RTCPPacket& rtcpPacket, 239 const RTCPUtility::RTCPPacket& rtcpPacket,
212 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 240 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
241 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
213 242
214 void HandleAPP(RTCPUtility::RTCPParserV2& rtcpParser, 243 void HandleAPP(RTCPUtility::RTCPParserV2& rtcpParser,
215 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 244 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
245 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
216 246
217 void HandleAPPItem(RTCPUtility::RTCPParserV2& rtcpParser, 247 void HandleAPPItem(RTCPUtility::RTCPParserV2& rtcpParser,
218 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); 248 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
249 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
219 250
220 void HandleTransportFeedback( 251 void HandleTransportFeedback(
221 RTCPUtility::RTCPParserV2* rtcp_parser, 252 RTCPUtility::RTCPParserV2* rtcp_parser,
222 RTCPHelp::RTCPPacketInformation* rtcp_packet_information); 253 RTCPHelp::RTCPPacketInformation* rtcp_packet_information)
254 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
223 255
224 private: 256 private:
225 typedef std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*> 257 typedef std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*>
226 ReceivedInfoMap; 258 ReceivedInfoMap;
227 // RTCP report block information mapped by remote SSRC. 259 // RTCP report block information mapped by remote SSRC.
228 typedef std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*> 260 typedef std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*>
229 ReportBlockInfoMap; 261 ReportBlockInfoMap;
230 // RTCP report block information map mapped by source SSRC. 262 // RTCP report block information map mapped by source SSRC.
231 typedef std::map<uint32_t, ReportBlockInfoMap> ReportBlockMap; 263 typedef std::map<uint32_t, ReportBlockInfoMap> ReportBlockMap;
232 264
233 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation( 265 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation(
234 uint32_t remote_ssrc, uint32_t source_ssrc) 266 uint32_t remote_ssrc, uint32_t source_ssrc)
235 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); 267 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
236 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation( 268 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation(
237 uint32_t remote_ssrc, uint32_t source_ssrc) const 269 uint32_t remote_ssrc, uint32_t source_ssrc) const
238 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); 270 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver);
239 271
240 Clock* const _clock; 272 Clock* const _clock;
241 const bool receiver_only_; 273 const bool receiver_only_;
242 RtcpMode _method; 274 RtcpMode _method;
243 int64_t _lastReceived; 275 int64_t _lastReceived;
244 ModuleRtpRtcpImpl& _rtpRtcp; 276 ModuleRtpRtcpImpl& _rtpRtcp;
245 277
246 CriticalSectionWrapper* _criticalSectionFeedbacks; 278 CriticalSectionWrapper* _criticalSectionFeedbacks;
247 RtcpBandwidthObserver* const _cbRtcpBandwidthObserver; 279 RtcpBandwidthObserver* const _cbRtcpBandwidthObserver;
248 RtcpIntraFrameObserver* const _cbRtcpIntraFrameObserver; 280 RtcpIntraFrameObserver* const _cbRtcpIntraFrameObserver;
249 TransportFeedbackObserver* const _cbTransportFeedbackObserver; 281 TransportFeedbackObserver* const _cbTransportFeedbackObserver;
250 282
251 CriticalSectionWrapper* _criticalSectionRTCPReceiver; 283 CriticalSectionWrapper* _criticalSectionRTCPReceiver;
252 uint32_t main_ssrc_; 284 uint32_t main_ssrc_ GUARDED_BY(_criticalSectionRTCPReceiver);
253 uint32_t _remoteSSRC; 285 uint32_t _remoteSSRC GUARDED_BY(_criticalSectionRTCPReceiver);
254 std::set<uint32_t> registered_ssrcs_; 286 std::set<uint32_t> registered_ssrcs_ GUARDED_BY(_criticalSectionRTCPReceiver);
255 287
256 // Received send report 288 // Received send report
257 RTCPSenderInfo _remoteSenderInfo; 289 RTCPSenderInfo _remoteSenderInfo;
258 // when did we receive the last send report 290 // when did we receive the last send report
259 uint32_t _lastReceivedSRNTPsecs; 291 uint32_t _lastReceivedSRNTPsecs;
260 uint32_t _lastReceivedSRNTPfrac; 292 uint32_t _lastReceivedSRNTPfrac;
261 293
262 // Received XR receive time report. 294 // Received XR receive time report.
263 RtcpReceiveTimeInfo _remoteXRReceiveTimeInfo; 295 RtcpReceiveTimeInfo _remoteXRReceiveTimeInfo;
264 // Time when the report was received. 296 // Time when the report was received.
(...skipping 22 matching lines...) Expand all
287 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; 319 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_;
288 RtcpPacketTypeCounter packet_type_counter_; 320 RtcpPacketTypeCounter packet_type_counter_;
289 321
290 RTCPUtility::NackStats nack_stats_; 322 RTCPUtility::NackStats nack_stats_;
291 323
292 size_t num_skipped_packets_; 324 size_t num_skipped_packets_;
293 int64_t last_skipped_packets_warning_; 325 int64_t last_skipped_packets_warning_;
294 }; 326 };
295 } // namespace webrtc 327 } // namespace webrtc
296 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ 328 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698