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

Side by Side Diff: webrtc/modules/congestion_controller/transport_feedback_adapter.cc

Issue 2827333005: Moving overhead counting to bitrate estimators.
Patch Set: Created 3 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 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
11 #include "webrtc/modules/congestion_controller/transport_feedback_adapter.h" 11 #include "webrtc/modules/congestion_controller/transport_feedback_adapter.h"
12 12
13 #include "webrtc/base/checks.h" 13 #include "webrtc/base/checks.h"
14 #include "webrtc/base/logging.h" 14 #include "webrtc/base/logging.h"
15 #include "webrtc/base/mod_ops.h" 15 #include "webrtc/base/mod_ops.h"
16 #include "webrtc/modules/congestion_controller/delay_based_bwe.h" 16 #include "webrtc/modules/congestion_controller/delay_based_bwe.h"
17 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h" 17 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
18 #include "webrtc/system_wrappers/include/field_trial.h"
19 18
20 namespace webrtc { 19 namespace webrtc {
21 20
22 const int64_t kNoTimestamp = -1; 21 const int64_t kNoTimestamp = -1;
23 const int64_t kSendTimeHistoryWindowMs = 60000; 22 const int64_t kSendTimeHistoryWindowMs = 60000;
24 const int64_t kBaseTimestampScaleFactor = 23 const int64_t kBaseTimestampScaleFactor =
25 rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 8); 24 rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 8);
26 const int64_t kBaseTimestampRangeSizeUs = kBaseTimestampScaleFactor * (1 << 24); 25 const int64_t kBaseTimestampRangeSizeUs = kBaseTimestampScaleFactor * (1 << 24);
27 26
28 TransportFeedbackAdapter::TransportFeedbackAdapter(const Clock* clock) 27 TransportFeedbackAdapter::TransportFeedbackAdapter(const Clock* clock)
29 : send_side_bwe_with_overhead_( 28 : transport_overhead_bytes_per_packet_(0),
30 webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")),
31 transport_overhead_bytes_per_packet_(0),
32 send_time_history_(clock, kSendTimeHistoryWindowMs), 29 send_time_history_(clock, kSendTimeHistoryWindowMs),
33 clock_(clock), 30 clock_(clock),
34 current_offset_ms_(kNoTimestamp), 31 current_offset_ms_(kNoTimestamp),
35 last_timestamp_us_(kNoTimestamp), 32 last_timestamp_us_(kNoTimestamp),
36 local_net_id_(0), 33 local_net_id_(0),
37 remote_net_id_(0) {} 34 remote_net_id_(0) {}
38 35
39 TransportFeedbackAdapter::~TransportFeedbackAdapter() { 36 TransportFeedbackAdapter::~TransportFeedbackAdapter() {
40 RTC_DCHECK(observers_.empty()); 37 RTC_DCHECK(observers_.empty());
41 } 38 }
(...skipping 11 matching lines...) Expand all
53 PacketFeedbackObserver* observer) { 50 PacketFeedbackObserver* observer) {
54 rtc::CritScope cs(&observers_lock_); 51 rtc::CritScope cs(&observers_lock_);
55 RTC_DCHECK(observer); 52 RTC_DCHECK(observer);
56 const auto it = std::find(observers_.begin(), observers_.end(), observer); 53 const auto it = std::find(observers_.begin(), observers_.end(), observer);
57 RTC_DCHECK(it != observers_.end()); 54 RTC_DCHECK(it != observers_.end());
58 observers_.erase(it); 55 observers_.erase(it);
59 } 56 }
60 57
61 void TransportFeedbackAdapter::AddPacket(uint32_t ssrc, 58 void TransportFeedbackAdapter::AddPacket(uint32_t ssrc,
62 uint16_t sequence_number, 59 uint16_t sequence_number,
63 size_t length, 60 size_t payload_size,
61 size_t rtp_headers_size,
64 const PacedPacketInfo& pacing_info) { 62 const PacedPacketInfo& pacing_info) {
65 { 63 {
66 rtc::CritScope cs(&lock_); 64 rtc::CritScope cs(&lock_);
67 if (send_side_bwe_with_overhead_) {
68 length += transport_overhead_bytes_per_packet_;
69 }
70 const int64_t creation_time_ms = clock_->TimeInMilliseconds(); 65 const int64_t creation_time_ms = clock_->TimeInMilliseconds();
71 send_time_history_.AddAndRemoveOld( 66 send_time_history_.AddAndRemoveOld(
72 PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_, 67 PacketFeedback(creation_time_ms, sequence_number, payload_size,
73 remote_net_id_, pacing_info)); 68 rtp_headers_size, transport_overhead_bytes_per_packet_,
69 local_net_id_, remote_net_id_, pacing_info));
74 } 70 }
75 71
76 { 72 {
77 rtc::CritScope cs(&observers_lock_); 73 rtc::CritScope cs(&observers_lock_);
78 for (auto observer : observers_) { 74 for (auto observer : observers_) {
79 observer->OnPacketAdded(ssrc, sequence_number); 75 observer->OnPacketAdded(ssrc, sequence_number);
80 } 76 }
81 } 77 }
82 } 78 }
83 79
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 observer->OnPacketFeedbackVector(last_packet_feedback_vector_); 178 observer->OnPacketFeedbackVector(last_packet_feedback_vector_);
183 } 179 }
184 } 180 }
185 } 181 }
186 182
187 std::vector<PacketFeedback> 183 std::vector<PacketFeedback>
188 TransportFeedbackAdapter::GetTransportFeedbackVector() const { 184 TransportFeedbackAdapter::GetTransportFeedbackVector() const {
189 return last_packet_feedback_vector_; 185 return last_packet_feedback_vector_;
190 } 186 }
191 } // namespace webrtc 187 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698