MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ Domain

enum MayaFlux::Domain : uint64_t

Unified domain enum combining all three ProcessingToken subsystems.

This enum provides a unified interface for defining processing domains by combining tokens from Nodes, Buffers, and Vruta subsystems. Each domain represents a complete processing configuration that spans all three subsystems.

The enum uses bitfield composition to create unified domain identifiers that can be decomposed back into their constituent subsystem tokens when needed.

Enumerator
AUDIO 

Standard real-time audio processing domain.

Combines:

AUDIO_PARALLEL 

High-performance parallel audio processing domain.

Combines:

GRAPHICS 

Standard real-time graphics processing domain.

Combines:

GRAPHICS_ADAPTIVE 

Multi-rate graphics processing for adaptive frame rates.

Combines:

CUSTOM_ON_DEMAND 

Custom processing domain with on-demand scheduling.

Combines:

CUSTOM_FLEXIBLE 

Custom processing domain with flexible scheduling.

Combines:

AUDIO_VISUAL_SYNC 

Audio-visual synchronization domain.

Processes audio at sample rate but syncs with frame-accurate scheduling Useful for multimedia applications requiring tight A/V sync

AUDIO_GPU 

GPU-accelerated audio processing domain.

Routes audio through GPU for compute-intensive processing while maintaining sample-accurate timing

WINDOWING 

Pure windowing domain (no rendering)

Handles window lifecycle, input events, and frame timing coordination. Does not perform any GPU rendering - that's handled by GRAPHICS domain.

Use case: Headless window manager, input-only applications, or when separating windowing from rendering into different subsystems.

INPUT_EVENTS 

Input event processing domain.

Handles input events (keyboard, mouse, MIDI) asynchronously without frame synchronization. Events are processed as they arrive, not locked to vsync or audio callbacks.

Use case: Input gesture recognition, MIDI controllers, or when input latency must be minimized independently of rendering frame rate.

Definition at line 22 of file Domain.hpp.

22 : uint64_t {
23 // ===== CORE AUDIO DOMAINS =====
24
25 /**
26 * @brief Standard real-time audio processing domain
27 *
28 * Combines:
29 * - Nodes::ProcessingToken::AUDIO_RATE
30 * - Buffers::ProcessingToken::AUDIO_BACKEND
31 * - Vruta::ProcessingToken::SAMPLE_ACCURATE
32 */
33 AUDIO = (static_cast<uint64_t>(Nodes::ProcessingToken::AUDIO_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::AUDIO_BACKEND) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::SAMPLE_ACCURATE)),
34
35 /**
36 * @brief High-performance parallel audio processing domain
37 *
38 * Combines:
39 * - Nodes::ProcessingToken::AUDIO_RATE
40 * - Buffers::ProcessingToken::AUDIO_PARALLEL
41 * - Vruta::ProcessingToken::SAMPLE_ACCURATE
42 */
43 AUDIO_PARALLEL = (static_cast<uint64_t>(Nodes::ProcessingToken::AUDIO_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::AUDIO_PARALLEL) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::SAMPLE_ACCURATE)),
44
45 // ===== VISUAL/GRAPHICS DOMAINS =====
46
47 /**
48 * @brief Standard real-time graphics processing domain
49 *
50 * Combines:
51 * - Nodes::ProcessingToken::VISUAL_RATE
52 * - Buffers::ProcessingToken::GRAPHICS_BACKEND
53 * - Vruta::ProcessingToken::FRAME_ACCURATE
54 */
55 GRAPHICS = (static_cast<uint64_t>(Nodes::ProcessingToken::VISUAL_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::GRAPHICS_BACKEND) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::FRAME_ACCURATE)),
56
57 /**
58 * @brief Multi-rate graphics processing for adaptive frame rates
59 *
60 * Combines:
61 * - Nodes::ProcessingToken::VISUAL_RATE
62 * - Buffers::ProcessingToken::GRAPHICS_BACKEND
63 * - Vruta::ProcessingToken::MULTI_RATE
64 */
65 GRAPHICS_ADAPTIVE = (static_cast<uint64_t>(Nodes::ProcessingToken::VISUAL_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::GRAPHICS_BACKEND) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::MULTI_RATE)),
66
67 // ===== CUSTOM DOMAINS =====
68
69 /**
70 * @brief Custom processing domain with on-demand scheduling
71 *
72 * Combines:
73 * - Nodes::ProcessingToken::CUSTOM_RATE
74 * - Buffers::ProcessingToken::SAMPLE_RATE | CPU_PROCESS | SEQUENTIAL
75 * - Vruta::ProcessingToken::ON_DEMAND
76 */
77 CUSTOM_ON_DEMAND = (static_cast<uint64_t>(Nodes::ProcessingToken::CUSTOM_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::SAMPLE_RATE | Buffers::ProcessingToken::CPU_PROCESS | Buffers::ProcessingToken::SEQUENTIAL) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::ON_DEMAND)),
78
79 /**
80 * @brief Custom processing domain with flexible scheduling
81 *
82 * Combines:
83 * - Nodes::ProcessingToken::CUSTOM_RATE
84 * - Buffers::ProcessingToken::FRAME_RATE | GPU_PROCESS | PARALLEL
85 * - Vruta::ProcessingToken::CUSTOM
86 */
87 CUSTOM_FLEXIBLE = (static_cast<uint64_t>(Nodes::ProcessingToken::CUSTOM_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::FRAME_RATE | Buffers::ProcessingToken::GPU_PPOCESS | Buffers::ProcessingToken::PARALLEL) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::CUSTOM)),
88
89 // ===== HYBRID DOMAINS =====
90
91 /**
92 * @brief Audio-visual synchronization domain
93 *
94 * Processes audio at sample rate but syncs with frame-accurate scheduling
95 * Useful for multimedia applications requiring tight A/V sync
96 */
97 AUDIO_VISUAL_SYNC = (static_cast<uint64_t>(Nodes::ProcessingToken::AUDIO_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::SAMPLE_RATE | Buffers::ProcessingToken::CPU_PROCESS | Buffers::ProcessingToken::SEQUENTIAL) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::FRAME_ACCURATE)),
98
99 /**
100 * @brief GPU-accelerated audio processing domain
101 *
102 * Routes audio through GPU for compute-intensive processing
103 * while maintaining sample-accurate timing
104 */
105 AUDIO_GPU = (static_cast<uint64_t>(Nodes::ProcessingToken::AUDIO_RATE) << 32) | (static_cast<uint64_t>(Buffers::ProcessingToken::SAMPLE_RATE | Buffers::ProcessingToken::GPU_PPOCESS | Buffers::ProcessingToken::PARALLEL) << 16) | (static_cast<uint64_t>(Vruta::ProcessingToken::MULTI_RATE)),
106
107 /**
108 * @brief Pure windowing domain (no rendering)
109 *
110 * Handles window lifecycle, input events, and frame timing coordination.
111 * Does not perform any GPU rendering - that's handled by GRAPHICS domain.
112 *
113 * Use case: Headless window manager, input-only applications, or when
114 * separating windowing from rendering into different subsystems.
115 */
116 WINDOWING = (static_cast<uint64_t>(Nodes::ProcessingToken::VISUAL_RATE) << 32)
117 | (static_cast<uint64_t>(Buffers::ProcessingToken::WINDOW_EVENTS) << 16)
118 | (static_cast<uint64_t>(Vruta::ProcessingToken::FRAME_ACCURATE)),
119
120 /**
121 * @brief Input event processing domain
122 *
123 * Handles input events (keyboard, mouse, MIDI) asynchronously without
124 * frame synchronization. Events are processed as they arrive, not locked
125 * to vsync or audio callbacks.
126 *
127 * Use case: Input gesture recognition, MIDI controllers, or when input
128 * latency must be minimized independently of rendering frame rate.
129 */
130 INPUT_EVENTS = (static_cast<uint64_t>(Nodes::ProcessingToken::CUSTOM_RATE) << 32)
131 | (static_cast<uint64_t>(Buffers::ProcessingToken::WINDOW_EVENTS) << 16)
132 | (static_cast<uint64_t>(Vruta::ProcessingToken::EVENT_DRIVEN)),
133};
@ AUDIO_PARALLEL
High-performance parallel audio processing domain.
Definition Domain.hpp:43
@ CUSTOM_FLEXIBLE
Custom processing domain with flexible scheduling.
Definition Domain.hpp:87
@ AUDIO
Standard real-time audio processing domain.
Definition Domain.hpp:33
@ AUDIO_VISUAL_SYNC
Audio-visual synchronization domain.
Definition Domain.hpp:97
@ INPUT_EVENTS
Input event processing domain.
Definition Domain.hpp:130
@ CUSTOM_ON_DEMAND
Custom processing domain with on-demand scheduling.
Definition Domain.hpp:77
@ GRAPHICS
Standard real-time graphics processing domain.
Definition Domain.hpp:55
@ GRAPHICS_ADAPTIVE
Multi-rate graphics processing for adaptive frame rates.
Definition Domain.hpp:65
@ WINDOWING
Pure windowing domain (no rendering)
Definition Domain.hpp:116
@ AUDIO_GPU
GPU-accelerated audio processing domain.
Definition Domain.hpp:105