21 std::uint64_t& distance)
noexcept;
54 std::shared_ptr<const audio::AudioFileData>
audio;
65 std::uint64_t generation)
const noexcept {
112 std::shared_ptr<const OfflineStretchArtifact>
114 bool insert(std::shared_ptr<const OfflineStretchArtifact> artifact,
119 return retained_bytes_;
121 std::size_t
size() const noexcept {
122 return artifacts_.size();
126 std::vector<std::shared_ptr<const OfflineStretchArtifact>> artifacts_;
127 std::uint64_t retained_bytes_ = 0;
143 const
timebase::CompiledTempoMap& tempo_map,
147 std::uint32_t work_block_frames = 256,
148 OfflineStretchArtifactCache* cache =
nullptr);
159 std::unique_ptr<Impl> impl_;
Control-thread-only bounded semantic artifact cache.
Definition offline_stretch_artifact.hpp:110
bool insert(std::shared_ptr< const OfflineStretchArtifact > artifact, OfflineStretchLimits limits) noexcept
void constrain(OfflineStretchLimits limits) noexcept
std::uint64_t retained_bytes() const noexcept
Definition offline_stretch_artifact.hpp:118
std::size_t size() const noexcept
Definition offline_stretch_artifact.hpp:121
std::shared_ptr< const OfflineStretchArtifact > find(const OfflineStretchArtifactKey &key) const noexcept
OfflineStretchCompileStatus step() noexcept
std::shared_ptr< const OfflineStretchArtifact > take() noexcept
bool cache_hit() const noexcept
OfflineStretchCompileJob(OfflineStretchCompileJob &&) noexcept
OfflineStretchCompileStatus status() const noexcept
OfflineStretchCompileStatus begin(const timeline::Clip &clip, const timeline::Project &project, const timebase::CompiledTempoMap &tempo_map, const DecodedAudioAsset &decoded, OfflineStretchLimits limits={}, OfflineStretchAlgorithmConfig algorithm={}, std::uint32_t work_block_frames=256, OfflineStretchArtifactCache *cache=nullptr)
OfflineStretchCompileJob()
const OfflineStretchArtifactKey * key() const noexcept
~OfflineStretchCompileJob()
OfflineStretchError error() const noexcept
Durable SHA-256 identity for sealed media bytes.
Definition assets.hpp:24
FiniteTimeStretchFailure
Definition finite_time_stretch.hpp:25
Definition automation_program.hpp:17
bool offline_stretch_frame_distance(std::int64_t start, std::int64_t end, std::uint64_t &distance) noexcept
OfflineStretchErrorCode offline_stretch_error_code(audio::FiniteTimeStretchFailure failure) noexcept
Definition audio_renderer.hpp:20
@ Complete
Definition compile_executor.hpp:15
constexpr std::uint32_t kOfflineStretchAlgorithmVersion
Definition offline_stretch_artifact.hpp:26
@ None
Definition automation_recording.hpp:29
OfflineStretchCompileStatus
Definition offline_stretch_artifact.hpp:130
@ Progress
Definition offline_stretch_artifact.hpp:130
@ Failed
Definition offline_stretch_artifact.hpp:130
@ UnsupportedSampleRate
Definition audio_renderer.hpp:35
@ AssetMetadataMismatch
Definition audio_renderer.hpp:34
@ CapacityExceeded
Definition audio_renderer.hpp:38
OfflineStretchErrorCode
Definition offline_stretch_artifact.hpp:71
@ InvalidTempoSchedule
Definition offline_stretch_artifact.hpp:78
@ InvalidClip
Definition offline_stretch_artifact.hpp:73
@ ProcessorPrepareFailed
Definition offline_stretch_artifact.hpp:81
@ OutputTooLong
Definition offline_stretch_artifact.hpp:84
@ None
Definition offline_stretch_artifact.hpp:72
@ InvalidAlgorithmConfig
Definition offline_stretch_artifact.hpp:77
@ ProcessorProtocolError
Definition offline_stretch_artifact.hpp:85
@ SampleRateConverterPrepareFailed
Definition offline_stretch_artifact.hpp:80
@ MissingSource
Definition offline_stretch_artifact.hpp:74
@ InvalidRatio
Definition offline_stretch_artifact.hpp:82
@ OutputTooShort
Definition offline_stretch_artifact.hpp:83
Definition beat_division.hpp:11
Definition program_compiler.hpp:18
Definition audio_renderer.hpp:52
Definition offline_stretch_artifact.hpp:28
float max_time_ratio
Definition offline_stretch_artifact.hpp:30
constexpr auto operator<=>(const OfflineStretchAlgorithmConfig &) const =default
std::uint32_t version
Definition offline_stretch_artifact.hpp:29
Definition offline_stretch_artifact.hpp:34
timeline::ContentHash source_content_hash
Definition offline_stretch_artifact.hpp:35
std::uint32_t channel_count
Definition offline_stretch_artifact.hpp:45
std::vector< timebase::TempoPoint > tempo_points
Definition offline_stretch_artifact.hpp:47
timebase::RationalRate source_sample_rate
Definition offline_stretch_artifact.hpp:39
timebase::TickPosition musical_tick_end
Definition offline_stretch_artifact.hpp:42
OfflineStretchAlgorithmConfig algorithm
Definition offline_stretch_artifact.hpp:46
std::uint64_t timeline_input_frame_count
Definition offline_stretch_artifact.hpp:43
timebase::RationalRate timeline_sample_rate
Definition offline_stretch_artifact.hpp:40
std::uint64_t target_frame_count
Definition offline_stretch_artifact.hpp:44
timeline::ContentHash decoded_content_hash
Definition offline_stretch_artifact.hpp:36
std::uint64_t source_start
Definition offline_stretch_artifact.hpp:37
std::uint64_t source_frame_count
Definition offline_stretch_artifact.hpp:38
timebase::TickPosition musical_tick_start
Definition offline_stretch_artifact.hpp:41
bool operator==(const OfflineStretchArtifactKey &) const =default
Definition offline_stretch_artifact.hpp:52
OfflineStretchArtifactKey key
Definition offline_stretch_artifact.hpp:53
std::shared_ptr< const audio::AudioFileData > audio
Definition offline_stretch_artifact.hpp:54
Definition offline_stretch_artifact.hpp:88
timeline::ItemId item
Definition offline_stretch_artifact.hpp:90
std::uint64_t actual
Definition offline_stretch_artifact.hpp:92
std::uint64_t limit
Definition offline_stretch_artifact.hpp:93
OfflineStretchErrorCode code
Definition offline_stretch_artifact.hpp:89
timeline::ItemId related_item
Definition offline_stretch_artifact.hpp:91
Definition offline_stretch_artifact.hpp:96
std::uint64_t max_output_frames
Definition offline_stretch_artifact.hpp:98
std::uint64_t max_output_bytes
Definition offline_stretch_artifact.hpp:102
std::uint64_t max_sample_rate_converter_bytes
Definition offline_stretch_artifact.hpp:100
std::uint64_t max_cache_bytes
Definition offline_stretch_artifact.hpp:104
std::uint32_t max_cached_artifacts
Definition offline_stretch_artifact.hpp:105
std::uint64_t max_input_frames
Definition offline_stretch_artifact.hpp:97
constexpr auto operator<=>(const OfflineStretchLimits &) const =default
std::uint64_t max_input_bytes
Definition offline_stretch_artifact.hpp:99
std::uint64_t max_artifact_bytes
Definition offline_stretch_artifact.hpp:103
std::uint64_t max_scratch_allocation_bytes
Definition offline_stretch_artifact.hpp:101
Definition offline_stretch_artifact.hpp:57
std::uint64_t document_revision
Definition offline_stretch_artifact.hpp:60
bool matches(timeline::ItemId clip, timeline::ItemId project, std::uint64_t revision, std::uint64_t generation) const noexcept
Definition offline_stretch_artifact.hpp:64
bool cache_hit
Definition offline_stretch_artifact.hpp:62
timeline::ItemId project_id
Definition offline_stretch_artifact.hpp:59
timeline::ItemId clip_id
Definition offline_stretch_artifact.hpp:58
std::uint64_t program_generation
Definition offline_stretch_artifact.hpp:61
Definition rational_time.hpp:14
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19