Validate the container's structure and output configuration.
Throws if configuration is invalid.
74{
77 "ContiguousAccessProcessor validation: Container has no data elements");
78 }
79
82 std::source_location::current(),
83 "Audio output shape must be [frames, channels]");
84 }
85
89
90 if (frames_requested == 0 || channels_requested == 0) {
92 std::source_location::current(),
93 "Frame and channel counts cannot be zero");
94 }
95
98 std::source_location::current(),
99 "Requested {} frames exceeds available {} samples per channel",
100 frames_requested,
102 }
103
104 if (channels_requested > available_channels) {
106 std::source_location::current(),
107 "Requested {} channels exceeds available {} channels",
108 channels_requested,
109 available_channels);
110 }
111
114 "Current position size {} doesn't match available channel count {}, resetting positions",
116 available_channels);
118 }
119
121 "ContiguousAccessProcessor validated: memory layout {}, processing {}×{} blocks, current positions for {} channels",
123 frames_requested,
125}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
std::vector< uint64_t > m_output_shape
uint64_t m_total_elements
ContainerDataStructure m_structure
std::vector< uint64_t > m_current_position
@ ContainerProcessing
Container operations (Kakshya - file/stream/region processing)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.
@ INTERLEAVED
Single DataVariant with interleaved data (LRLRLR for stereo)
static uint64_t get_channel_count(const std::vector< DataDimension > &dimensions)
Extract channel count from dimensions.
OrganizationStrategy organization
static uint64_t get_samples_count_per_channel(const std::vector< DataDimension > &dimensions)
Get samples per channel (time dimension only).