Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
recording_coordinator.hpp
Go to the documentation of this file.
1#pragma once
2
8
9#include <cstdint>
10#include <span>
11#include <string>
12#include <vector>
13
14namespace pulp::playback {
15
16enum class RecordingMonitorMode : std::uint8_t { Off, Direct, Software, Auto };
17enum class RecordingMonitorPath : std::uint8_t { Off, Direct, Software };
18
20 std::string id;
21 std::uint32_t input_channel = 0;
22 std::uint32_t output_channel = 0;
23 std::uint32_t channel_count = 0;
24};
25
35
47
52 public:
53 virtual ~RecordingMediaStager() = default;
54 virtual bool stage_media(const timeline::ContentHash& hash,
55 std::span<const std::uint8_t> bytes) noexcept = 0;
56};
57
67
75
79 public:
81 void release() noexcept;
82
83 bool enqueue_command(const CaptureCommand& command) noexcept;
84 bool pop_event(CaptureEvent& event) noexcept;
85 CaptureProcessResult process(const audio::BufferView<const float>& input,
86 audio::BufferView<float>& monitor_output,
87 const midi::MidiBuffer& midi_input,
88 const TransportSnapshot& transport) noexcept;
89
90 RecordingMonitorPath monitoring_path(std::size_t track_index) const noexcept;
91
94 const audio::AudioIoTiming& current_audio_timing,
95 RecordingMediaStager& stager, timeline::DocumentSession& session,
96 timeline::WriterToken& writer);
97
98 private:
99 CaptureEngine capture_;
100 audio::Buffer<float> monitor_scratch_;
102 std::vector<RecordingMonitorPath> monitoring_paths_;
103 std::vector<CaptureEvent> completed_events_;
104 std::vector<std::uint32_t> committed_generations_;
105 std::vector<std::uint32_t> pending_release_generations_;
106 bool prepared_ = false;
107
108 void flush_pending_releases() noexcept;
109};
110
111} // namespace pulp::playback
Fixed-capacity input recorder.
Definition capture_engine.hpp:122
Control-thread coordinator for capture completion, calibrated placement, media durability,...
Definition recording_coordinator.hpp:78
CaptureProcessResult process(const audio::BufferView< const float > &input, audio::BufferView< float > &monitor_output, const midi::MidiBuffer &midi_input, const TransportSnapshot &transport) noexcept
runtime::Result< CommittedRecordingTake, RecordingCoordinatorError > commit_take(const CaptureEvent &completed, RecordingTakeCommitRequest request, const audio::AudioIoTiming &current_audio_timing, RecordingMediaStager &stager, timeline::DocumentSession &session, timeline::WriterToken &writer)
RecordingMonitorPath monitoring_path(std::size_t track_index) const noexcept
bool pop_event(CaptureEvent &event) noexcept
bool prepare(const RecordingCoordinatorConfig &config)
bool enqueue_command(const CaptureCommand &command) noexcept
Package-neutral durability boundary used before a Timeline transaction is published.
Definition recording_coordinator.hpp:51
virtual bool stage_media(const timeline::ContentHash &hash, std::span< const std::uint8_t > bytes) noexcept=0
Durable SHA-256 identity for sealed media bytes.
Definition assets.hpp:24
Immutable sample-anchored recording take referencing a project media asset.
Definition recording.hpp:29
Definition analyzer_provider.hpp:12
Definition custom_node_events.hpp:26
Definition audio_renderer.hpp:20
RecordingMonitorPath
Definition recording_coordinator.hpp:17
@ Off
Definition recording_coordinator.hpp:17
@ Off
Definition program.hpp:61
RecordingCoordinatorError
Definition recording_coordinator.hpp:58
@ DocumentCommitFailed
Definition recording_coordinator.hpp:65
@ StaleLatency
Definition recording_coordinator.hpp:60
@ CaptureCopyFailed
Definition recording_coordinator.hpp:62
@ SealFailed
Definition recording_coordinator.hpp:63
@ MediaStageFailed
Definition recording_coordinator.hpp:64
CaptureProcessResult
Definition capture_engine.hpp:105
RecordingMonitorMode
Definition recording_coordinator.hpp:16
@ Auto
Definition recording_coordinator.hpp:16
@ Software
Definition recording_coordinator.hpp:16
@ Direct
Definition recording_coordinator.hpp:16
@ NotPrepared
Definition automation_recording.hpp:30
@ InvalidTake
Definition recording_commit.hpp:40
Definition generated_event_source.hpp:33
Definition program_compiler.hpp:18
STL namespace.
Result<T, E> — success / failure union for fallible operations.
Immutable control-thread snapshot of one audio route's I/O timing.
Definition audio_io_timing.hpp:41
Control-thread composition of backend I/O timing with the graph's already computed total latency.
Definition audio_io_timing.hpp:85
Definition capture_engine.hpp:74
static constexpr std::uint64_t kDefaultMaximumPreallocatedBytes
Definition capture_engine.hpp:31
Definition capture_engine.hpp:93
Definition recording_coordinator.hpp:68
timeline::CommitResult commit
Definition recording_coordinator.hpp:73
timeline::Take take
Definition recording_coordinator.hpp:72
timeline::MediaAsset asset
Definition recording_coordinator.hpp:71
RecordingSource source
Definition recording_coordinator.hpp:69
RecordingMonitorPath monitoring
Definition recording_coordinator.hpp:70
Definition recording_coordinator.hpp:36
std::uint32_t maximum_block_size
Definition recording_coordinator.hpp:38
std::uint64_t maximum_take_frames
Definition recording_coordinator.hpp:39
timebase::RationalRate sample_rate
Definition recording_coordinator.hpp:37
audio::AudioIoTiming current_audio_timing
Definition recording_coordinator.hpp:44
std::vector< RecordingTrackConfig > tracks
Definition recording_coordinator.hpp:45
std::uint64_t maximum_preallocated_bytes
Definition recording_coordinator.hpp:42
std::uint32_t take_slots_per_track
Definition recording_coordinator.hpp:40
std::uint32_t midi_events_per_take
Definition recording_coordinator.hpp:41
audio::LatencySnapshot latency
Definition recording_coordinator.hpp:43
Definition recording_coordinator.hpp:19
std::uint32_t input_channel
Definition recording_coordinator.hpp:21
std::uint32_t channel_count
Definition recording_coordinator.hpp:23
std::uint32_t output_channel
Definition recording_coordinator.hpp:22
std::string id
Definition recording_coordinator.hpp:20
Definition recording_commit.hpp:15
Definition recording_coordinator.hpp:26
bool armed
Definition recording_coordinator.hpp:30
bool capture_midi
Definition recording_coordinator.hpp:31
RecordingMonitorMode monitoring
Definition recording_coordinator.hpp:32
timeline::ItemId track_id
Definition recording_coordinator.hpp:27
timeline::ItemId take_lane_id
Definition recording_coordinator.hpp:28
bool direct_monitoring_available
Definition recording_coordinator.hpp:33
RecordingSource source
Definition recording_coordinator.hpp:29
Definition transport.hpp:71
Definition rational_time.hpp:14
Immutable state published by a successful session commit.
Definition transaction.hpp:187
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19
Project-owned sealed media metadata.
Definition clip.hpp:140