LeviLamina
Loading...
Searching...
No Matches
PacingController.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/external/webrtc/RtpPacketMediaType.h"
7
8// auto generated forward declare list
9// clang-format off
10namespace webrtc { class Clock; }
11namespace webrtc { class DataRate; }
12namespace webrtc { class DataSize; }
13namespace webrtc { class FieldTrialsView; }
14namespace webrtc { class RtpPacketToSend; }
15namespace webrtc { class TimeDelta; }
16namespace webrtc { class Timestamp; }
17namespace webrtc { struct PacedPacketInfo; }
18namespace webrtc { struct ProbeClusterConfig; }
19// clang-format on
20
21namespace webrtc {
22
23class PacingController {
24public:
25 // PacingController inner types declare
26 // clang-format off
27 struct Configuration;
28 class PacketSender;
29 // clang-format on
30
31 // PacingController inner types define
32 struct Configuration {
33 public:
34 // member variables
35 // NOLINTBEGIN
42 // NOLINTEND
43
44 public:
45 // prevent constructor by default
46 Configuration& operator=(Configuration const&);
47 Configuration(Configuration const&);
48 Configuration();
49 };
50
52 public:
53 // virtual functions
54 // NOLINTBEGIN
55 virtual ~PacketSender() = default;
56
57 virtual void SendPacket(::std::unique_ptr<::webrtc::RtpPacketToSend>, ::webrtc::PacedPacketInfo const&) = 0;
58
59 virtual ::std::vector<::std::unique_ptr<::webrtc::RtpPacketToSend>> FetchFec() = 0;
60
61 virtual ::std::vector<::std::unique_ptr<::webrtc::RtpPacketToSend>> GeneratePadding(::webrtc::DataSize) = 0;
62
63 virtual void OnBatchComplete();
64
65 virtual void OnAbortedRetransmissions(uint, ::rtc::ArrayView<ushort const>);
66
67 virtual ::std::optional<uint> GetRtxSsrcForMedia(uint) const;
68 // NOLINTEND
69
70 public:
71 // virtual function thunks
72 // NOLINTBEGIN
73
74 // NOLINTEND
75 };
76
77public:
78 // member variables
79 // NOLINTBEGIN
111 // NOLINTEND
112
113public:
114 // prevent constructor by default
115 PacingController& operator=(PacingController const&);
116 PacingController(PacingController const&);
117 PacingController();
118
119public:
120 // member functions
121 // NOLINTBEGIN
123
124 MCNAPI ::webrtc::Timestamp CurrentTime() const;
125
126 MCNAPI void EnqueuePacket(::std::unique_ptr<::webrtc::RtpPacketToSend> packet);
127
128 MCNAPI ::webrtc::TimeDelta ExpectedQueueTime() const;
129
130 MCNAPI ::std::optional<::webrtc::Timestamp> FirstSentPacketTime() const;
131
132 MCNAPI bool IsProbing() const;
133
135
136 MCNAPI ::webrtc::Timestamp NextSendTime() const;
137
138 MCNAPI ::webrtc::Timestamp OldestPacketEnqueueTime() const;
139
140 MCNAPI void OnPacketSent(
141 ::webrtc::RtpPacketMediaType packet_type,
142 ::webrtc::DataSize packet_size,
143 ::webrtc::Timestamp send_time
144 );
145
147 ::webrtc::Clock* clock,
149 ::webrtc::FieldTrialsView const& field_trials,
151 );
152
153 MCNAPI void Pause();
154
155 MCNAPI void ProcessPackets();
156
157 MCNAPI ::webrtc::DataSize QueueSizeData() const;
158
159 MCNAPI void RemovePacketsForSsrc(uint ssrc);
160
161 MCNAPI void Resume();
162
163 MCNAPI void SetAccountForAudioPackets(bool account_for_audio);
164
165 MCNAPI void SetAllowProbeWithoutMediaPacket(bool allow);
166
167 MCNAPI void SetCongested(bool congested);
168
169 MCNAPI void SetIncludeOverhead();
170
171 MCNAPI void SetPacingRates(::webrtc::DataRate pacing_rate, ::webrtc::DataRate padding_rate);
172
174
175 MCNAPI void SetSendBurstInterval(::webrtc::TimeDelta burst_interval);
176
177 MCNAPI void SetTransportOverhead(::webrtc::DataSize overhead_per_packet);
178
180
182
183 MCNAPI ::webrtc::TimeDelta UpdateTimeAndGetElapsed(::webrtc::Timestamp now);
184
186 // NOLINTEND
187
188public:
189 // static variables
190 // NOLINTBEGIN
191 MCNAPI static ::webrtc::TimeDelta const& kMaxEarlyProbeProcessing();
192
193 MCNAPI static ::webrtc::TimeDelta const& kMaxPaddingReplayDuration();
194
195 MCNAPI static ::webrtc::TimeDelta const& kMinSleepTime();
196
197 MCNAPI static ::webrtc::TimeDelta const& kPausedProcessInterval();
198
199 MCNAPI static ::webrtc::TimeDelta const& kTargetPaddingDuration();
200 // NOLINTEND
201
202public:
203 // constructor thunks
204 // NOLINTBEGIN
205 MCNAPI void* $ctor(
206 ::webrtc::Clock* clock,
208 ::webrtc::FieldTrialsView const& field_trials,
210 );
211 // NOLINTEND
212
213public:
214 // destructor thunk
215 // NOLINTBEGIN
216 MCNAPI void $dtor();
217 // NOLINTEND
218};
219
220} // namespace webrtc
Definition _HeaderOutputPredefine.h:309
Definition Clock.h:13
Definition DataRate.h:10
Definition DataSize.h:10
Definition FieldTrialsView.h:7
Definition PacingController.h:51
MCAPI void UpdateBudgetWithElapsedTime(::webrtc::TimeDelta delta)
MCAPI void CreateProbeClusters(::rtc::ArrayView<::webrtc::ProbeClusterConfig const > probe_cluster_configs)
MCAPI void UpdatePaddingBudgetWithSentData(::webrtc::DataSize size)
MCAPI void SetSendBurstInterval(::webrtc::TimeDelta burst_interval)
static MCAPI ::webrtc::TimeDelta const & kMinSleepTime()
MCAPI void SetTransportOverhead(::webrtc::DataSize overhead_per_packet)
MCAPI void SetIncludeOverhead()
MCAPI::webrtc::Timestamp CurrentTime() const
static MCAPI ::webrtc::TimeDelta const & kPausedProcessInterval()
MCAPI void RemovePacketsForSsrc(uint ssrc)
MCAPI::webrtc::Timestamp NextSendTime() const
MCAPI PacingController(::webrtc::Clock *clock, ::webrtc::PacingController::PacketSender *packet_sender, ::webrtc::FieldTrialsView const &field_trials, ::webrtc::PacingController::Configuration configuration)
MCAPI void MaybeUpdateMediaRateDueToLongQueue(::webrtc::Timestamp now)
MCAPI::webrtc::TimeDelta UpdateTimeAndGetElapsed(::webrtc::Timestamp now)
MCAPI void SetPacingRates(::webrtc::DataRate pacing_rate, ::webrtc::DataRate padding_rate)
static MCAPI ::webrtc::TimeDelta const & kMaxEarlyProbeProcessing()
MCAPI ::std::optional<::webrtc::Timestamp > FirstSentPacketTime() const
MCAPI void OnPacketSent(::webrtc::RtpPacketMediaType packet_type, ::webrtc::DataSize packet_size, ::webrtc::Timestamp send_time)
MCAPI void SetCongested(bool congested)
MCAPI bool IsProbing() const
MCAPI void SetQueueTimeLimit(::webrtc::TimeDelta limit)
MCAPI void SetAccountForAudioPackets(bool account_for_audio)
MCAPI::webrtc::Timestamp OldestPacketEnqueueTime() const
static MCAPI ::webrtc::TimeDelta const & kMaxPaddingReplayDuration()
MCAPI::webrtc::TimeDelta ExpectedQueueTime() const
MCAPI void ProcessPackets()
static MCAPI ::webrtc::TimeDelta const & kTargetPaddingDuration()
MCAPI void * $ctor(::webrtc::Clock *clock, ::webrtc::PacingController::PacketSender *packet_sender, ::webrtc::FieldTrialsView const &field_trials, ::webrtc::PacingController::Configuration configuration)
MCAPI void EnqueuePacket(::std::unique_ptr<::webrtc::RtpPacketToSend > packet)
MCAPI void SetAllowProbeWithoutMediaPacket(bool allow)
MCAPI::webrtc::DataSize QueueSizeData() const
Definition RtpPacketToSend.h:16
Definition TimeDelta.h:10
Definition Timestamp.h:15
Definition Alias.h:14
Definition PacedPacketInfo.h:7
Definition PacingController.h:32
Definition ProbeClusterConfig.h:7