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

◆ create_dimensions()

std::vector< DataDimension > MayaFlux::Kakshya::DataDimension::create_dimensions ( DataModality  modality,
const std::vector< uint64_t > &  shape,
MemoryLayout  layout = MemoryLayout::ROW_MAJOR 
)
static

Create dimension descriptors for a data modality.

Parameters
modalityTarget data modality
shapeDimensional sizes
layoutMemory layout strategy
Returns
Vector of DataDimension objects

Definition at line 105 of file NDData.cpp.

109{
110 std::vector<DataDimension> dims;
111 auto strides = calculate_strides(shape, layout);
112
113 switch (modality) {
115 if (shape.size() != 1) {
116 throw std::invalid_argument("AUDIO_1D requires 1D shape");
117 }
118 dims.push_back(DataDimension::time(shape[0]));
119 break;
120
122 if (shape.size() != 2) {
123 throw std::invalid_argument("AUDIO_MULTICHANNEL requires 2D shape [samples, channels]");
124 }
125 dims.push_back(DataDimension::time(shape[0]));
126 dims.push_back(DataDimension::channel(shape[1], strides[1]));
127 break;
128
130 if (shape.size() != 2) {
131 throw std::invalid_argument("IMAGE_2D requires 2D shape [height, width]");
132 }
133 dims.push_back(DataDimension::spatial(shape[0], 'y', strides[0]));
134 dims.push_back(DataDimension::spatial(shape[1], 'x', strides[1]));
135 break;
136
138 if (shape.size() != 3) {
139 throw std::invalid_argument("IMAGE_COLOR requires 3D shape [height, width, channels]");
140 }
141 dims.push_back(DataDimension::spatial(shape[0], 'y', strides[0]));
142 dims.push_back(DataDimension::spatial(shape[1], 'x', strides[1]));
143 dims.push_back(DataDimension::channel(shape[2], strides[2]));
144 break;
145
147 if (shape.size() != 2) {
148 throw std::invalid_argument("SPECTRAL_2D requires 2D shape [time_windows, frequency_bins]");
149 }
150 dims.push_back(DataDimension::time(shape[0], "time_windows"));
151 dims.push_back(DataDimension::frequency(shape[1]));
152 dims[1].stride = strides[1];
153 break;
154
156 if (shape.size() != 3) {
157 throw std::invalid_argument("VOLUMETRIC_3D requires 3D shape [x, y, z]");
158 }
159 dims.push_back(DataDimension::spatial(shape[0], 'x', strides[0]));
160 dims.push_back(DataDimension::spatial(shape[1], 'y', strides[1]));
161 dims.push_back(DataDimension::spatial(shape[2], 'z', strides[2]));
162 break;
163
165 if (shape.size() != 3) {
166 throw std::invalid_argument("VIDEO_GRAYSCALE requires 3D shape [frames, height, width]");
167 }
168 dims.push_back(DataDimension::time(shape[0], "frames"));
169 dims.push_back(DataDimension::spatial(shape[1], 'y', strides[1]));
170 dims.push_back(DataDimension::spatial(shape[2], 'x', strides[2]));
171 break;
172
174 if (shape.size() != 4) {
175 throw std::invalid_argument("VIDEO_COLOR requires 4D shape [frames, height, width, channels]");
176 }
177 dims.push_back(DataDimension::time(shape[0], "frames"));
178 dims.push_back(DataDimension::spatial(shape[1], 'y', strides[1]));
179 dims.push_back(DataDimension::spatial(shape[2], 'x', strides[2]));
180 dims.push_back(DataDimension::channel(shape[3], strides[3]));
181 break;
182
183 default:
184 throw std::invalid_argument("Unsupported modality for dimension creation");
185 }
186
187 return dims;
188}
@ AUDIO_MULTICHANNEL
Multi-channel audio.
@ SPECTRAL_2D
2D spectral data (time + frequency)
@ VOLUMETRIC_3D
3D volumetric data
@ VIDEO_GRAYSCALE
3D video (time + 2D grayscale)
@ VIDEO_COLOR
4D video (time + 2D + color)
@ IMAGE_COLOR
2D RGB/RGBA image
@ IMAGE_2D
2D image (grayscale or single channel)
static DataDimension spatial(uint64_t size, char axis, uint64_t stride=1, std::string name="spatial")
Convenience constructor for a spatial dimension.
Definition NDData.cpp:29
static DataDimension frequency(uint64_t bins, std::string name="frequency")
Convenience constructor for a frequency dimension.
Definition NDData.cpp:24
static DataDimension time(uint64_t samples, std::string name="time")
Convenience constructor for a temporal (time) dimension.
Definition NDData.cpp:14
static std::vector< uint64_t > calculate_strides(const std::vector< uint64_t > &shape, MemoryLayout layout)
Calculate memory strides based on shape and layout.
Definition NDData.cpp:190
static DataDimension channel(uint64_t count, uint64_t stride=1)
Convenience constructor for a channel dimension.
Definition NDData.cpp:19

References MayaFlux::Kakshya::AUDIO_1D, MayaFlux::Kakshya::AUDIO_MULTICHANNEL, calculate_strides(), channel(), frequency(), MayaFlux::Kakshya::IMAGE_2D, MayaFlux::Kakshya::IMAGE_COLOR, spatial(), MayaFlux::Kakshya::SPECTRAL_2D, time(), MayaFlux::Kakshya::VIDEO_COLOR, MayaFlux::Kakshya::VIDEO_GRAYSCALE, and MayaFlux::Kakshya::VOLUMETRIC_3D.

Referenced by MayaFlux::Yantra::infer_from_region(), MayaFlux::Yantra::infer_from_region_group(), and MayaFlux::Kakshya::SoundStreamContainer::setup_dimensions().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: