Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
sample_stream_consumption.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cmath>
4#include <cstdint>
5
6namespace pulp::audio {
7
13
19
29
31 const SampleStreamConsumptionFactors& factors,
32 double maximum_ratio) noexcept {
34 const auto positive_finite = [](double value) noexcept {
35 return value > 0.0 && std::isfinite(value);
36 };
37 if (!positive_finite(factors.pitch_ratio) ||
38 !positive_finite(maximum_ratio)) {
39 return result;
40 }
41 if (!positive_finite(factors.clock_ratio) ||
42 !positive_finite(factors.live_source_consumption_ratio)) {
44 return result;
45 }
46
47 const auto clocked = factors.pitch_ratio * factors.clock_ratio;
48 const auto effective = clocked * factors.live_source_consumption_ratio;
49 if (!positive_finite(clocked) || !positive_finite(effective) ||
50 effective > maximum_ratio) {
51 result.status = factors.clock_ratio == 1.0 &&
52 factors.live_source_consumption_ratio == 1.0
55 return result;
56 }
58 result.effective_ratio = effective;
59 return result;
60}
61
65
66} // namespace pulp::audio
Definition analyzer_provider.hpp:12
SampleStreamConsumptionStatus
Definition sample_stream_consumption.hpp:8
@ HeritageRejected
Definition sample_stream_consumption.hpp:11
@ Allowed
Definition sample_stream_consumption.hpp:9
@ LegacyRejected
Definition sample_stream_consumption.hpp:10
SampleStreamConsumptionEvaluation evaluate_sample_stream_consumption(const SampleStreamConsumptionFactors &factors, double maximum_ratio) noexcept
Definition sample_stream_consumption.hpp:30
Definition sample_stream_consumption.hpp:62
double source_frames_per_second
Definition sample_stream_consumption.hpp:63
Definition sample_stream_consumption.hpp:20
double effective_ratio
Definition sample_stream_consumption.hpp:23
SampleStreamConsumptionStatus status
Definition sample_stream_consumption.hpp:21
bool allowed() const noexcept
Definition sample_stream_consumption.hpp:25
Definition sample_stream_consumption.hpp:14
double clock_ratio
Definition sample_stream_consumption.hpp:16
double pitch_ratio
Definition sample_stream_consumption.hpp:15
double live_source_consumption_ratio
Definition sample_stream_consumption.hpp:17