mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-19 08:37:54 +01:00

DeRegisterNetworkObserver is not used, since RtpTransportControllerSend owns the thread on which SendSideCongestionController runs it would not be safe to allow it to be called from outside. Deregistration should be done by destroying RtpTransportControllerSend. In the future, the RegisterObserver functions should be removed as well, in favor of providing the observer in the constructor. This requires breaking a circular dependency between RtpTransportControllerSend and Call. Bug: webrtc:8415 Change-Id: Ifeb4c5d4a41e4d8419994b3146980bdaaf9cd6a9 Reviewed-on: https://webrtc-review.googlesource.com/58098 Reviewed-by: Stefan Holmer <stefan@webrtc.org> Reviewed-by: Björn Terelius <terelius@webrtc.org> Commit-Queue: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22249}
72 lines
3 KiB
C++
72 lines
3 KiB
C++
/*
|
|
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef MODULES_CONGESTION_CONTROLLER_INCLUDE_SEND_SIDE_CONGESTION_CONTROLLER_INTERFACE_H_
|
|
#define MODULES_CONGESTION_CONTROLLER_INCLUDE_SEND_SIDE_CONGESTION_CONTROLLER_INTERFACE_H_
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include "modules/congestion_controller/include/network_changed_observer.h"
|
|
#include "modules/congestion_controller/transport_feedback_adapter.h"
|
|
#include "modules/include/module.h"
|
|
#include "modules/include/module_common_types.h"
|
|
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
|
#include "rtc_base/constructormagic.h"
|
|
#include "rtc_base/networkroute.h"
|
|
|
|
namespace rtc {
|
|
struct SentPacket;
|
|
}
|
|
|
|
namespace webrtc {
|
|
|
|
class BitrateController;
|
|
class Clock;
|
|
class AcknowledgedBitrateEstimator;
|
|
class ProbeController;
|
|
class RateLimiter;
|
|
class RtcEventLog;
|
|
|
|
class SendSideCongestionControllerInterface : public CallStatsObserver,
|
|
public Module,
|
|
public TransportFeedbackObserver {
|
|
public:
|
|
SendSideCongestionControllerInterface() = default;
|
|
~SendSideCongestionControllerInterface() override = default;
|
|
virtual void RegisterPacketFeedbackObserver(
|
|
PacketFeedbackObserver* observer) = 0;
|
|
virtual void DeRegisterPacketFeedbackObserver(
|
|
PacketFeedbackObserver* observer) = 0;
|
|
virtual void RegisterNetworkObserver(NetworkChangedObserver* observer) = 0;
|
|
virtual void SetBweBitrates(int min_bitrate_bps,
|
|
int start_bitrate_bps,
|
|
int max_bitrate_bps) = 0;
|
|
virtual void OnNetworkRouteChanged(const rtc::NetworkRoute& network_route,
|
|
int bitrate_bps,
|
|
int min_bitrate_bps,
|
|
int max_bitrate_bps) = 0;
|
|
virtual void SignalNetworkState(NetworkState state) = 0;
|
|
virtual void SetTransportOverhead(
|
|
size_t transport_overhead_bytes_per_packet) = 0;
|
|
virtual RtcpBandwidthObserver* GetBandwidthObserver() = 0;
|
|
virtual bool AvailableBandwidth(uint32_t* bandwidth) const = 0;
|
|
virtual int64_t GetPacerQueuingDelayMs() const = 0;
|
|
virtual int64_t GetFirstPacketTimeMs() const = 0;
|
|
virtual TransportFeedbackObserver* GetTransportFeedbackObserver() = 0;
|
|
virtual RateLimiter* GetRetransmissionRateLimiter() = 0;
|
|
virtual void EnablePeriodicAlrProbing(bool enable) = 0;
|
|
virtual void OnSentPacket(const rtc::SentPacket& sent_packet) = 0;
|
|
RTC_DISALLOW_COPY_AND_ASSIGN(SendSideCongestionControllerInterface);
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // MODULES_CONGESTION_CONTROLLER_INCLUDE_SEND_SIDE_CONGESTION_CONTROLLER_INTERFACE_H_
|