119 int64_t updateCount = 0;
121 int64_t checkpointResyncs = 0;
124 int64_t forwardSnaps = 0;
128 int64_t backDates = 0;
135 int64_t clampedRegressions = 0;
138 int64_t maxStepNs = 0;
142 int64_t maxBackDateNs = 0;
145 int64_t maxCallbackGapNs = 0;
170 int64_t resolutionNs()
const override;
171 ClockJitter jitter()
const override;
172 double rateRatio()
const override;
195 Result<int64_t> raw()
const override;
196 Error sleepUntilNs(int64_t targetNs)
const override;
197 Error onPause(
bool paused)
override;
203 int64_t computeRawNs()
const;
205 void updateRateEstimate()
const;
206 void reportMonitor()
const;
213 mutable Atomic<bool> _devicePaused{
false};
214 mutable Atomic<int64_t> _rawAtPause{0};
216 ObjectBasePtr<SDLAudioOutput> _output;
218 int64_t _resolutionNs;
224 mutable bool _rateBaselineValid =
false;
225 mutable bool _rateEstimateStable =
false;
226 mutable int64_t _rateBaselineWallNs = 0;
227 mutable int64_t _rateBaselineConsumed = 0;
228 mutable int64_t _lastRateUpdateWallNs = 0;
229 mutable double _filteredRateRatio = 1.0;
236 mutable double _publishedRateRatio = 1.0;
247 mutable int64_t _checkpointConsumed = -1;
248 mutable int64_t _checkpointConsumedNs = 0;
249 mutable int64_t _checkpointWallNs = 0;
260 mutable double _checkpointRate = 1.0;
266 mutable int64_t _lastReportedNs = INT64_MIN;
278 mutable bool _audioStarted =
false;
292 mutable Stats _stats;
293 mutable int64_t _lastCallbackWallNs = 0;
294 mutable PeriodicCallback _monitor;
295 mutable Stats _monitorSnapshot;
296 mutable bool _prevRateStable =
false;