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(
58 ::std::unique_ptr<::webrtc::RtpPacketToSend> packet,
59 ::webrtc::PacedPacketInfo const& cluster_info
60 ) = 0;
61
62 virtual ::std::vector<::std::unique_ptr<::webrtc::RtpPacketToSend>> FetchFec() = 0;
63
64 virtual ::std::vector<::std::unique_ptr<::webrtc::RtpPacketToSend>>
65 GeneratePadding(::webrtc::DataSize size) = 0;
66
67 virtual void OnBatchComplete();
68
69 virtual void OnAbortedRetransmissions(uint ssrc, ::rtc::ArrayView<ushort const> sequence_numbers);
70
71 virtual ::std::optional<uint> GetRtxSsrcForMedia(uint ssrc) const;
72 // NOLINTEND
73
74 public:
75 // virtual function thunks
76 // NOLINTBEGIN
77
78 // NOLINTEND
79 };
80
81public:
82 // member variables
83 // NOLINTBEGIN
115 // NOLINTEND
116
117public:
118 // prevent constructor by default
119 PacingController& operator=(PacingController const&);
120 PacingController(PacingController const&);
121 PacingController();
122
123public:
124 // member functions
125 // NOLINTBEGIN
127
128 MCNAPI ::webrtc::Timestamp CurrentTime() const;
129
130 MCNAPI void EnqueuePacket(::std::unique_ptr<::webrtc::RtpPacketToSend> packet);
131
132 MCNAPI ::webrtc::TimeDelta ExpectedQueueTime() const;
133
134 MCNAPI ::std::optional<::webrtc::Timestamp> FirstSentPacketTime() const;
135
136 MCNAPI bool IsProbing() const;
137
139
140 MCNAPI ::webrtc::Timestamp NextSendTime() const;
141
142 MCNAPI ::webrtc::Timestamp OldestPacketEnqueueTime() const;
143
144 MCNAPI void OnPacketSent(
145 ::webrtc::RtpPacketMediaType packet_type,
146 ::webrtc::DataSize packet_size,
147 ::webrtc::Timestamp send_time
148 );
149
151 ::webrtc::Clock* clock,
153 ::webrtc::FieldTrialsView const& field_trials,
155 );
156
157 MCNAPI void Pause();
158
159 MCNAPI void ProcessPackets();
160
161 MCNAPI ::webrtc::DataSize QueueSizeData() const;
162
163 MCNAPI void RemovePacketsForSsrc(uint ssrc);
164
165 MCNAPI void Resume();
166
167 MCNAPI void SetAccountForAudioPackets(bool account_for_audio);
168
169 MCNAPI void SetAllowProbeWithoutMediaPacket(bool allow);
170
171 MCNAPI void SetCongested(bool congested);
172
173 MCNAPI void SetIncludeOverhead();
174
175 MCNAPI void SetPacingRates(::webrtc::DataRate pacing_rate, ::webrtc::DataRate padding_rate);
176
178
179 MCNAPI void SetSendBurstInterval(::webrtc::TimeDelta burst_interval);
180
181 MCNAPI void SetTransportOverhead(::webrtc::DataSize overhead_per_packet);
182
184
186
187 MCNAPI ::webrtc::TimeDelta UpdateTimeAndGetElapsed(::webrtc::Timestamp now);
188
190 // NOLINTEND
191
192public:
193 // static variables
194 // NOLINTBEGIN
195 MCNAPI static ::webrtc::TimeDelta const& kMaxEarlyProbeProcessing();
196
197 MCNAPI static ::webrtc::TimeDelta const& kMaxPaddingReplayDuration();
198
199 MCNAPI static ::webrtc::TimeDelta const& kMinSleepTime();
200
201 MCNAPI static ::webrtc::TimeDelta const& kPausedProcessInterval();
202
203 MCNAPI static ::webrtc::TimeDelta const& kTargetPaddingDuration();
204 // NOLINTEND
205
206public:
207 // constructor thunks
208 // NOLINTBEGIN
209 MCNAPI void* $ctor(
210 ::webrtc::Clock* clock,
212 ::webrtc::FieldTrialsView const& field_trials,
214 );
215 // NOLINTEND
216
217public:
218 // destructor thunk
219 // NOLINTBEGIN
220 MCNAPI void $dtor();
221 // NOLINTEND
222};
223
224} // namespace webrtc
Definition _HeaderOutputPredefine.h:310
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