Index: webrtc/modules/congestion_controller/transport_feedback_adapter.h |
diff --git a/webrtc/modules/congestion_controller/transport_feedback_adapter.h b/webrtc/modules/congestion_controller/transport_feedback_adapter.h |
index 8a4856c9804834b832b9a4de2834c16506667898..0819ad969c0fff17091e71f0dc33feb486c8837b 100644 |
--- a/webrtc/modules/congestion_controller/transport_feedback_adapter.h |
+++ b/webrtc/modules/congestion_controller/transport_feedback_adapter.h |
@@ -11,37 +11,51 @@ |
#ifndef WEBRTC_MODULES_CONGESTION_CONTROLLER_TRANSPORT_FEEDBACK_ADAPTER_H_ |
#define WEBRTC_MODULES_CONGESTION_CONTROLLER_TRANSPORT_FEEDBACK_ADAPTER_H_ |
+#include <memory> |
#include <vector> |
#include "webrtc/base/criticalsection.h" |
#include "webrtc/base/thread_annotations.h" |
#include "webrtc/base/thread_checker.h" |
+#include "webrtc/modules/congestion_controller/delay_based_bwe.h" |
+#include "webrtc/modules/include/module_common_types.h" |
#include "webrtc/modules/remote_bitrate_estimator/include/send_time_history.h" |
-#include "webrtc/system_wrappers/include/clock.h" |
namespace webrtc { |
-namespace rtcp { |
-class TransportFeedback; |
-} // namespace rtcp |
+class BitrateController; |
+class RtcEventLog; |
+class ProcessThread; |
-class TransportFeedbackAdapter { |
+class TransportFeedbackAdapter : public TransportFeedbackObserver, |
+ public CallStatsObserver { |
public: |
- explicit TransportFeedbackAdapter(Clock* clock); |
+ TransportFeedbackAdapter(RtcEventLog* event_log, |
+ Clock* clock, |
+ BitrateController* bitrate_controller); |
virtual ~TransportFeedbackAdapter(); |
+ void InitBwe(); |
+ // Implements TransportFeedbackObserver. |
void AddPacket(uint16_t sequence_number, |
size_t length, |
- const PacedPacketInfo& pacing_info); |
+ const PacedPacketInfo& pacing_info) override; |
void OnSentPacket(uint16_t sequence_number, int64_t send_time_ms); |
// TODO(holmer): This method should return DelayBasedBwe::Result so that we |
// can get rid of the dependency on BitrateController. Requires changes |
// to the CongestionController interface. |
- void OnTransportFeedback(const rtcp::TransportFeedback& feedback); |
- std::vector<PacketFeedback> GetTransportFeedbackVector() const; |
+ void OnTransportFeedback(const rtcp::TransportFeedback& feedback) override; |
+ std::vector<PacketFeedback> GetTransportFeedbackVector() const override; |
+ // Implements CallStatsObserver. |
+ void OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) override; |
+ |
+ void SetStartBitrate(int start_bitrate_bps); |
+ void SetMinBitrate(int min_bitrate_bps); |
void SetTransportOverhead(int transport_overhead_bytes_per_packet); |
+ |
+ int64_t GetProbingIntervalMs() const; |
void ClearSendTimeHistory(); |
@@ -51,11 +65,15 @@ |
const bool send_side_bwe_with_overhead_; |
rtc::CriticalSection lock_; |
+ rtc::CriticalSection bwe_lock_; |
int transport_overhead_bytes_per_packet_ GUARDED_BY(&lock_); |
SendTimeHistory send_time_history_ GUARDED_BY(&lock_); |
- const Clock* const clock_; |
+ std::unique_ptr<DelayBasedBwe> delay_based_bwe_ GUARDED_BY(&bwe_lock_); |
+ RtcEventLog* const event_log_; |
+ Clock* const clock_; |
int64_t current_offset_ms_; |
int64_t last_timestamp_us_; |
+ BitrateController* const bitrate_controller_; |
std::vector<PacketFeedback> last_packet_feedback_vector_; |
}; |