MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
Domain.cpp
Go to the documentation of this file.
1#include "Domain.hpp"
2
5
6namespace MayaFlux {
7
9{
10 return {
11 .Buffer = static_cast<Buffers::ProcessingToken>((domain >> 16) & 0xFFFF),
12 .Node = static_cast<Nodes::ProcessingToken>((domain >> 32) & 0xFFFF),
13 .Task = static_cast<Vruta::ProcessingToken>(domain & 0xFFFF)
14 };
15}
16
18 Buffers::ProcessingToken buffer_token,
19 Vruta::ProcessingToken task_token)
20{
22 throw std::invalid_argument("AUDIO_RATE nodes incompatible with FRAME_RATE buffers");
23 }
24
26 throw std::invalid_argument("VISUAL_RATE nodes incompatible with SAMPLE_RATE buffers");
27 }
28
29 return compose_domain(node_token, buffer_token, task_token);
30}
31
33{
34 try {
35 auto tokens = decompose_domain(domain);
36
37 Buffers::validate_token(tokens.Buffer);
38
39 return true;
40 } catch (const std::exception&) {
41 return false;
42 }
43}
44
45std::string domain_to_string(Domain domain)
46{
47 switch (domain) {
48 case Domain::AUDIO:
49 return "AUDIO";
51 return "AUDIO_PARALLEL";
53 return "GRAPHICS";
55 return "GRAPHICS_ADAPTIVE";
57 return "CUSTOM_ON_DEMAND";
59 return "CUSTOM_FLEXIBLE";
61 return "AUDIO_VISUAL_SYNC";
63 return "AUDIO_GPU";
64 default:
65 return "UNKNOWN";
66 }
67
68 auto tokens = decompose_domain(domain);
69 return "CUSTOM_DOMAIN(Node:" + std::to_string(static_cast<int>(tokens.Node)) + ",Buffer:" + std::to_string(static_cast<int>(tokens.Buffer)) + ",Task:" + std::to_string(static_cast<int>(tokens.Task)) + ")";
70}
71
72}
static const auto node_token
Definition Chain.cpp:8
Unified processing architecture for multimodal subsystem coordination.
ProcessingToken
Bitfield enum defining processing characteristics and backend requirements for buffer operations.
@ SAMPLE_RATE
Processes data at audio sample rate with buffer-sized chunks.
@ FRAME_RATE
Processes data at video frame rate.
void validate_token(ProcessingToken token)
Validates that a processing token has a valid, non-conflicting configuration.
ProcessingToken
Enumerates the different processing domains for nodes.
@ AUDIO_RATE
Nodes that process at the audio sample rate.
@ VISUAL_RATE
Nodes that process at the visual frame rate.
std::string domain_to_string(Domain domain)
Gets a human-readable string representation of a domain.
Definition Domain.cpp:45
Domain compose_domain(Nodes::ProcessingToken node_token, Buffers::ProcessingToken buffer_token, Vruta::ProcessingToken task_token)
Composes individual ProcessingTokens into a unified Domain.
Definition Domain.hpp:149
bool is_domain_valid(Domain domain)
Checks if a domain is valid (all constituent tokens are compatible)
Definition Domain.cpp:32
Domain
Unified domain enum combining all three ProcessingToken subsystems.
Definition Domain.hpp:22
@ 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
@ 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
@ AUDIO_GPU
GPU-accelerated audio processing domain.
Definition Domain.hpp:105
Domain create_custom_domain(Nodes::ProcessingToken node_token, Buffers::ProcessingToken buffer_token, Vruta::ProcessingToken task_token)
Creates a custom domain from individual tokens with validation.
Definition Domain.cpp:17
Core::SubsystemTokens decompose_domain(Domain domain)
Decomposes a Domain enum into its constituent ProcessingTokens.
Definition Domain.cpp:8
Main namespace for the Maya Flux audio engine.
Definition LiveAid.hpp:6
MayaFlux::Buffers::ProcessingToken Buffer
Processing token for buffer operations.
Processing token configuration for subsystem operation.