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 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 builders_[kRtcpXrDlrrReportBlock] = &RTCPSender::BuildDlrr; | 198 builders_[kRtcpXrDlrrReportBlock] = &RTCPSender::BuildDlrr; |
199 } | 199 } |
200 | 200 |
201 RTCPSender::~RTCPSender() {} | 201 RTCPSender::~RTCPSender() {} |
202 | 202 |
203 RtcpMode RTCPSender::Status() const { | 203 RtcpMode RTCPSender::Status() const { |
204 rtc::CritScope lock(&critical_section_rtcp_sender_); | 204 rtc::CritScope lock(&critical_section_rtcp_sender_); |
205 return method_; | 205 return method_; |
206 } | 206 } |
207 | 207 |
208 void RTCPSender::SetRTCPStatus(RtcpMode method) { | 208 void RTCPSender::SetRTCPStatus(RtcpMode new_method) { |
209 rtc::CritScope lock(&critical_section_rtcp_sender_); | 209 rtc::CritScope lock(&critical_section_rtcp_sender_); |
210 method_ = method; | |
211 | 210 |
212 if (method == RtcpMode::kOff) | 211 if (method_ == RtcpMode::kOff && new_method != RtcpMode::kOff) { |
213 return; | 212 // When switching on, reschedule the next packet |
214 next_time_to_send_rtcp_ = | 213 next_time_to_send_rtcp_ = |
215 clock_->TimeInMilliseconds() + | 214 clock_->TimeInMilliseconds() + |
216 (audio_ ? RTCP_INTERVAL_AUDIO_MS / 2 : RTCP_INTERVAL_VIDEO_MS / 2); | 215 (audio_ ? RTCP_INTERVAL_AUDIO_MS / 2 : RTCP_INTERVAL_VIDEO_MS / 2); |
| 216 } |
| 217 method_ = new_method; |
217 } | 218 } |
218 | 219 |
219 bool RTCPSender::Sending() const { | 220 bool RTCPSender::Sending() const { |
220 rtc::CritScope lock(&critical_section_rtcp_sender_); | 221 rtc::CritScope lock(&critical_section_rtcp_sender_); |
221 return sending_; | 222 return sending_; |
222 } | 223 } |
223 | 224 |
224 int32_t RTCPSender::SetSendingStatus(const FeedbackState& feedback_state, | 225 int32_t RTCPSender::SetSendingStatus(const FeedbackState& feedback_state, |
225 bool sending) { | 226 bool sending) { |
226 bool sendRTCPBye = false; | 227 bool sendRTCPBye = false; |
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 // RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(Sender); | 1030 // RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(Sender); |
1030 // but we can't because of an incorrect warning (C4822) in MVS 2013. | 1031 // but we can't because of an incorrect warning (C4822) in MVS 2013. |
1031 } sender(transport_, event_log_); | 1032 } sender(transport_, event_log_); |
1032 | 1033 |
1033 uint8_t buffer[IP_PACKET_SIZE]; | 1034 uint8_t buffer[IP_PACKET_SIZE]; |
1034 return packet.BuildExternalBuffer(buffer, IP_PACKET_SIZE, &sender) && | 1035 return packet.BuildExternalBuffer(buffer, IP_PACKET_SIZE, &sender) && |
1035 !sender.send_failure_; | 1036 !sender.send_failure_; |
1036 } | 1037 } |
1037 | 1038 |
1038 } // namespace webrtc | 1039 } // namespace webrtc |
OLD | NEW |