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/ArrayView.h"
7#include "mc/external/webrtc/RtpPacketMediaType.h"
8
9// auto generated forward declare list
10// clang-format off
11namespace webrtc { class Clock; }
12namespace webrtc { class DataRate; }
13namespace webrtc { class DataSize; }
14namespace webrtc { class FieldTrialsView; }
15namespace webrtc { class RtpPacketToSend; }
16namespace webrtc { class TimeDelta; }
17namespace webrtc { class Timestamp; }
18namespace webrtc { struct PacedPacketInfo; }
19namespace webrtc { struct ProbeClusterConfig; }
20// clang-format on
21
22namespace webrtc {
23
24class PacingController {
25public:
26 // PacingController inner types declare
27 // clang-format off
28 struct Configuration;
29 class PacketSender;
30 // clang-format on
31
32 // PacingController inner types define
33 struct Configuration {
34 public:
35 // member variables
36 // NOLINTBEGIN
43 // NOLINTEND
44
45 public:
46 // prevent constructor by default
47 Configuration& operator=(Configuration const&);
48 Configuration(Configuration const&);
49 Configuration();
50 };
51
53 public:
54 // virtual functions
55 // NOLINTBEGIN
56 virtual ~PacketSender() = default;
57
58 virtual void SendPacket(
59 ::std::unique_ptr<::webrtc::RtpPacketToSend> packet,
60 ::webrtc::PacedPacketInfo const& cluster_info
61 ) = 0;
62
63 virtual ::std::vector<::std::unique_ptr<::webrtc::RtpPacketToSend>> FetchFec() = 0;
64
65 virtual ::std::vector<::std::unique_ptr<::webrtc::RtpPacketToSend>>
66 GeneratePadding(::webrtc::DataSize size) = 0;
67
68 virtual void OnBatchComplete();
69
70 virtual void OnAbortedRetransmissions(uint ssrc, ::webrtc::ArrayView<ushort const> sequence_numbers);
71
72 virtual ::std::optional<uint> GetRtxSsrcForMedia(uint ssrc) const;
73 // NOLINTEND
74 };
75
76public:
77 // member variables
78 // NOLINTBEGIN
109 // NOLINTEND
110
111public:
112 // prevent constructor by default
113 PacingController& operator=(PacingController const&);
114 PacingController(PacingController const&);
115 PacingController();
116
117public:
118 // member functions
119 // NOLINTBEGIN
121
122 MCNAPI ::webrtc::Timestamp CurrentTime() const;
123
124 MCNAPI void EnqueuePacket(::std::unique_ptr<::webrtc::RtpPacketToSend> packet);
125
126 MCNAPI ::webrtc::TimeDelta ExpectedQueueTime() const;
127
128 MCNAPI ::std::optional<::webrtc::Timestamp> FirstSentPacketTime() const;
129
130 MCNAPI bool IsProbing() const;
131
133
134 MCNAPI ::webrtc::Timestamp NextSendTime() const;
135
136 MCNAPI ::webrtc::Timestamp OldestPacketEnqueueTime() const;
137
138 MCNAPI void OnPacketSent(
139 ::webrtc::RtpPacketMediaType packet_type,
140 ::webrtc::DataSize packet_size,
141 ::webrtc::Timestamp send_time
142 );
143
145 ::webrtc::Clock* clock,
147 ::webrtc::FieldTrialsView const& field_trials,
149 );
150
151 MCNAPI void Pause();
152
153 MCNAPI void ProcessPackets();
154
155 MCNAPI ::webrtc::DataSize QueueSizeData() const;
156
157 MCNAPI uint64 QueueSizePackets() 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 ArrayView.h:8
Definition Clock.h:13
Definition DataRate.h:10
Definition DataSize.h:10
Definition FieldTrialsView.h:7
Definition PacingController.h:52
MCAPI void UpdateBudgetWithElapsedTime(::webrtc::TimeDelta delta)
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 uint64 QueueSizePackets() const
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 CreateProbeClusters(::webrtc::ArrayView<::webrtc::ProbeClusterConfig const > probe_cluster_configs)
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:33
Definition ProbeClusterConfig.h:7