OLD | NEW |
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 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 148 |
149 void SetTargetBitrate(unsigned int target_bitrate); | 149 void SetTargetBitrate(unsigned int target_bitrate); |
150 void SetVideoBitrateAllocation(const BitrateAllocation& bitrate); | 150 void SetVideoBitrateAllocation(const BitrateAllocation& bitrate); |
151 bool SendFeedbackPacket(const rtcp::TransportFeedback& packet); | 151 bool SendFeedbackPacket(const rtcp::TransportFeedback& packet); |
152 | 152 |
153 private: | 153 private: |
154 class RtcpContext; | 154 class RtcpContext; |
155 | 155 |
156 // Determine which RTCP messages should be sent and setup flags. | 156 // Determine which RTCP messages should be sent and setup flags. |
157 void PrepareReport(const FeedbackState& feedback_state) | 157 void PrepareReport(const FeedbackState& feedback_state) |
158 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 158 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
159 | 159 |
160 std::vector<rtcp::ReportBlock> CreateReportBlocks( | 160 std::vector<rtcp::ReportBlock> CreateReportBlocks( |
161 const FeedbackState& feedback_state) | 161 const FeedbackState& feedback_state) |
162 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 162 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
163 | 163 |
164 std::unique_ptr<rtcp::RtcpPacket> BuildSR(const RtcpContext& context) | 164 std::unique_ptr<rtcp::RtcpPacket> BuildSR(const RtcpContext& context) |
165 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 165 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
166 std::unique_ptr<rtcp::RtcpPacket> BuildRR(const RtcpContext& context) | 166 std::unique_ptr<rtcp::RtcpPacket> BuildRR(const RtcpContext& context) |
167 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 167 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
168 std::unique_ptr<rtcp::RtcpPacket> BuildSDES(const RtcpContext& context) | 168 std::unique_ptr<rtcp::RtcpPacket> BuildSDES(const RtcpContext& context) |
169 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 169 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
170 std::unique_ptr<rtcp::RtcpPacket> BuildPLI(const RtcpContext& context) | 170 std::unique_ptr<rtcp::RtcpPacket> BuildPLI(const RtcpContext& context) |
171 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 171 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
172 std::unique_ptr<rtcp::RtcpPacket> BuildREMB(const RtcpContext& context) | 172 std::unique_ptr<rtcp::RtcpPacket> BuildREMB(const RtcpContext& context) |
173 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 173 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
174 std::unique_ptr<rtcp::RtcpPacket> BuildTMMBR(const RtcpContext& context) | 174 std::unique_ptr<rtcp::RtcpPacket> BuildTMMBR(const RtcpContext& context) |
175 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 175 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
176 std::unique_ptr<rtcp::RtcpPacket> BuildTMMBN(const RtcpContext& context) | 176 std::unique_ptr<rtcp::RtcpPacket> BuildTMMBN(const RtcpContext& context) |
177 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 177 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
178 std::unique_ptr<rtcp::RtcpPacket> BuildAPP(const RtcpContext& context) | 178 std::unique_ptr<rtcp::RtcpPacket> BuildAPP(const RtcpContext& context) |
179 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 179 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
180 std::unique_ptr<rtcp::RtcpPacket> BuildExtendedReports( | 180 std::unique_ptr<rtcp::RtcpPacket> BuildExtendedReports( |
181 const RtcpContext& context) | 181 const RtcpContext& context) |
182 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 182 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
183 std::unique_ptr<rtcp::RtcpPacket> BuildBYE(const RtcpContext& context) | 183 std::unique_ptr<rtcp::RtcpPacket> BuildBYE(const RtcpContext& context) |
184 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 184 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
185 std::unique_ptr<rtcp::RtcpPacket> BuildFIR(const RtcpContext& context) | 185 std::unique_ptr<rtcp::RtcpPacket> BuildFIR(const RtcpContext& context) |
186 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 186 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
187 std::unique_ptr<rtcp::RtcpPacket> BuildNACK(const RtcpContext& context) | 187 std::unique_ptr<rtcp::RtcpPacket> BuildNACK(const RtcpContext& context) |
188 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 188 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
189 | 189 |
190 private: | 190 private: |
191 const bool audio_; | 191 const bool audio_; |
192 Clock* const clock_; | 192 Clock* const clock_; |
193 Random random_ GUARDED_BY(critical_section_rtcp_sender_); | 193 Random random_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
194 RtcpMode method_ GUARDED_BY(critical_section_rtcp_sender_); | 194 RtcpMode method_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
195 | 195 |
196 RtcEventLog* const event_log_; | 196 RtcEventLog* const event_log_; |
197 Transport* const transport_; | 197 Transport* const transport_; |
198 | 198 |
199 rtc::CriticalSection critical_section_rtcp_sender_; | 199 rtc::CriticalSection critical_section_rtcp_sender_; |
200 bool using_nack_ GUARDED_BY(critical_section_rtcp_sender_); | 200 bool using_nack_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
201 bool sending_ GUARDED_BY(critical_section_rtcp_sender_); | 201 bool sending_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
202 bool remb_enabled_ GUARDED_BY(critical_section_rtcp_sender_); | 202 bool remb_enabled_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
203 | 203 |
204 int64_t next_time_to_send_rtcp_ GUARDED_BY(critical_section_rtcp_sender_); | 204 int64_t next_time_to_send_rtcp_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
205 | 205 |
206 uint32_t timestamp_offset_ GUARDED_BY(critical_section_rtcp_sender_); | 206 uint32_t timestamp_offset_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
207 uint32_t last_rtp_timestamp_ GUARDED_BY(critical_section_rtcp_sender_); | 207 uint32_t last_rtp_timestamp_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
208 int64_t last_frame_capture_time_ms_ GUARDED_BY(critical_section_rtcp_sender_); | 208 int64_t last_frame_capture_time_ms_ |
209 uint32_t ssrc_ GUARDED_BY(critical_section_rtcp_sender_); | 209 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
| 210 uint32_t ssrc_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
210 // SSRC that we receive on our RTP channel | 211 // SSRC that we receive on our RTP channel |
211 uint32_t remote_ssrc_ GUARDED_BY(critical_section_rtcp_sender_); | 212 uint32_t remote_ssrc_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
212 std::string cname_ GUARDED_BY(critical_section_rtcp_sender_); | 213 std::string cname_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
213 | 214 |
214 ReceiveStatisticsProvider* receive_statistics_ | 215 ReceiveStatisticsProvider* receive_statistics_ |
215 GUARDED_BY(critical_section_rtcp_sender_); | 216 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
216 std::map<uint32_t, std::string> csrc_cnames_ | 217 std::map<uint32_t, std::string> csrc_cnames_ |
217 GUARDED_BY(critical_section_rtcp_sender_); | 218 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
218 | 219 |
219 // send CSRCs | 220 // send CSRCs |
220 std::vector<uint32_t> csrcs_ GUARDED_BY(critical_section_rtcp_sender_); | 221 std::vector<uint32_t> csrcs_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
221 | 222 |
222 // Full intra request | 223 // Full intra request |
223 uint8_t sequence_number_fir_ GUARDED_BY(critical_section_rtcp_sender_); | 224 uint8_t sequence_number_fir_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
224 | 225 |
225 // REMB | 226 // REMB |
226 uint32_t remb_bitrate_ GUARDED_BY(critical_section_rtcp_sender_); | 227 uint32_t remb_bitrate_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
227 std::vector<uint32_t> remb_ssrcs_ GUARDED_BY(critical_section_rtcp_sender_); | 228 std::vector<uint32_t> remb_ssrcs_ |
| 229 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
228 | 230 |
229 std::vector<rtcp::TmmbItem> tmmbn_to_send_ | 231 std::vector<rtcp::TmmbItem> tmmbn_to_send_ |
230 GUARDED_BY(critical_section_rtcp_sender_); | 232 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
231 uint32_t tmmbr_send_bps_ GUARDED_BY(critical_section_rtcp_sender_); | 233 uint32_t tmmbr_send_bps_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
232 uint32_t packet_oh_send_ GUARDED_BY(critical_section_rtcp_sender_); | 234 uint32_t packet_oh_send_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
233 size_t max_packet_size_ GUARDED_BY(critical_section_rtcp_sender_); | 235 size_t max_packet_size_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
234 | 236 |
235 // APP | 237 // APP |
236 uint8_t app_sub_type_ GUARDED_BY(critical_section_rtcp_sender_); | 238 uint8_t app_sub_type_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
237 uint32_t app_name_ GUARDED_BY(critical_section_rtcp_sender_); | 239 uint32_t app_name_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
238 std::unique_ptr<uint8_t[]> app_data_ | 240 std::unique_ptr<uint8_t[]> app_data_ |
239 GUARDED_BY(critical_section_rtcp_sender_); | 241 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
240 uint16_t app_length_ GUARDED_BY(critical_section_rtcp_sender_); | 242 uint16_t app_length_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
241 | 243 |
242 // True if sending of XR Receiver reference time report is enabled. | 244 // True if sending of XR Receiver reference time report is enabled. |
243 bool xr_send_receiver_reference_time_enabled_ | 245 bool xr_send_receiver_reference_time_enabled_ |
244 GUARDED_BY(critical_section_rtcp_sender_); | 246 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
245 | 247 |
246 // XR VoIP metric | 248 // XR VoIP metric |
247 rtc::Optional<RTCPVoIPMetric> xr_voip_metric_ | 249 rtc::Optional<RTCPVoIPMetric> xr_voip_metric_ |
248 GUARDED_BY(critical_section_rtcp_sender_); | 250 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
249 | 251 |
250 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; | 252 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; |
251 RtcpPacketTypeCounter packet_type_counter_ | 253 RtcpPacketTypeCounter packet_type_counter_ |
252 GUARDED_BY(critical_section_rtcp_sender_); | 254 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
253 | 255 |
254 RtcpNackStats nack_stats_ GUARDED_BY(critical_section_rtcp_sender_); | 256 RtcpNackStats nack_stats_ RTC_GUARDED_BY(critical_section_rtcp_sender_); |
255 | 257 |
256 rtc::Optional<BitrateAllocation> video_bitrate_allocation_ | 258 rtc::Optional<BitrateAllocation> video_bitrate_allocation_ |
257 GUARDED_BY(critical_section_rtcp_sender_); | 259 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
258 | 260 |
259 void SetFlag(uint32_t type, bool is_volatile) | 261 void SetFlag(uint32_t type, bool is_volatile) |
260 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 262 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
261 void SetFlags(const std::set<RTCPPacketType>& types, bool is_volatile) | 263 void SetFlags(const std::set<RTCPPacketType>& types, bool is_volatile) |
262 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 264 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
263 bool IsFlagPresent(uint32_t type) const | 265 bool IsFlagPresent(uint32_t type) const |
264 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 266 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
265 bool ConsumeFlag(uint32_t type, bool forced = false) | 267 bool ConsumeFlag(uint32_t type, bool forced = false) |
266 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 268 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
267 bool AllVolatileFlagsConsumed() const | 269 bool AllVolatileFlagsConsumed() const |
268 EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); | 270 RTC_EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_); |
269 struct ReportFlag { | 271 struct ReportFlag { |
270 ReportFlag(uint32_t type, bool is_volatile) | 272 ReportFlag(uint32_t type, bool is_volatile) |
271 : type(type), is_volatile(is_volatile) {} | 273 : type(type), is_volatile(is_volatile) {} |
272 bool operator<(const ReportFlag& flag) const { return type < flag.type; } | 274 bool operator<(const ReportFlag& flag) const { return type < flag.type; } |
273 bool operator==(const ReportFlag& flag) const { return type == flag.type; } | 275 bool operator==(const ReportFlag& flag) const { return type == flag.type; } |
274 const uint32_t type; | 276 const uint32_t type; |
275 const bool is_volatile; | 277 const bool is_volatile; |
276 }; | 278 }; |
277 | 279 |
278 std::set<ReportFlag> report_flags_ GUARDED_BY(critical_section_rtcp_sender_); | 280 std::set<ReportFlag> report_flags_ |
| 281 RTC_GUARDED_BY(critical_section_rtcp_sender_); |
279 | 282 |
280 typedef std::unique_ptr<rtcp::RtcpPacket> (RTCPSender::*BuilderFunc)( | 283 typedef std::unique_ptr<rtcp::RtcpPacket> (RTCPSender::*BuilderFunc)( |
281 const RtcpContext&); | 284 const RtcpContext&); |
282 // Map from RTCPPacketType to builder. | 285 // Map from RTCPPacketType to builder. |
283 std::map<uint32_t, BuilderFunc> builders_; | 286 std::map<uint32_t, BuilderFunc> builders_; |
284 | 287 |
285 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RTCPSender); | 288 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RTCPSender); |
286 }; | 289 }; |
287 } // namespace webrtc | 290 } // namespace webrtc |
288 | 291 |
289 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_SENDER_H_ | 292 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_SENDER_H_ |
OLD | NEW |